# Konvensjoner: tid, enheter og koordinater

> Tidsstempler (bin-start, UTC), enheter, asimut- og helningskonvensjoner per endepunkt, koordinatsystemer, dataformater og HTTP-detaljer som gjelder på tvers av API-et.

Kilde: https://solkart.no/api/dokumentasjon/konvensjoner · Sist oppdatert 2026-09-15 · Base-URL https://api.solkart.no · OpenAPI: https://solkart.no/openapi.json

## Tid

**Tidsstempler markerer starten på timen, i UTC.** Etiketten `2026-09-15T10:00:00Z` betyr middelverdien over 10:00 til 11:00 UTC. Dette gjelder `/api/forecast*` (siden 7. september 2026) og `/api/tmy` i JSON og CSV.

- Skal du plotte kurven, legg punktet midt i timen (tidsstempel pluss 30 minutter). Døgn- og månedssummer påvirkes ikke.
- `cycle_time` i prognosen er når prognosen ble kjørt, ikke hvilken time den gjelder. `issued_utc` i snøutsikten er tilsvarende.
- Feltet `hour` i prognosen er en indeks fra 0 i serien, ikke klokkeslett.
- **Unntak:** EPW- og TMY3-filer følger sine egne standarder: timeslutt i lokal normaltid (UTC+1, uten sommertid). Rad 1 dekker 00:00 til 01:00 lokal tid. `tz=local` i TMY-JSON og CSV roterer serien til UTC+1 med `+01:00` i tidsstemplet.
- I utvidet prognose (`/api/forecast/extended`) er modelltimene bin-start, mens timene som kommer fra MET Locationforecast (`source: "locationforecast"`) er MET sine øyeblikkstidspunkt. Behandle dem som time-verdier for timen som starter da.
- TMY-serien har år 2001 i tidsstemplene. Året er en plassholder for et typisk år, ikke et kalenderår.

## Koordinater

- Inn: `lat` og `lon` i desimalgrader, WGS84 (EPSG:4326). Punktum som desimaltegn. Rekkefølgen er alltid breddegrad først.
- Dekning: fastlands-Norge. Prognose og horisont aksepterer 57 til 72° N og 4 til 32° Ø. TMY, PV, snøtap og snøutsikt aksepterer 57 til 71,5° N og 4 til 31,5° Ø og krever at det finnes en datacelle innen 6 km. Svalbard dekkes ikke.
- Snølast tar også `x`,`y` i UTM 33 (EPSG:25833), som er rutenettet seNorge bruker.
- Svar oppgir cellen som ble brukt (`cell_id`, `center_cell`, `tile_key`) og avstanden fra ditt punkt (`cell_distance_km`). Oppløsningen er 0,03° (om lag 3 km × 1,7 km) for prognosen, 1 km for snø og høydemodell, 3 km for TMY og PV.

## Vinkler

Konvensjonene skiller seg mellom endepunktene fordi de følger hvert sitt fagmiljø. Sjekk tabellen før du regner om.

| Endepunkt | Helning | Asimut |
|---|---|---|
| `/api/forecast*` (`arrays[].tilt_deg`, `azimuth_deg`) | 0° = flatt, 90° = vegg | Kompass: 0° = nord, 90° = øst, 180° = sør, 270° = vest |
| `/api/pv/calc` (`angle`, `aspect`, `arrays`) | 0° = flatt, 90° = vegg | PVGIS-konvensjon: 0° = sør, −90° = øst, +90° = vest, ±180° = nord |
| `/api/snowsoiling/calc`, `/api/snow/outlook` (`angle`, `aspect`) | som PV | som PV (0° = sør) |
| `/api/horizon/*` (`azimuth_deg`) | Horisonthøyde i grader over horisontalplanet | Kompass: 0° = nord, med klokka, 0,5° oppløsning |
| `/api/horizon/precise` (`panel_az_deg`, `panel_tilt_deg`) | 0 til 90° | Kompass: 0° = nord |
| `/api/terrain/category` (`akse_grader`, `senter_grader`) | | Kompass 0 til 179,99° for byggeakse (retning uten fortegn), 0 til 359° for sektorer |
| `/api/roof/*` (`rad_retning_grader`) | `helning_grader` 5 til 20° | 0 til 179,99°, byggets akse |

## Enheter

| Størrelse | Enhet | Felt (eksempler) |
|---|---|---|
| Innstråling | W/m² (timemiddel) | `ghi_wm2`, `ghi`, `dni`, `dhi` |
| Innstrålingssum | kWh/m² | `daily_ghi_kwh_m2`, `H(i)_m`, `annual_ghi_kwh_m2`, `poa_kwh_m2` |
| Effekt | W (prognose), kW (PV-kalkulator) | `total_W`, `<navn>_W`, `P_peak_kW`, `maxpower` |
| Energi | kWh | `total_kWh`, `E_m`, `E_y` |
| Installert effekt | kWp | `kwp`, `peakpower` |
| Spesifikk avling | kWh/kWp per år | `specific_yield_kwh_kwp` |
| Temperatur | °C | `temp_air`, `temp_c` |
| Vind | m/s | `wind_speed` |
| Trykk | hPa | `mslp` |
| Snø | mm snødybde eller mm vannekvivalent (SWE), oppgitt i feltnavnet | `snow_depth_mm`, `char_swe_mm` |
| Snølast | kN/m² | `characteristic_snow_load_kn_m2`, `sk_kn_m2` |
| Tap | prosent | `l_total`, `snow_loss_pct`, `loss_pct` |
| Andeler | 0 til 1 | `coverage`, `konfidens`, `sky_view_factor` |
| Høyde | m over havet (`_masl`) eller m over terreng | `elevation_m`, `observer_z_masl`, `observer_height_m` |
| Avstand | m eller km, i feltnavnet | `distance_m`, `radius_km` |

Negative tapstall i PV-kalkulatoren (`l_aoi: -2.4`) betyr tap; positive betyr gevinst i forhold til referansen.

## Format

- JSON er UTF-8 med punktum som desimaltegn og `null` for manglende verdier. Feltnavn er stabile; nye felt kan komme til uten varsel, se [versjonering](/api/dokumentasjon/caching-og-versjonering).
- CSV bruker komma som skilletegn og punktum som desimaltegn, uansett `format`. Filer får `Content-Disposition: attachment; filename="…"`.
- Store svar: en horisontprofil er om lag 12 kB, en TMY-fil i JSON om lag 480 kB. Be om `Accept-Encoding: gzip`; Cloudflare komprimerer.
- POST-kropper skal være JSON med `Content-Type: application/json`. Booleans er ekte `true`/`false`, ikke strenger.
- Brytere i GET-parametre tolkes ulikt per endepunkt, bruk verdien i tabellen: `daily=true`, `snow=1` (eller `true`), `snowloss=1`, `horizon=0` for å slå av. Andre verdier ignoreres.

## HTTP

- Alle endepunkter tillater kall fra nettleser (`Access-Control-Allow-Origin: *`, `OPTIONS` besvares). Ikke send nøkkelen fra nettleseren.
- GET er idempotent og kan caches. POST til `/api/forecast` er også trygt å gjenta; POST til jobbendepunktene oppretter en ny jobb hver gang.
- Svartid: prognose og TMY under 1 s ved treff i cache, PV-kalkulator 1 til 3 s, horisont nivå 2 2 til 5 s, terrengkategori 20 til 60 s, takanalyse 15 til 90 s. Bruk jobbendepunktene for de to siste.
