Coordinate Converter, pyproj ve PROJ uzerine kurulu bir koordinat donusum
uygulamasidir. Streamlit arayuzu ile tekli koordinat donusumu, toplu dosya
isleme, donusum dogrulamasi ve temel harita onizlemesi sunar.
Surum: 1.0.0
Bu proje, farkli koordinat referans sistemleri (CRS) arasinda donusum yaparken asagidaki sorunlari ayni yerde toplamak icin gelistirildi:
- tek nokta veya batch veri donusumu
- kaynak sistem seciminin anlamli bir onerisi
- gecersiz veri ve kapsam disi noktalar icin acik hata mesajlari
- donusum sonrasinda geri donus (round-trip) kontrolu
- harita uzerinde hizli gorsel kontrol
Uygulama, "sayilari bir formattan digerine cevirmek" degil, geodezik olarak anlamli bir referans sistemi donusumu yapmak uzere tasarlanmistir.
Bir noktanin koordinati, yalnizca sayisal bir cift degildir. O sayilarin hangi referans elipsoidine, hangi datum'a, hangi referans cercevesine ve hangi projeksiyona gore yazildigi bilinmeden anlam tam olmaz [1][2].
Ornek:
39.93, 32.85gibi bir ifade cogunlukla cografi koordinattir.500000, 4400000gibi bir ifade ise buyuk olasilikla duzleme izdusen, yani projeksiyonlu bir koordinattir.
Ayni fiziksel nokta, farkli datum veya farkli projeksiyon altinda farkli sayilarla ifade edilebilir. Bu bir hata degil, geodezinin dogal sonucudur [1].
Cografi koordinatlar, elipsoid uzerindeki enlem-boylam tanimidir. Projeksiyon koordinatlari ise bu elipsoidal yuzeyin duzleme aktarilmis halidir. Bu aktarim sirasinda aci, alan, uzaklik veya yon gibi niceliklerin hepsi ayni anda kusursuz korunamaz; bu nedenle her projeksiyon belirli amaclara gore secilir [2].
Bu uygulamada:
- cografi sistemler derece cinsinden yorumlanir
- projeksiyon sistemleri metre cinsinden yorumlanir
- eksen sunumu
always_xy=Truedavranisina uygun olarak yapilir
WGS84, ITRF ailesi ve ulusal/bolgesel sistemler yalnizca farkli isimler degil, farkli referans tanimlaridir. Ozellikle modern yerbilim ve hassas konumlama uygulamalarinda referans cercevesinin zamana bagli hareketi de onemlidir [3][4].
Bu nedenle:
- "ayni nokta neden farkli sistemlerde farkli cikiyor?" sorusunun cevabi cogu zaman datum ve referans cercevesidir
- milimetre veya santimetre duzeyindeki islerde epoch ve hiz bilgisi onemli hale gelir
Bu uygulama operasyonel donusum araci olarak calisir; tam zamana bagli tektonik modelleme araci degildir.
Uygulamadaki "Bilimsel Ispat ve Geri Donus Kontrolu" bolumu su mantikla calisir:
- Kaynak koordinat hedef sisteme donusturulur.
- Elde edilen sonuc tekrar kaynak sisteme geri donusturulur.
- Ilk giris ile geri donen koordinat arasindaki fark olculur.
Buradaki amac, donusumun sayisal tutarliligini gormektir. Kucuk round-trip farki iyi bir isarettir; fakat tek basina "mutlak dogruluk garantisi" degildir. Cunku gercek dunya hatasi su etkenlerden de etkilenir:
- secilen kaynak CRS'in dogru olup olmamasi
- kullanilan datum donusum modeli
- grid tabanli duzeltmelerin mevcutlugu
- floating-point hesaplama sinirlari
- referans cercevesi ve epoch farklari
Dolayisiyla:
- ileri donusum ve geri donusum ayni islem degildir
- ama birbirini sinayan iki bagli islemdir
- round-trip farki kucukse, algoritmik tutarlilik genellikle iyidir [5][6][7]
WGS84 / UTM (Dinamik) hedefi secildiginde uygulama, koordinati once WGS84
uzerine getirir ve boylama gore uygun UTM zonunu otomatik belirler. Bu pratik
bir kolayliktir; ancak zone secimi hala cografi konuma bagli bir karar oldugu
icin kullanicinin bolgesel baglami bilmesi gerekir [1][2].
Uygulama su asamalari izler:
- Girdiyi ayrisir ve muhtemel sistem tipini tahmin eder.
- Kaynak CRS kapsam ve mantik kontrolu yapar.
pyprojaraciligiyla PROJ donusum pipeline'ini calistirir.- Sonucu hedef sistem eksen ve birimleriyle sunar.
- Istenirse geri donus farkini hesaplayarak numerik kontrol verir.
- Batch modda her satir icin durum ve hata kodu uretir.
Bu sayede uygulama yalnizca "donusturme" yapmaz; ayni zamanda "bu sonuc neden guvenilir / neden supheli olabilir?" sorusuna da cevap vermeye calisir.
Su durumlarda sonuca daha fazla guvenilir:
- kaynak koordinat sistemi dogru secilmisse
- nokta, secilen sistemin kapsama alanindaysa
- round-trip farki cok kucukse
- batch sonuclarinda satir bazli hata yoksa
Su durumlarda dikkat gerekir:
- kullanici kaynak sistemi tahmin ederek secmisse
- veri farkli datumlardan karisik geldiyse
- tarihi / ulusal / lokal grid donusumleri gerekiyorsa
- yasal kadastro, muhendislik aplikasyonu veya santimetre alti tolerans isteniyorsa
Bu uygulama guclu bir teknik yardimcidir; ancak resmi jeodezik denetim, kurumsal grid dosyalari veya yasal onay mekanizmasinin yerine gecmez.
- Tekli koordinat donusumu
- Toplu CSV/XLSX donusumu
- Satir bazli batch hata raporu
Durum,Hata_Kodu,Hata_Mesajikolonlari- Dinamik UTM zone secimi
- Round-trip dogrulama tablosu
- Tarayici konumu ile baslangic doldurma
- Harita onizlemesi
- Merkezi logging
- Timeout + retry ile geocode dayanikliligi
config/ Ayarlar ve logging
core/ Donusum, CRS, UTM ve cozumleyici mantigi
data/ Sistem veritabani
services/ Batch, export, geocode, cihaz GPS servisleri
ui/ Streamlit arayuzu
tests/ Pytest senaryolari
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txtpython main.py --uiAlternatif:
streamlit run streamlit_app.pyDesteklenen temel ortam degiskenleri:
APP_ENV=dev|staging|prodAPP_VERSION=1.0.0APP_TITLE=Coordinate ConverterMAX_UPLOAD_SIZE_MB=10APP_LOG_LEVEL=INFOGEOCODE_TIMEOUT_SECONDS=10GEOCODE_MAX_RETRIES=3GEOCODE_RETRY_BACKOFF_SECONDS=0.5GPS_TIMEOUT_MS=10000
Streamlit Community Cloud uzerinde bunlar Settings > Secrets icinden
tanimlanabilir.
Beklenen mantik:
- kullanici X ve Y kolonlarini acikca secer
- kaynak ve hedef sistem secilir
- her satir icin donusum ayri degerlendirilir
Batch sonucu orijinal kolanlara ek olarak sunlari uretir:
Hedef_<X>Hedef_<Y>DurumHata_KoduHata_Mesaji
Bu tasarim sayesinde bozuk satirlar sessizce yutulmaz; ayri olarak isaretlenir.
pytest -qTest kapsami su alanlari icerir:
- tekli donusum davranisi
- batch hata sozlesmesi
- dinamik UTM davranisi
- hata geri bildirimi
- geocode retry mantigi
- sidebar sistem durumu
- ayar normalizasyonu
Secilen yayin hedefi Streamlit Community Cloud.
- Repo'yu GitHub'a push et.
share.streamlit.iouzerinden GitHub hesabini bagla.Create appsec.- Repository olarak bu repo'yu sec.
- Entrypoint file olarak
streamlit_app.pygir. - Gerekirse Python surumunu
Advanced settingsicinden sec. - Deploy et.
Notlar:
- Community Cloud repo kokunden calisir.
requirements.txtrepo kokundedir.- Entrypoint yolu olarak
streamlit_app.pytercih edilmelidir. - Tema ve temel server ayarlari
.streamlit/config.tomlicinde sabitlenmistir.
- Sonuc kalitesi, secilen kaynak CRS'in dogruluguna dogrudan baglidir.
- Grid tabanli yerel donusumlerin tumu her ortamda mevcut olmayabilir.
- Kucuk round-trip hatasi, veri setinin kurumsal/yasal olarak kesin uyumlu oldugu anlamina gelmez.
- Tarayici GPS ve Nominatim geocode ozellikleri yardimci bile sendir; geodezik cekirdekten farkli olarak dis servis bagimliligi tasir.
Asagidaki kaynaklar, bu uygulamanin anlattigi temel kavramlarin bilimsel dayanagini olusturur:
-
Lu, Z., Qu, Y., Qiao, S. Geodesy: Introduction to Geodetic Datum and Geodetic Systems. Springer, 2014. DOI: https://doi.org/10.1007/978-3-642-41245-5
-
Grafarend, E. W., You, R.-J., Syffus, R. Map Projections: Cartographic Information Systems. Springer, 2014. DOI: https://doi.org/10.1007/978-3-642-36494-5
-
Altamimi, Z., Rebischung, P., Metivier, L., Collilieux, X. ITRF2014: A new release of the International Terrestrial Reference Frame modeling nonlinear station motions. Journal of Geophysical Research: Solid Earth, 2016. DOI: https://doi.org/10.1002/2016JB013098
-
Altamimi, Z., Rebischung, P., Collilieux, X., Metivier, L., Chanard, K. ITRF2020: an augmented reference frame refining the modeling of nonlinear station motions. Journal of Geodesy, 2023. DOI: https://doi.org/10.1007/s00190-023-01738-w
-
Watson, G. A. Computing Helmert transformations. Journal of Computational and Applied Mathematics, 2006. DOI: https://doi.org/10.1016/j.cam.2005.06.047
-
Featherstone, W. E., Claessens, S. J. Closed-form transformation between geodetic and ellipsoidal coordinates. Studia Geophysica et Geodaetica, 2008. DOI: https://doi.org/10.1007/s11200-008-0002-6
-
Karney, C. F. F. Algorithms for geodesics. Journal of Geodesy, 2013. DOI: https://doi.org/10.1007/s00190-012-0578-z
-
Smith, W. H. F. Direct conversion of latitude and height from one ellipsoid to another. Journal of Geodesy, 2022. DOI: https://doi.org/10.1007/s00190-022-01608-x
Bu uygulamanin hesap cekirdegi su yazilimlara dayanir:
- PROJ: DOI: https://doi.org/10.5281/zenodo.14253019
- pyproj 3.7.1: DOI: https://doi.org/10.5281/zenodo.14876934
Bu README, projeyi hem kullaniciya hem de teknik denetim yapan bir kisinin gozune hitap edecek sekilde hazirlandi. Amac yalnizca "nasil calisir?" sorusuna degil, "neden boyle calisir?" sorusuna da acik cevap verebilmektir.