TMY Norge
Typisk meteorologisk år for ethvert punkt på fastlands-Norge, 8760 timer med GHI, DNI, DHI, temperatur, fukt, vind og trykk. 15 filformater, fire produkter, P50 til P95, statistikk og kilder per celle.
- GET /api/tmy
- GET /api/tmy/stats
- GET /api/tmy/sources
- POST /api/tmy/lead
Hva du får
Et typisk meteorologisk år (TMY) er 12 typiske måneder valgt fra en lang periode og satt sammen til ett år med 8760 timer. TMY Norge er bygd for 38 671 celler i 3 km fra NORA3 (Meteorologisk institutts reanalyse) og SunPoint (1 km solmodell), biaskorrigert mot 45 MET-pyranometerstasjoner. Etter korreksjon er middelfeilen +0,5 W/m² og korrelasjonen 0,94. Filene er laget for PVsyst, EnergyPlus, SAM, PV*SOL og egne beregninger.
Nøkkel er valgfri i lanseringsperioden: inntil 2000 forespørsler per døgn per IP-adresse, alle formater og produkter. En nøkkel gir ikke høyere kvote enn dette før planene aktiveres. Nedlastinger er lisensiert for prosjekter som prosjekteres til og med 30. september 2026 (license_version: "tmy-v1-2026-09-30").
GET /api/tmy: last ned året
curl -o oslo.epw "https://api.solkart.no/api/tmy?lat=59.91&lon=10.75&format=epw"
| Parameter | Type | Standard | Beskrivelse |
|---|---|---|---|
lat, lon |
tall | påkrevd | 57 til 71,5° N, 4 til 31,5° Ø. Nærmeste celle innen 6 km brukes. |
format |
se tabell | epw |
Filformat |
source |
ensemble | nora3 | sunpoint |
ensemble |
Datakilde |
period |
30 | 18 |
30 |
1991 til 2020, eller 2008 til 2025 (bare nora3) |
product |
ens_tmy30 | nora3_tmy30 | nora3_tmy18 | sunpoint_tmy30 |
fra source+period |
Velg produkt direkte |
confidence |
tmy | mean | p50 | p75 | p90 | p95 |
tmy |
tmy er de valgte typiske månedene uskalert. mean og pXX skalerer serien så årssummen av GHI treffer langtidsmiddelet eller persentilen. P90 = årssum som overskrides 90 % av årene. |
tz |
utc | local |
utc |
local er UTC+1 uten sommertid (gjelder JSON og CSV) |
Formater
format |
Filtype | Til | Tidskonvensjon |
|---|---|---|---|
json |
.json | Egen kode | UTC, bin-start |
csv |
.csv | Regneark, pandas | UTC, bin-start |
epw |
.epw | EnergyPlus, IDA ICE, DesignBuilder | Timeslutt, lokal normaltid (UTC+1) |
tmy3 |
.csv (NREL TMY3) | SAM, pvlib | Timeslutt, lokal normaltid |
pvsyst |
.csv | PVsyst (importer som «Custom») | Timeslutt, lokal normaltid (UTC+1) |
meteonorm |
.dat | PVsyst, Polysun | Timeslutt, lokal normaltid |
pvgis |
.csv | Verktøy som leser PVGIS TMY | UTC |
nsrdb |
.csv | Verktøy som leser NSRDB PSM3 | Timeslutt, lokal normaltid |
solcast |
.csv | Verktøy som leser Solcast TMY | UTC |
solaranywhere |
.csv | Verktøy som leser SolarAnywhere | Timeslutt, lokal normaltid |
dwd, dwdxml |
.dat, .xml | Verktøy som leser DWD TRY | Timeslutt, lokal normaltid |
custom |
.csv | Fritt kolonneformat med hode | Timeslutt, lokal normaltid |
wbv |
.wbv | Windows-baserte simuleringsverktøy | Timeslutt, lokal normaltid |
measurement |
.csv | Måledata-lignende format for validering | UTC |
Fila leveres som Content-Disposition: attachment; filename="sunpoint_tmy_<lat>_<lon>_<produkt>_<confidence>.<ext>" (inline for JSON), med Cache-Control: public, max-age=86400 og hodene X-Tmy-Cell, X-Tmy-Cell-Distance-Km, X-Tmy-Product.
JSON-strukturen
{
"meta": {
"cell_id": "y0578x614", "lat": 59.9105, "lon": 10.7687, "elevation_m": 61.3,
"product": "ens_tmy30", "product_years": [1991, 2020],
"selected_years": [2003, 2005, 2017, 2010, 2012, 2010, 2001, 2007, 2018, 1999, 2004, 2008],
"confidence": "tmy", "scale_factor": 1,
"annual_ghi_kwh_m2": { "tmy": 992.2, "mean": 966.3, "p50": 965.4, "p75": 940.4, "p90": 925.1, "p95": 908.2 },
"annual_dni_kwh_m2_tmy": 1089.7,
"bias_correction_wm2": [-5.6, -11.2, -12.4, -10.2, -9.6, -9.2, -9.6, 0, -5.4, -6.8, 0, 0],
"n_stations_bias": 3,
"ensemble_weights": { "nora3": 0.40, "sunpoint": 0.60 },
"time_convention": "UTC, bin-start: value = mean over [t, t+1h); met vars instantaneous at t",
"sources": "NORA3 (MET Norway reanalysis, 3 km) + SunPoint ML-Optimized GHI (MET Norway, 1 km); station bias-correction vs MET obs",
"method": "TMY3-style Finkelstein-Schafer month selection (GHI 0.5, DNI 0.25, Tair 0.15, Tdew 0.05, wind 0.05); DNI/DHI via DIRINT",
"license": "Data downloaded from this service is licensed for use only in projects designed on or before 30 September 2026.",
"license_version": "tmy-v1-2026-09-30",
"generator": "SunPoint V6 TMY API (solkart.no), record v1"
},
"hourly": {
"time": ["2001-01-01T00:00:00Z", "2001-01-01T01:00:00Z", "…8760 verdier"],
"ghi": [0, 0, "…"], "dni": [], "dhi": [], "temp_air": [], "rel_hum": [], "wind_speed": [], "mslp": []
},
"units": { "ghi": "W/m2", "dni": "W/m2", "dhi": "W/m2", "temp_air": "degC", "rel_hum": "%", "wind_speed": "m/s", "mslp": "hPa" }
}
| Felt | Beskrivelse |
|---|---|
meta.selected_years[] |
Kalenderåret hver av de 12 månedene er hentet fra |
meta.annual_ghi_kwh_m2 |
Årssum GHI for TMY-året, langtidsmiddelet og persentilene |
meta.scale_factor |
Faktoren serien er skalert med for valgt confidence (1 for tmy) |
meta.bias_correction_wm2[] |
Korreksjon per måned fra målestasjoner, W/m² |
hourly.time[] |
År 2001 er plassholder for et typisk år |
Innstrålingen er timemiddel over [t, t+1h); temperatur, fukt, vind og trykk er øyeblikksverdier ved t.
GET /api/tmy/stats: årssummer og persentiler
Statistikk for alle fire produktene i cellen, uten å laste ned timedata.
curl "https://api.solkart.no/api/tmy/stats?lat=59.91&lon=10.75"
{
"cell_id": "y0578x614", "lat": 59.9105, "lon": 10.7687, "elevation_m": 61.3,
"query": { "lat": 59.91, "lon": 10.75, "cell_distance_km": 1.05 },
"products": {
"ens_tmy30": { "years": [1991, 2020], "selected_years": ["…12"],
"annual_ghi_kwh_m2": { "tmy": 992.2, "mean": 966.3, "p50": 965.4, "p75": 940.4, "p90": 925.1, "p95": 908.2 },
"annual_ghi_std_kwh_m2": 40.2, "annual_dni_kwh_m2_tmy": 1089.7 },
"nora3_tmy30": { "…": "…" }, "nora3_tmy18": { "…": "…" }, "sunpoint_tmy30": { "…": "…" }
},
"monthly_ghi_kwh_m2": { "ens_tmy30": { "p50": ["…12"], "p90": ["…12"] }, "nora3_tmy30": { "…": "…" } },
"bias_correction": { "applied_wm2_per_month": ["…12"], "n_stations": 3, "mean_abs_wm2": 6.7 },
"ensemble_weights": { "nora3": 0.40, "sunpoint": 0.60 },
"n_years": { "nora3": 30, "sunpoint": 30 },
"exceedance_definition": "Pxx = annual/monthly GHI exceeded in xx % of years of the product period (P90 = 10th percentile)"
}
GET /api/tmy/sources: hvor kommer hver måned fra
curl "https://api.solkart.no/api/tmy/sources?lat=59.91&lon=10.75"
Svarer med products.<produkt>.{source, period, selected_year_per_month[12]}, bias_correction_wm2_per_month[12], n_stations_bias og method. Nyttig i rapporter som skal dokumentere datagrunnlaget.
POST /api/tmy/lead
Skjemaet på solkart.no/tmy registrerer firma, navn og e-post før nedlasting og lisensaksept. Endepunktet er åpent, men beregnet på skjemaet: {company, name, email, lat, lon, license_accepted: true} pluss valgfrie phone, address, product, format. Svar {ok: true, stored: true, id, license_version}. Grense 200 per IP-adresse per døgn.
Eksempler i kode
import pandas as pd, requests
r = requests.get("https://api.solkart.no/api/tmy",
params={"lat": 59.91, "lon": 10.75, "format": "json", "confidence": "p90"}, timeout=30)
r.raise_for_status()
d = r.json()
df = pd.DataFrame(d["hourly"]).set_index(pd.to_datetime(d["hourly"]["time"]))
print(d["meta"]["annual_ghi_kwh_m2"]["p90"], df["ghi"].sum() / 1000)
# PVsyst: last ned og importer som Custom-fil
curl -o oslo_p90.csv "https://api.solkart.no/api/tmy?lat=59.91&lon=10.75&format=pvsyst&confidence=p90"
Feil
| Status | error |
|---|---|
400 |
lat og lon må være tall (grader, WGS84). |
400 |
Punktet er utenfor dekningsområdet (lat 57-71.5, lon 4-31.5, fastlands-Norge). |
400 |
Ukjent format '<f>'. Gyldige: … / confidence må være tmy\|mean\|p50\|p75\|p90\|p95 / Ugyldig source/period/product. … |
401 |
Daglig forespørsels-grense (2000/dag) brukt opp. … |
404 |
Ingen TMY-celle innen ~6 km av punktet (utenfor fastlands-Norge-masken). / Produkt '<p>' finnes ikke for denne cellen. |
503 |
TMY-data ikke tilgjengelig (tile mangler i R2). / Langtidsmiddelet er ikke tilgjengelig for denne cellen. (ved confidence=mean) |
Datagrunnlag og metode
- NORA3: MET Norways reanalyse i 3 km, 1991 til 2025.
- SunPoint: EnergiSmarts solmodell i 1 km, 1991 til 2020, trent på MET-kvalitetssikrede stasjoner.
- Ensemble (
ens_tmy30): vektet 40/60 per celle, deretter månedlig biaskorreksjon mot nærmeste pyranometerstasjoner. - Månedsvalg: Finkelstein-Schafer-statistikk som i NREL TMY3, vekter GHI 0,5, DNI 0,25, lufttemperatur 0,15, duggpunkt 0,05, vind 0,05. DNI og DHI fra DIRINT.
Samme data i nettleseren: solkart.no/tmy.