DendroGeo: Küresel Ağaç Envanteri ve Karbon Veri Sistemi
Abstract
🌲 DendroGeo v3.0.0 — Küresel Ağaç Envanteri ve Karbon Veri Sistemi Açık kaynak web CBS + PWA · dendrogeo.org · github.com/snansrin/dendrogeo · Lisans: CC BY-NC 4.0 DendroGeo; sahada GPS ile toplanan ağaç ölçümlerini allometrik biyokütle ve karbon hesaplarına, park kimliği bazlı toplulaştırmalara ve 10 m çözünürlüklü arazi örtüsü analizlerine dönüştüren, çevrimdışı çalışabilen bir web coğrafi bilgi sistemidir. Ölçümler yönetici onayından geçerek DOI ile sürümlenmiş, kamuya açık bir bilimsel veri setine dönüşür. 🧭 Sistem üç adımda çalışır Sahada ölç — GPS konumu, çap (DBH), boy, tür/grup ve isteğe bağlı fotoğraf. Fotoğraf yüklenirse tarayıcı içinde kalite kontrolü (bitki örtüsü oranı, pozlama) yapılır. İnternet yokken ölçümler cihazda IndexedDB kuyruğuna yazılır, bağlantı gelince client_id tabanlı tekilleştirme ile senkronize olur. Yönetici onaylasın — her kayıt moderasyondan geçer; onaylanmayan veri haritaya ve istatistiklere çıkmaz. Onay/red işlemleri kim-ne zaman bilgisiyle denetim izine yazılır. Erişim tamamen Satır Düzeyi Güvenlik (RLS) ile sunucu tarafında zorlanır. Karşılaştır ve yayımla — onaylı kayıtlar küresel haritada, ülke/şehir kırılımında ve park bazlı karbon performans sıralamasında görünür; CSV / QGIS CSV / GeoJSON olarak dışa aktarılır. ✨ Özellikler 1) 🛰 Saha ölçümü ve GPS Yüksek doğruluklu konum + canlı doğruluk göstergesi (±m) ve kalite sınıfı (ÇOK İYİ / İYİ / ORTA / ZAYIF) Ekran kilidi engelleme (Wake Lock API) — iOS'ta ölçüm sırasında ekranın kararması konum izlemesini kestiği için Nokta kimliği otomatik doldurma: en yakın ziyaret edilmemiş waypoint, yoksa son nokta + 1 Ters coğraflama (Nominatim) ile il/ülke otomatik yazımı; Türkiye için state alanından il çözümlemesi Fotoğraf QA/QC: bitki örtüsü oranı ve pozlama denetimi, 1024 px'e sıkıştırma, buluta yükleme Çevrimdışı kuyruk + UUID tabalı mükerrer kayıt koruması (hem istemcide hem veritabanında UNIQUE) 2) 🧮 Biyokütle ve karbon hesabı Chave vd. (2014) allometrik denklemi: AGB = 0.0673 · (ρ·D²·H)^0.976 Kök biyokütlesi: AGB × 0.26 (sistem varsayımı) · Karbon oranı: × 0.47 Tür bazlı odun yoğunluğu (ρ) tablosu; tür bilinmiyorsa grup varsayılanı (İbreli 446, Yapraklı 541, Diğer 493 kg/m³ — Tolunay 2013, NIR Turkey 2017) Hacim: silindir × 0.5 gövde form faktörü · eğim düzeltmesi Canlı hesap: çap/boy girilirken karbon anında gösterilir 3) 🌳 Park kimliği ve parklar arası karşılaştırma (v3.0.0'ın ana yeniliği) Her fiziksel park tek kimlikte tutulur: canonical anahtar OpenStreetMap elemanıdır (way/123456); OSM'de yoksa elle oluşturulan manual/ /<~100 m hücresi> anahtarı Aynı parkı üç kişi üç ayrı projede çalışsa bile veriler tek satırda birleşir — karşılaştırma proje adlarına değil parka dayanır Proje adı kuralı: park adı - kullanıcı etiketi (örn. Göksu Parkı - deneme); adı veritabanı trigger'ı kurar Ölçüm kapısı: park algılanmadan ölçüm girilemez — hem arayüzde hem sunucuda (PARK_REQUIRED) Sıralama metrikleri: toplam karbon (t), t/ha karbon yoğunluğu, katkıda bulunan kişi sayısı, proje sayısı, kayıt ve tür sayısı, ortalama çap/boy, ibreli/yapraklı oranı Park bazlı rapor: tür kırılımı, latince adlar, grup dağılımı + CSV çıktısı Yönetim araçları: Parkları Geri Doldur (eski projeleri ölçüm merkezinden OSM parkıyla eşleştirir; 1500 m → 3500 m → ada göre arama; önizleme + onay) ve Park Kimlikleri (çift kimlik bulma, yeniden adlandırma, birleştirme, silme) 4) 🔲 Örneklem ızgarası ve waypoint navigasyonu Park polygonu üzerine 10 / 20 / 50 m örneklem ızgarası Grid yalnız arazi örtüsü analizinin yeşil alanlarında kurulabilir OSM'den türetilen sert yüzeyler (bina, yol, otopark, spor sahası) ve su kütleleri ile tampon mesafeleri hücreleri eler Izgara hücrelerinden waypoint üretimi, CSV yükleme (X,Y,id), hedefe ok + mesafe navigasyonu, "vardım" işaretleme 5) 🛰 Arazi örtüsü (LULC) analizi Birincil kaynak: ESA WorldCover 2021 v200 (10 m, Sentinel-1 + Sentinel-2) · bağımsız çapraz doğrulama: IO LULC 2020 Microsoft Planetary Computer STAC + COG (GeoTIFF) üzerinden bulut-iyimser okuma; alanlar raster hücresi ile park polygonunun gerçek kesişimlerinden hesaplanır (coverage-weighted zonal analiz) UTM projeksiyonu ve alan korunumu, Sutherland–Hodgman kırpma OSM yol rafinasyonu hücre merkezine göre daraltılır; su aynaları ayrı katman olarak çizilir Tek blok HTML rapor + vektör çizim + sınıf bazlı CSV ve hücre GeoJSON dışa aktarımı 6) ✅ Moderasyon, denetim izi ve güvenlik Onay / red / silme; reviewed_by, reviewed_at, reject_reason, deleted_at ile denetim izi Park → proje → kullanıcı hiyerarşisinde onay kuyruğu, her seviyede 🔴 bekleyen rozeti Admin olmayan status='Onaylı' yapamaz (trigger ile sunucu tarafında zorlanır) RLS: onaysız kayıtları yalnız sahibi ve yöneticiler görür; e-posta adreslerini yalnız yöneticiler görür Fotoğraf depolaması kullanıcı klasörüne izole; yönetici olmayan başkasının dosyasını silemez 7) 🌍 Küresel harita ve istatistik Leaflet + MarkerCluster ile onaylı kayıt haritası, fotoğraf balonları, ülke/şehir yakınlaşma Sunucu tarafı toplulaştırma view'ları (v_global, v_country, v_city, v_world_agg, v_park_compare) — istemci tarafı satır limiti kesilmesi yok Ağaç çeşitliliği analizi: grup dağılımı, en yaygın türler, ortalama çap/boy 8) 📥 Dışa aktarım Bilimsel CSV (29 alan: koordinat, doğruluk, tür/latince, çevre, çap, boy, alan, hacim, AGB/BHB/toplam biyokütle, karbon, fotoğraf dosyası ve URL'si, ISO tarih) QGIS uyumlu detaylı CSV · GeoJSON · park raporu CSV · park şeklinde yüksek çözünürlüklü PNG Yönetici için tüm kullanıcıları kapsayan filtreli toplu dışa aktarım (ülke / şehir / proje / durum) 9) 🔐 Kimlik doğrulama ve KVKK uyumu E-posta + parola (Cloudflare Turnstile bot koruması) ve Google ile giriş (Supabase OAuth, PKCE/implicit uyumlu geri dönüş beklemesi) Kayıtta açık rıza zorunlu; rıza zaman damgasıyla kimlik metadata'sına yazılır Yasal belgeler: Gizlilik Politikası, KVKK m.10 Aydınlatma Metni, Kullanım Koşulları, Künye & içerik kaldırma süreci, erişilebilirlik beyanı İzleme çerezi, reklam ve üçüncü taraf analitik yoktur 10) 📱 PWA ve çevrimdışı çalışma Service Worker: PRECACHE / RUNTIME ayrımı, harita karo ve API önbelleği, ağ-öncelikli yükleme Kurulum (Add to Home Screen), çevrimdışı ölçüm kuyruğu ve senkronizasyon rozeti Depoda satır içi olmayan modüler mimari: partials/ → index.html üretimi, içerik hash'li ?v= sürümleme 🗄 Veri modeli (PostgreSQL / Supabase) Tablolar: profiles, projects, parks, measurements, waypoints, site_visits, data_requests Trigger'lar: proje adını kuran trg_compose_project_name, ölçüm kapısı trg_enforce_park_link, park bağını yöneticiye ayıran trg_enforce_park_admin, onay zorlaması trg_enforce_approval, onay damgası trg_stamp_review, park adı yazım düzeni trg_park_name_case View'lar: v_global, v_country, v_city, v_world_agg, v_park_compare Şema migration'ları repoda: supabase/migrations/0001 → 0006 (hepsi idempotent) 🏗 Mimari ve kalite güvencesi Statik dağıtım (GitHub Pages) + PWA + Supabase; derleyici/transpiler yok, klasik modülleri Vanilla JavaScript, Leaflet, Supabase JS, Chart.js ve GeoTIFF.js (son ikisi tembel yüklenir) 503 otomatik test: allometri ve jeodezi (bilinen referans değerleriyle), UTM projeksiyonu ve alan korunumu, LULC motoru, park geometrisi, modül kayıt bekçisi, ölü buton / eksik ID denetimi, yapısal HTML dengesi, dağıtım sürüklenmesi, hukuki uyum (harita atıfları, KVKK rıza kapısı, lisans tutarlılığı) ve sahte Supabase ile uçtan uca akış testleri GitHub Actions CI: sözdizimi (tarayıcı semantiğiyle), sürüm hash'leri, derleme tutarlılığı, CSP↔kod tutarlılığı, testler ve canlı dağıtım denetimi 🆕 v3.0.0 yenilikleri Park kimliği mimarisi: karşılaştırma artık proje adlarına değil algılanan parka dayanıyor; ölçüm kapısı ve park adı - etiket proje adı kuralı eklendi Google ile giriş (Supabase OAuth) ve kayıtta KVKK açık rızası Park → proje → kullanıcı hiyerarşik onay kuyruğu + bekleyen rozetleri Mobil uyumlu arayüz (tablolar dar ekranda kart düzenine dönüşüyor) Yasal belgeler: gizlilik, aydınlatma metni, kullanım koşulları, künye ve içerik kaldırma süreci Harita atıfları (ODbL / Esri / CC-BY-SA) ve PNG çıktısında telif satırı Lisans netleştirildi: kod, belge ve veri birlikte CC BY-NC 4.0 Kritik hata düzeltmeleri: PostgREST çoklu ilişki (PGRST201), supabase-js zincir sırası, fazla kaynaklı bozuk sayfa, Türkçe büyük/küçük harf tuzakları 📖 Bilimsel yöntem ve kaynaklar Chave J., Réjou-Méchain M., et al. (2014). Improved allometric models to predict the aboveground biomass of tropical trees. Global Change Biology, 20(10), 3177–3190. IPCC (2006). Guidelines for National Greenhouse Gas Inventories, Vol. 4: Agriculture, Forestry and Other Land Use. Tolunay D. (2013). Türkiye'deki Orman Ağaçlarının Odun Yoğunluğu Değerleri. Orman Bakanlığı Yayınları. As N., Asan A., Okur O.D. (2001). Türkiye Orman Ağaçlarının Tohum, Kozalak ve Meyve Özellikleri. OGM (2017). 299 Nolu Tebliğ — Orman Ürünlerinin Ölçümlenmesine Dair Esas ve Usuller. Zanaga D., et al. (2021). ESA WorldCover 10 m 2021 v200 (CC BY 4.0) · Brown C.F., et al. (2022). IO LULC 2020 (10 m, çapraz doğrulama). Park geometrileri: © OpenStreetMap contributors (ODbL 1.0) · Harita karoları: OSM / OpenTopoMap (CC-BY-SA) / Esri World Imagery. 📜 Atıf Şirin, N. & Şirin, S. (2026). DendroGeo: Küresel Ağaç Envanteri ve Karbon Veri Sistemi (Version v3.0.0) [Computer software]. Zenodo. https://doi.org/10.5281/zenodo.22948643 @software{dendrogeo_v3, title = {DendroGeo: Küresel Ağaç Envanteri ve Karbon Veri Sistemi}, author = {\c{S}irin, Nagihan and \c{S}irin, Sinan}, year = {2026}, version = {3.0.0}, doi = {10.5281/zenodo.22948643}, url = {https://dendrogeo.org}, license = {CC-BY-NC-4.0} } ⚠️ Sınırlılıklar Karbon ve biyokütle değerleri allometrik denklemlerle üretilen tahminlerdir; saha ölçüm hataları, tür tayini belirsizliği ve model varsayımları (kök biyokütlesi ×0.26, karbon oranı ×0.47,