Takanalyse
Modulplassering, antall moduler og kWp for et tak fra bygningsomriss (FKB), høydemodell 1 m og flyfoto med SunPoint bildeanalyse. Skråtak og flate tak, øst/vest eller sør, avstander etter NEK 400-7-712, tegning som PNG og GeoJSON. Krever avtale.
- POST /api/roof/jobs
- GET /api/roof/jobs/{id}
- GET /api/roof/jobs/{id}/tegning.png
- POST /api/roof/layout
Hva du får
Gi et punkt på et bygg, så finner tjenesten bygningen i FKB, leser takflater, helning og hindringer fra høydemodellen (DOM 1 m) og flyfoto (SunPoint bildeanalyse), og plasserer moduler etter regler for kantavstand, gangbaner, hindringer, skygge og snøsoner. Svaret er antall moduler, kWp, takflater med retning og helning, tegning og GeoJSON, klart til PV-kalkulatoren (resultat.pv_kalkulator.arrays_param).
Dette er samme motor som Solsjekk og «Avansert» i PV-kalkulatoren bruker. Innsending krever et passord fra avtale (passord i kroppen) eller en partnerkode; kontakt oss for tilgang. Grense 1 per sekund og 20 per time per IP-adresse. Statuspolling er ikke begrenset.
POST /api/roof/jobs
curl -X POST https://api.solkart.no/api/roof/jobs \
-H "Content-Type: application/json" \
-d '{"lat": 59.2185, "lon": 10.9298, "montering": "auto", "passord": "…"}'
Svar 202: {jobb_id, status: "queued", posisjon, foran, estimert_sekunder, ventende_i_koen}. Poll GET /api/roof/jobs/{jobb_id} til status er done (typisk 15 til 60 s, med bildeanalyse inntil 90 s). Resultatet lever i 15 minutter. Se asynkrone jobber.
| Felt | Type | Standard | Beskrivelse |
|---|---|---|---|
lat, lon |
tall | påkrevd | Et punkt på bygget, 57 til 72 / 4 til 32 |
passord |
streng | Fra avtale. Alternativt partner med partnerkode. |
|
montering |
ost_vest | sor | auto |
ost_vest |
Flate tak: øst/vest-stativ eller sørvendt. auto velger etter takform. Skråtak legges alltid i takets plan. |
retning |
auto | bygg | himmel |
auto |
Radretning: langs byggets akse eller etter himmelretning |
ai |
boolean | true |
false hopper over bildeanalysen (raskere, ingen hindringer fra flyfoto) |
tegning |
boolean | true |
Lag tegning (PNG) |
geojson |
boolean | true |
Ta med moduler og soner som GeoJSON |
skraa_bare_sor |
boolean | false |
På skråtak: bare flater mot sør (±90°) |
kvalitetssjekk |
boolean | true |
Kryssjekk av takform og helning mellom høydemodell og flyfoto |
tving_ny |
boolean | false |
Hopp over cache |
modul_wp |
300 til 1000 | 650 | Moduleffekt, Wp |
modul_lengde_mm, modul_bredde_mm |
1000 til 3000, 700 til 1500 | 2382, 1134 | Modulmål |
radavstand_sor_m |
1,2 til 4 | Radavstand for sørvendt stativ | |
enhetsavstand_ost_vest_m |
2,2 til 5 | Enhetsavstand for øst/vest | |
helning_grader |
5 til 20 | Stativhelning på flatt tak | |
rad_retning_grader |
0 til 179,99 | Lås radretningen | |
regler |
objekt | Finjustering, se under |
regler
| Felt | Område | Beskrivelse |
|---|---|---|
edge_setback_m |
0 til 5 | Kantavstand flatt tak (1 m på alle kanter; NEK 400-7-712C krever 1 m fra én) |
pitched_edge_setback_m |
0 til 5 | Skråtak: praktisk margin mot raft og gavl, målt på takflaten (0,3 m; ikke et NEK-krav) |
ridge_setback_m |
0 til 5 | Skråtak: avstand fra møne/grat der flaten på andre siden også får moduler (0,6 m, NEK 400-7-712C) |
pitched_access_edge_m, pitched_access_edge |
0 til 5, boolean | Skråtak: fri sone langs raften på én flate for brannvesenets tilkomst når alle takflatene brukes (1 m, NEK 400-7-712C); legges på flaten med minst sol |
lane_width_m, lane_interval_m |
0 til 3, 10 til 200 | Gangbaner: bredde og avstand |
lanes_along_rows, lanes_across_rows |
boolean | Gangbaner langs og på tvers av radene |
shade_loss_max |
0 til 1 | Maks akseptert skyggetap for en modulposisjon |
protrusion_min_m, protrusion_clearance_m |
0,2 til 3, 0 til 3 | Minste hindring som tas hensyn til, og klaring rundt |
obstacle_north_factor, obstacle_ew_factor, obstacle_south_m |
0 til 5 | Skyggesoner rundt hindringer (ganger høyden mot nord og øst/vest, fast mot sør) |
obstacle_clearance_m, obstacle_height_m |
per type | Klaring (0 til 5 m) og standardhøyde (0 til 10 m) per objekttype: ventilasjon, kjoleaggregat, takluke, overlys, roykluke, pipe, heissjakt, takoppbygg, antenne, sluk, kile, brannvegg, solceller, terrasse, gront_tak, annet |
min_run_modules |
1 til 10 | Korteste sammenhengende rad |
common_row_direction, align_columns |
boolean | Felles radretning på alle flater; juster kolonner |
pitched_orientation |
portrait | landscape | auto |
Moduler stående eller liggende på skråtak |
pitched_north_max_tilt_deg |
0 til 90 | Maks helning der nordvendte skråtak fortsatt brukes |
Svar når status er done
{
"jobb_id": "3f9a1c2b7d0e", "status": "done",
"tegning_url": "/roof/jobs/3f9a1c2b7d0e/tegning.png",
"resultat": {
"punkt": { "lat": 59.2185, "lon": 10.9298, "x_utm33": 272163, "y_utm33": 6575571 },
"bygning": { "kilde_omriss": "FKB", "areal_m2": 1840, "hoyde_m": 8.2, "takform": "flatt", "takform_profiler": "flatt",
"takform_korrigert": false, "helning_flyfoto_grader": null, "takmateriale": "papp", "eksisterende_solceller": false,
"hovedakse_grader": 35, "omriss": ["…"] },
"resultat": { "moduler": 266, "kwp": 172.9, "modul": { "wp": 650, "lengde_mm": 2382, "bredde_mm": 1134 },
"montering": "ost_vest", "montering_tekst": "Øst/vest-stativ 10°",
"brutto_takareal_m2": 1840, "brukbart_areal_m2": 1210, "modulareal_m2": 743, "dekningsgrad_pst": 40.4,
"kwp_per_m2_tak": 0.094, "takflater": 1,
"pv_kalkulator": { "flater": ["…"], "arrays_param": "86.45:10:-55,86.45:10:125", "mounting": "free" } },
"takflater": [ { "id": 1, "type": "flatt", "areal_m2": 1840, "moduler": 266, "kwp": 172.9, "retning_grader": 35 } ],
"utelukkelser": [ { "type": "ventilasjon", "kilde": "SunPoint bildeanalyse", "areal_m2": 6.1 } ],
"kvalitetssjekk": { "status": "ok", "merknader": [] },
"grunnlag": { "hoydemodell": "DOM 1 m 2023", "ortofoto": "ortofoto 2024", "omriss": "FKB-Bygning", "ai": true, "advarsler": [], "tid_s": 14.8 },
"moduler": { "type": "FeatureCollection", "features": ["…"] },
"meta": { "generator": "solkart takanalyse", "versjon": 1 }
}
}
| Felt | Beskrivelse |
|---|---|
resultat.resultat.moduler, kwp |
Antall moduler og installert effekt |
resultat.resultat.pv_kalkulator.arrays_param |
Klar til arrays= i /api/pv/calc: kwp:helning:asimut per flate, asimut 0 = sør |
resultat.bygning.takform, takform_profiler, takform_korrigert |
Takform fra flyfoto, fra høydeprofiler, og om de ble avstemt |
resultat.takflater[] |
Flater med retning, helning, areal, moduler og kWp. fallretning_grader er fallet modulene fikk; fallretning_hoydemodell_grader det høydemodellen målte. rad_justering er takflate (rader langs raften slik høydemodellen ser den) eller raft (lagt langs takflatens egen kant fordi det ga et regelmessig nett; forklart i rad_merknad). nett teller rader og kolonner (moduler_per_rad, moduler_per_kolonne, regelmessig, rektangularitet, hindringer, advarsel). |
resultat.utelukkelser[] |
Hindringer og soner som ble holdt fri, med kilde. På skråtak: kant_skraa (praktisk margin), mone (NEK 0,6 m når begge sider brukes) og tilkomst (NEK 1 m fri raft når alle flatene brukes); alle målt på takflaten og regnet om til planet med cos(helning) |
resultat.kvalitetssjekk |
Kryssjekk mellom kildene og merknader du bør lese. nett_advarsler lister skråflater der modulnettet er uregelmessig uten hindringer (fallretning eller helning trolig feiltolket); nettsjekk er det bildeanalysen fikk å vurdere, og flater_rettet fallretning/helning den rettet med sikkerhet ≥ 0,7 før anlegget ble pakket på nytt. |
resultat.grunnlag.advarsler[] |
Manglende data, gammel høydemodell, usikker takform |
moduler, utelukkelser_geojson, frie_soner_geojson |
GeoJSON i WGS84 for kart |
GET /api/roof/jobs/{id}/tegning.png gir tegningen med flyfoto, moduler og soner (image/png, hodene X-Moduler og X-Kwp, Cache-Control: private, max-age=900).
POST /api/roof/layout
Synkron variant med samme kropp og svar (resultat direkte, pluss tegning.png_base64 når tegning er på), inntil 90 s. Gir 503 BACKEND_BUSY når køen er i bruk, og 504 TIMEOUT (Analysen brukte for lang tid (over 90 s). …, med Retry-After) hvis analysen ikke rekker fram; bruk jobbendepunktet for store bygg.
Feil
| Status | code |
Betyr |
|---|---|---|
400 |
INVALID_INPUT |
Feil i kroppen, med feltnavn i meldingen (regler.edge_setback_m må ligge mellom 0 og 5.) |
401 |
PASSWORD_REQUIRED |
Automatisk prosjektering krever passord. |
404 |
NOT_FOUND |
Ukjent eller utløpt jobb |
409 |
NOT_READY |
Tegning bedt om før jobben er ferdig |
410 |
EXPIRED |
Tegnegrunnlaget er borte; kjør på nytt |
422 |
NO_BUILDING |
Fant ingen bygning ved punktet (FKB/OSM). Klikk på taket i kartet. Flytt punktet inn på taket. Også når bygget er større enn 400 m i utstrekning. |
429 |
RATE_LIMITED |
Over 1/s eller 20/time |
503 |
BACKEND_BUSY |
Køen er full (20); Retry-After |
504 |
TIMEOUT |
Analysen tok for lang tid: over 90 s synkront, over 120 s i kø (da som feil.status i jobbstatus) |
Grenser for metoden
Analysen er et estimat før befaring. Den ser ikke takets bæreevne, tekniske installasjoner under taktekkingen, brannkrav som ikke er synlige fra lufta, eller elektrisk kapasitet. Bruk kvalitetssjekk og grunnlag.advarsler aktivt, og la prosjekterende kontrollere før tilbud.