Skip to content

Afet toplanma alanları / Disaster assembly points - #23

Open
Proxy34 wants to merge 3 commits into
schematrix:mainfrom
Proxy34:toplanma
Open

Proxy34 wants to merge 3 commits into
schematrix:mainfrom
Proxy34:toplanma

Conversation

@Proxy34

@Proxy34 Proxy34 commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

Closes #22

Ana sayfaya "Toplanma Alanları" sayfası: mahalle, ilçe, il ya da alan adıyla internetsiz arama, her sonuçta "Haritada aç" (telefonun harita uygulaması).

  • Veri AFAD'ın resmi listesi: AFAD'ın "Açık Veri" olarak yayımladığı "Acil Durum Toplanma Alanları" katmanı, 81 ilde 33.279 alan. Veriyi ben derledim; koordinatlar bağımsız örneklerle karşılaştırıldı, ortanca sapma ~5 m. data/toplanma-afad.json bu katmanın 03.11.2026 tarihli kopyası. Açıklama alanı alınmadı, çünkü bazılarında personel adı, cep telefonu ve parsel sahibi yazıyor; AFAD'ın kendi "test" kayıtları da çıkarıldı.
  • sudo ./scripts/toplanma.py guncelle listeyi kutuya yazar. OpenStreetMap'ten her alana en yakın mahalle ve ilçe adını ekler; OSM'deki toplanma noktalarından AFAD'da 50 m içinde karşılığı olmayan ~200 tanesini de katar. Kutudaki dosya ~4,5 MB; sayfa her açılışta sadece değişip değişmediğini sorar, değişmediyse yeniden indirmez.
  • En yakın alanlar, dokunmadan: kutu sahibi kurulumda kutunun durduğu yeri bir kez kaydeder (sudo ./scripts/toplanma.py konum 37.5753 36.9228). Kutunun Wi-Fi'ı birkaç on metre çektiği için bağlanan kişi zaten kutunun yanındadır; sayfa açılır açılmaz en yakın 10 alan km ile en üstte görünür. Panik anında yazmak ya da kopyalamak gerekmez. Kutu HTTP üzerinden çalıştığı için tarayıcılar sayfaya konum izni vermiyor; bu yüzden kişinin konumu yerine kutunun konumu kullanılıyor.
  • Kutudan uzaktaki biri telefonun harita uygulamasından konumunu kopyalayıp yapıştırabilir ("37.5753, 36.9228", "37,5753 36,9228" ya da harita bağlantısı). Enlem ve boylam ters girilirse fark edilsin diye sayfa konumu nasıl okuduğunu yazar.
  • "Haritada aç" Android'de geo: bağlantısıyla, iPhone ve Mac'te Apple Haritalar ile açılır (Safari geo: açmıyor). Harita uygulaması alanı ve kişinin kendi konumunu birlikte gösterir.
  • OpenStreetMap'e ulaşılamazsa eski liste korunur. Kutuda hiç liste yoksa AFAD listesi mahalle adları olmadan yine yazılır.
  • Kutu sahibi kendi alanlarını ekleyebilir: sudo ./scripts/toplanma.py ekle "Okul bahçesi" 37.5753 36.9228. Eklenenler aramadan bağımsız hep en üstte, sarı görünür; liste / sil ile yönetilir.
  • Güncelleme: Kaynak giriş istediği için kutu bu listeyi kendisi çekemez. Liste ara ara elle yenilenip PR olarak gönderilecek: ./scripts/toplanma.py afad DOSYA.json yeni kopyayı yazar ve eklenen, silinen, değişen alan sayısını söyler. Dosyada satır başına bir alan var, böylece PR farkında neyin değiştiği görünür.
  • Sayfa listenin hangi tarihin kopyası olduğunu yazıyor.

Test: Debian 13 + IIAB sanal makinesi. Gerçek OpenStreetMap indirmesiyle 33.498 alan yazıldı (33.279 AFAD, 219 OSM). OSM'ye ulaşılamadığında eski liste varken ve yokken iki durum da denendi. Tarayıcıda "onikisubat", "antakya", "cankaya", "adapazari" aramaları doğru il ve ilçedeki alanları getiriyor; arama tuş başına ~5 ms. Kayıtlı kutu konumuyla sayfa en yakın alanları kendiliğinden gösteriyor; konum yapıştırınca onun yerine geçiyor, silince geri dönüyor. En yakın alanlar Kahramanmaraş, Antakya ve Gaziantep konumlarıyla ve farklı yapıştırma biçimleriyle denendi (hesap ~14 ms); 390 px telefon görünümünde kontrol edildi. Android 14 emülatöründe (Chrome + Google Haritalar): sayfa en yakın alanlarla açılıyor, "Haritada aç" Google Haritalar'ı alanın adıyla iğneli açıyor, kişinin konumu mavi noktayla görünüyor ve yol tarifi çalışıyor; telefonun interneti kapalıyken de bağlantı haritayı açıyor. iPhone'da bağlantının doğru üretildiği kontrol edildi, gerçek cihazda denenmedi.


An "Assembly points" page searchable offline by neighbourhood, district, province or name, with a "Haritada aç" geo: link per result.

The data is AFAD's official list: the "Acil Durum Toplanma Alanları" layer AFAD publishes as open data ("Açık Veri"), 33,279 areas in all 81 provinces. I compiled it; coordinates were checked against independent samples (median deviation ~5 m). data/toplanma-afad.json is a copy dated 2026-11-03. Descriptions are left out because some contain staff names, phone numbers and parcel owners; AFAD's own "test" entries are dropped.

toplanma.py guncelle writes the list to the box (~4.5 MB), tags each point with the nearest OpenStreetMap neighbourhood and town, and adds the ~200 OSM assembly points that have no AFAD match within 50 m. The page revalidates the file instead of downloading it on every visit. If OSM is unreachable the old list is kept; on a box with no list yet, the AFAD list is written without neighbourhood names. Box owners can still add their own points with toplanma.py ekle; those always show on top.

The box owner saves where the box stands once (toplanma.py konum LAT LON). The box's Wi-Fi reaches only a few dozen metres, so the page opens with the 10 nearest points already listed, with nothing to type in a panic; the box is plain HTTP, so browsers refuse the geolocation API and the box's location stands in for the user's. Someone elsewhere can paste a location from the phone's map app; the page echoes how it read the coordinates so swapped values are noticed. "Haritada aç" uses a geo: link on Android and Apple Maps on iPhone/Mac, where Safari doesn't open geo:.

The source needs a login, so the box can't fetch the list itself. The copy will be refreshed by hand from time to time and sent as a PR: toplanma.py afad FILE.json writes it and prints how many points were added, removed or changed; one point per line keeps the diff readable.

Tested in a Debian 13 + IIAB VM with a real OSM download, both OSM-unreachable cases, and searches in a browser; on an Android 14 emulator (Chrome + Google Maps) the page opens with the nearest points, "Haritada aç" opens Google Maps with the named pin next to the user's blue dot, also with the phone offline. The iPhone link was checked as generated, not on a device.

Firewall (Proxy34)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Afet toplanma alanları / Disaster assembly points

1 participant