Ana içeriğe atla

🌧️ Kesilmiş hassasiyet

Her çokgen, sorguladığınız dairesel alana önceden kırpılmıştır — tarafınızda ek işlem gerekmez.

⚡ İkili verimlilik

Protobuf kodlaması, JSON’a kıyasla yük boyutunu önemli ölçüde azaltır; mobil ve gömülü istemciler için idealdir.

🗺️ GeoJSON'a hazır

Ham baytlardan geojson.io veya Mapbox’a doğrudan atabileceğiniz şekillere ulaşmak için yalnızca iki adım yeterlidir.

Endpoint ne döndürür?

POST /v1/precipitations/geometry, ham ikili gövde (Content-Type: application/x-protobuf) ile yanıt verir. Baytlar bir PrecipitationFeatureCollection mesajını kodlar; her biri kırpılmış bir MultiPolygon geometrisi ve tiplendirilmiş yağış özellikleri taşıyan PrecipitationFeature öğelerinin listesidir.
Yanıt gövdesini JSON veya metin olarak ayrıştırmayın. Protobuf ikili akışıdır; metin olarak işlenirse anlamsız karakterler görürsünüz.

Veri kaynağı ve güncelleme sıklığı 📡

Yağış verisi, iklim.co yağış servisi tarafından radar gözlemlerinden üretilir.
  • Sıklık: her 10 dakikada bir yeni radar gözlemi işlenir. Yeni kayıtların radarTimestamp değerleri 10 dakikalık UTC ızgarasına hizalıdır (örn. 12:00, 12:10, 12:20).
  • Gözlem + tahmin kareleri: her radar anlık görüntüsü bir gözlem (forecast: false) ve anlık görüntüden sonra yapılandırılan ofsetlerde, yapılandırılan tahmin ufkuna kadar tahmin çokgenleri (forecast: true) üretir. Tahmin kaydının radarTimestamp değeri tahminin geçerli olduğu zamandır, yani gelecektedir: tahmin kayıtlarını almak için endTimeEpoch değerini (tahmin ufkuna kadar) ileri bir zamana verin.
  • Tahmin kayıtları kısa ömürlüdür: tahmin kaydı geçerlilik zamanına gelindiğinde silinir; o zamanın radar gözlemi ardından normal bir forecast: false kaydı olarak gelir. Tahmin kaydının geometrisini geçerlilik zamanından önce isteyin.
  • Saklama süresi: kayıtlar 30 gün saklanır.

Proto şeması 📄

Aşağıda iklim.co’nun bu endpoint için kullandığı proto mesaj tanımları verilmiştir.
Aşağıdaki çözümleme adımlarını çalıştırmadan önce geojson.proto dosyasının tamamını projenize kopyalayın. protobufjs yükleyicisi bu dosyaya çalışma zamanında ihtiyaç duyar.

Çözümleme ve GeoJSON’a dönüştürme 🛠️

Neden iki adım gerekli? GeoJSON bir JSON metin formatıdır (RFC 7946) ve resmi bir protobuf şeması yoktur. Koordinatları düz iç içe dizilerden ([[lng, lat], ...]) oluşur; protobuf ise isimsiz wrapper olmadan bu yapıyı temsil edemez. iklim.co’nun ikili şeması (Coordinate, Ring, PolygonShape, …) boyut verimliliği için tiplendirilmiş mesajlar kullandığından, çözümlemeden sonra her zaman bir yapısal dönüşüm adımı gerekir.
1

protobufjs kurulumu 📦

2

İkili yanıtı getir 🌐

fetch’e yanıtı ArrayBuffer olarak okumasını söyleyin, ardından proto çözümleyici için Uint8Array’e sarın.
3

Protobuf baytlarını çözümle 🔓

geojson.proto dosyasını yükleyin ve baytları JavaScript nesnesine dönüştürün.
Bu noktada fc şu şekilde görünür:
4

Standart GeoJSON'a dönüştür 🗺️

Çözümlenen nesneyi RFC 7946 uyumlu GeoJSON’a dönüştürün.

Alan referansı 📚

PrecipitationFeature

geometry (MultiPolygon)

properties

Yağış tipi (precipType) protobuf properties içinde (precip_type = 4 alanı) ve POST /v1/precipitations/within ile POST /v1/precipitations/page yanıtlarındaki JSON kayıtlarında isteğe bağlı bir alan olarak (RAIN veya SNOW) döner. Tipi bilinen kayıtlar RAIN veya SNOW taşır; tip bilgisi olmayan eski kayıtlar protobuf’ta PRECIP_TYPE_UNSPECIFIED taşır, JSON’da alanı içermez. Ekleyici bir alandır: eski geojson.proto ile derlenen istemciler yeni alanı atlar ve etkilenmez.

IntensityType kataloğu

Yoğunluk sınıfları radar yansıtırlığıyla (dBZ) tanımlanır. Yağmur ve kar için ayrı bantlar kullanılır. 5 dBZ altındaki yansıtırlık yağış yok sayılır ve çokgen üretmez.
EXTREME, 60 dBZ ve üzeri yansıtırlık, büyük dolu olası anlamına gelir. Doğrudan dolu tespiti değildir. Kar için EXTREME üretilmez.
Yukarıdaki dBZ bantları güncel eşiklerdir. Eşikler ayarlanabilir; her değişiklik sürüm notlarında duyurulur.