Locations v1 / Meteo
Indicatori climatici anuali
Indicatorii climatici anuali ai unei staţii: zile tropicale, zile de îngheţ, nopţi geroase, zile cu precipitaţii peste prag — an cu an, pe pragurile pe care le ceri.
GET
https://oneapi.ro/api/locations/v1/meteo/indicatori
Parametri de interogare
NumeTipDescriereValori acceptate
sirutaopțional
integer | null
Codul SIRUTA al locului. Exclusiv cu
lat+lng și cu statie.
1
latopțional
number | null
Latitudinea punctului (cu
lng).
43 – 49
lngopțional
number | null
Longitudinea punctului (cu
lat).
20 – 30
statieopțional
string | null
Codul WSI, dacă vrei o stație anume.
max 32 car.
de_la_anulopțional
integer | null
Primul an al intervalului.
1850 – 2100
la_anulopțional
integer | null
Ultimul an al intervalului.
1850 – 2100
baza_incalzireopțional
number | null
Temperatura de bază pentru încălzire, °C (implicit 18).
0 – 30
baza_racireopțional
number | null
Temperatura de bază pentru răcire, °C (implicit 22).
0 – 40
Cum se comportă
- Pragurile nu sunt inventate de noi și nici ascunse:
pragurile scrie explicit în fiecare răspuns (îngheț = minima sub 0 °C, zi tropicală = maxima cel puțin 30 °C, zi caniculară = maxima cel puțin 35 °C, noapte tropicală = minima cel puțin 20 °C). - Numărătorile de zile sunt afectate de lipsuri exact ca gradele-zile: un an cu 200 de zile măsurate are mai puține zile cu îngheț fără să fi fost mai blând.
an_complete steagul de care depinde orice comparație. - Dacă ai nevoie doar de grade-zile,
/locations/v1/meteo/grade-zileîntoarce aceleași cifre, fără restul.
La ce folosește
- Evaluezi riscul de îngheț al unui amplasament agricol, pe zeci de ani de observații.
- Documentezi tendința zilelor caniculare dintr-un oraș, pentru un plan de adaptare climatică.
- Estimezi solicitarea la care e supusă o infrastructură din nopțile tropicale și zilele cu îngheț.
Structura răspunsului
CâmpTipDescriere
data.punct.lat
number
Latitudinea, în grade zecimale (WGS 84).
data.punct.lng
number
Longitudinea, în grade zecimale (WGS 84).
data.punct.sursa
string
data.punct.cod_siruta
integer
Codul SIRUTA al unităţii teritoriale.
data.punct.nume
string
Numele, aşa cum îl publică sursa.
data.punct.nivel
string
Nivelul din ierarhia clasificării — cu cât e mai adânc, cu atât e mai detaliat.
data.statie.wsi
string
Identificatorul OMM al stației.
data.statie.nume
string
Numele, aşa cum îl publică sursa.
data.statie.latitudine
number
Latitudinea, în grade zecimale (WGS 84).
data.statie.longitudine
number
Longitudinea, în grade zecimale (WGS 84).
data.statie.fara_catalog
boolean
true dacă stația are serie dar nu și fișă de catalog (fără nume, fără coordonate, invizibilă în căutările geografice).
data.statie.localitate.cod_siruta
integer
Codul SIRUTA al unităţii teritoriale.
data.statie.localitate.nume
string
Numele, aşa cum îl publică sursa.
data.statie.judet
string
Judeţul la care se referă valoarea.
data.statie.judet_cod
string
Codul judeţului, două litere.
data.statie.primul_an
integer
Primul an cu măsurători.
data.statie.ultimul_an
integer
Ultimul an cu măsurători.
data.statie.zile_cu_date
integer
Câte zile măsurate are stația în total.
data.statie.parametri
array
Codurile parametrilor publicați:
ta/tn/tx temperaturi, r precipitații, ff vânt, p presiune la nivelul mării.
data.statie.distanta_km
number
Distanţa în kilometri, în linie dreaptă.
data.praguri
object
Definițiile folosite pentru fiecare indicator, plus bazele de grade-zile.
data.praguri.baza_incalzire
integer
Baza folosită pentru încălzire, °C.
data.praguri.baza_racire
integer
Baza folosită pentru răcire, °C.
data.praguri.inghet
string
data.praguri.zi_tropicala
string
data.praguri.zi_caniculara
string
data.praguri.noapte_tropicala
string
data.praguri.zi_cu_precipitatii
string
data.inregistrari
integer
Câți ani sunt în răspuns.
data.ani[].an
integer
Anul calendaristic.
data.ani[].zile
integer
Câte zile din an au vreo măsurătoare.
data.ani[].zile_cu_temperatura
integer
Câte zile din an au temperatură măsurată.
data.ani[].an_complet
boolean
true la cel puțin 350 de zile cu temperatură. Compară doar anii cu true.
data.ani[].temp_medie_anuala
number
Media anuală a temperaturii, °C.
data.ani[].grade_zile_incalzire
number
Grade-zile de încălzire, sumă pe an.
data.ani[].grade_zile_racire
number
Grade-zile de răcire, sumă pe an.
data.ani[].zile_cu_inghet
integer
Zile cu temperatura minimă sub 0 °C.
data.ani[].zile_tropicale
integer
Zile cu maxima de cel puțin 30 °C.
data.ani[].zile_caniculare
integer
Zile cu maxima de cel puțin 35 °C.
data.ani[].nopti_tropicale
integer
Zile cu minima de cel puțin 20 °C — nopțile în care nu se răcorește.
data.ani[].precipitatii_totale_mm
integer
Precipitațiile totale ale anului, mm.
data.ani[].zile_cu_precipitatii
integer
Câte zile din an au avut precipitații MĂSURABILE (peste 0 mm). Zilele cu urme nu intră aici — convenția climatologică le ține separat.
data.ani[].zile_cu_urme
integer
Câte zile din an au avut doar urme de precipitații (0–0,05 mm): a plouat, dar sub pragul de măsurare. Adună-le la
zile_cu_precipitatii dacă vrei „zile în care a căzut ceva”.
data.observatie
string
Precizare despre cum se citeşte răspunsul: o convenţie de calcul sau o limită a datelor.
data.reprezentativitate
object
Cât de bine descrie stația locul cerut.
data.reprezentativitate.sursa
string
data.reprezentativitate.distanta_km
number
Distanţa în kilometri, în linie dreaptă.
data.reprezentativitate.buna
boolean
data.reprezentativitate.observatie
string
Precizare despre cum se citeşte valoarea de alături.
data.sursa
object
Sursa datelor: Administrația Națională de Meteorologie, seria zilnică oficială, licență CC-BY-4.0. Conține și data ultimei importări.
data.sursa.nume
string
Denumirea sursei oficiale.
data.sursa.url
string
Adresa publică a sursei.
data.sursa.licenta
string
Licenţa sub care sursa permite reutilizarea.
meta.distanta.metoda
string
Mereu
linie_dreapta: distanţa geodezică pe suprafaţa Pământului, nu pe drum.
meta.distanta.detaliu
string
Aceeaşi informaţie, în cuvinte.
Exemple de răspuns
GEThttps://oneapi.ro/api/locations/v1/meteo/indicatori?siruta=54975&de_la_anul=2010
{
"data": {
"punct": {
"lat": 46.775869737866465,
"lng": 23.60115997499754,
"sursa": "siruta",
"cod_siruta": 54975,
"nume": "Cluj-Napoca",
"nivel": "uat_centroid"
},
"statie": {
"wsi": "0-20000-0-15120",
"nume": "Cluj-Napoca",
"latitudine": 46.777778,
"longitudine": 23.571389,
"fara_catalog": false,
"localitate": {
"cod_siruta": 54975,
"nume": "Cluj-Napoca"
},
"judet": "Cluj",
"judet_cod": "CJ",
"primul_an": 1921,
"ultimul_an": 2026,
"zile_cu_date": 38525,
"parametri": [
"ff",
"p",
"r",
"ta",
"tn",
"tx"
],
"distanta_km": 2.3
},
"praguri": {
"baza_incalzire": 18,
"baza_racire": 22,
"inghet": "temperatura minimă sub 0 °C",
"zi_tropicala": "temperatura maximă ≥ 30 °C",
"zi_caniculara": "temperatura maximă ≥ 35 °C",
"noapte_tropicala": "temperatura minimă ≥ 20 °C",
"zi_cu_precipitatii": "cantitate măsurabilă, peste 0 mm — zilele cu urme se numără separat, în `zile_cu_urme`"
},
"inregistrari": 17,
"ani": [
{
"an": 2026,
"zile": 233,
"zile_cu_temperatura": 233,
"an_complet": false,
"temp_medie_anuala": 12.3,
"grade_zile_incalzire": 1687.9,
"grade_zile_racire": 97.6,
"zile_cu_inghet": 58,
"zile_tropicale": 40,
"zile_caniculare": 8,
"nopti_tropicale": 2,
"precipitatii_totale_mm": 300,
"zile_cu_precipitatii": 76,
"zile_cu_urme": 25
}
],
"observatie": "Gradele-zile sunt SUME pe an: un an cu date incomplete dă o sumă mai mică fără să fie mai cald. Filtrează pe `an_complet` înainte de a compara ani între ei sau de a calcula tendințe.",
"reprezentativitate": {
"sursa": "cea_mai_apropiata_statie",
"distanta_km": 2.3,
"buna": true,
"observatie": "Stația e suficient de aproape pentru o estimare rezonabilă a climei locului."
},
"sursa": {
"nume": "Administrația Națională de Meteorologie (ANM) — date climatologice zilnice, controlate calitativ",
"url": "https://odp.meteoromania.ro/",
"licenta": "CC BY 4.0, cu indicarea sursei."
}
},
"meta": {
"distanta": {
"metoda": "linie_dreapta",
"detaliu": "Distanţele sunt geodezice, în linie dreaptă pe suprafaţa Pământului (WGS84) — nu pe drum."
}
}
}
GEThttps://oneapi.ro/api/locations/v1/meteo/indicatori?statie=0-20000-0-15120
{
"data": {
"punct": null,
"statie": {
"wsi": "0-20000-0-15120",
"nume": "Cluj-Napoca",
"latitudine": 46.777778,
"longitudine": 23.571389,
"fara_catalog": false,
"localitate": {
"cod_siruta": 54975,
"nume": "Cluj-Napoca"
},
"judet": "Cluj",
"judet_cod": "CJ",
"primul_an": 1921,
"ultimul_an": 2026,
"zile_cu_date": 38525,
"parametri": [
"ff",
"p",
"r",
"ta",
"tn",
"tx"
]
},
"praguri": {
"baza_incalzire": 18,
"baza_racire": 22,
"inghet": "temperatura minimă sub 0 °C",
"zi_tropicala": "temperatura maximă ≥ 30 °C",
"zi_caniculara": "temperatura maximă ≥ 35 °C",
"noapte_tropicala": "temperatura minimă ≥ 20 °C",
"zi_cu_precipitatii": "cantitate măsurabilă, peste 0 mm — zilele cu urme se numără separat, în `zile_cu_urme`"
},
"inregistrari": 106,
"ani": [
{
"an": 2026,
"zile": 233,
"zile_cu_temperatura": 233,
"an_complet": false,
"temp_medie_anuala": 12.3,
"grade_zile_incalzire": 1687.9,
"grade_zile_racire": 97.6,
"zile_cu_inghet": 58,
"zile_tropicale": 40,
"zile_caniculare": 8,
"nopti_tropicale": 2,
"precipitatii_totale_mm": 300,
"zile_cu_precipitatii": 76,
"zile_cu_urme": 25
}
],
"observatie": "Gradele-zile sunt SUME pe an: un an cu date incomplete dă o sumă mai mică fără să fie mai cald. Filtrează pe `an_complet` înainte de a compara ani între ei sau de a calcula tendințe.",
"reprezentativitate": {
"sursa": "statie_ceruta",
"observatie": "Ai cerut stația explicit; nu se aplică nicio aproximare geografică."
},
"sursa": {
"nume": "Administrația Națională de Meteorologie (ANM) — date climatologice zilnice, controlate calitativ",
"url": "https://odp.meteoromania.ro/",
"licenta": "CC BY 4.0, cu indicarea sursei."
}
}
}
GEThttps://oneapi.ro/api/locations/v1/meteo/indicatori?statie=0-20000-0-15208
{
"data": {
"punct": null,
"statie": {
"wsi": "0-20000-0-15208",
"nume": "Alba Iulia",
"latitudine": 46.063911,
"longitudine": 23.563402,
"fara_catalog": false,
"localitate": {
"cod_siruta": 1017,
"nume": "Alba Iulia"
},
"judet": "Alba",
"judet_cod": "AB",
"primul_an": 1881,
"ultimul_an": 2026,
"zile_cu_date": 43155,
"parametri": [
"ff",
"p",
"r",
"ta",
"tn",
"tx"
]
},
"praguri": {
"baza_incalzire": 18,
"baza_racire": 22,
"inghet": "temperatura minimă sub 0 °C",
"zi_tropicala": "temperatura maximă ≥ 30 °C",
"zi_caniculara": "temperatura maximă ≥ 35 °C",
"noapte_tropicala": "temperatura minimă ≥ 20 °C",
"zi_cu_precipitatii": "cantitate măsurabilă, peste 0 mm — zilele cu urme se numără separat, în `zile_cu_urme`"
},
"inregistrari": 125,
"ani": [
{
"an": 2026,
"zile": 233,
"zile_cu_temperatura": 233,
"an_complet": false,
"temp_medie_anuala": 13.3,
"grade_zile_incalzire": 1552,
"grade_zile_racire": 145.2,
"zile_cu_inghet": 52,
"zile_tropicale": 57,
"zile_caniculare": 16,
"nopti_tropicale": 0,
"precipitatii_totale_mm": 364.5,
"zile_cu_precipitatii": 75,
"zile_cu_urme": 6
}
],
"observatie": "Gradele-zile sunt SUME pe an: un an cu date incomplete dă o sumă mai mică fără să fie mai cald. Filtrează pe `an_complet` înainte de a compara ani între ei sau de a calcula tendințe.",
"reprezentativitate": {
"sursa": "statie_ceruta",
"observatie": "Ai cerut stația explicit; nu se aplică nicio aproximare geografică."
},
"sursa": {
"nume": "Administrația Națională de Meteorologie (ANM) — date climatologice zilnice, controlate calitativ",
"url": "https://odp.meteoromania.ro/",
"licenta": "CC BY 4.0, cu indicarea sursei."
}
}
}
Coduri de eroare
| Cod | Slug | Când apare |
|---|---|---|
| 401 | neautentificat | Token lipsă, invalid, expirat sau revocat. |
| 403 | feature_indisponibil | Planul curent nu include funcţia de care ţine ruta. |
| 404 | negasit | Trei cauze distincte, pe care mesajul le separă: stație inexistentă, loc fără coordonate în nomenclator, sau nicio stație cu serie zilnică importată. |
| 422 | validare | Niciun loc dat, sau două forme deodată. |
| 429 | cota_depasita | Cota lunară a planului a fost depăşită (vezi Retry-After). |
Toate erorile au aceeași formă. eroare.cod e stabil și e cel după care trebuie să ramifici în cod — nu după textul din mesaj, care se poate schimba.
{
"eroare": {
"cod": "validare",
"mesaj": "Niciun loc dat, sau două forme deodată.",
"detalii": {
"siruta": [
"Valoarea trimisă nu respectă regula parametrului."
]
}
}
}