oniki maymun

İstanbul ork haritası

Trafik yazısından sonra ne yapsam diye bakınırken, ilk yazıda bahsettiğim nüfus yoğunluğu haritasına tekrar bulaşmaya karar verdim. Bahsettiğim haritaya nokta haritası (dotmap) ismini vermişler. Aşağıda bir resmini görüyorsunuz:

Yapılan şey Amerika'daki tüm yerleşim yerlerinin sınırları içerisine, orada yaşayan insan sayısı kadar nokta çizerek bir harita oluşturmak. Böylece bir bakışta kupon arazileri tespit edebildiklerini iddia ediyorlar. Daha sonra bir de insanları ırkına göre ayıran bir harita yapmışlar. Bunu da Çinli dövmek gerektiğinde kullanıyorlarmış diye duydum.

Haritayı üreten kaynak kodunu da paylaştıkları için ben de önce nüfus yoğunluğu, daha sonra da seçim sonuç verilerini kullanarak benzer bir harita oluşturayım dedim. Seçim verilerini daha önce indirmiş olduğumdan, nokta haritasını oluşturabilmek için ilk aşamada iki eksiğim var.

1. Nüfus verisi

İlk eksik nüfus verisi ve önce hazıra konma yöntemi ile şansımı deneyeceğim. Hayat çok kısa çünkü. Blog için sağda solda veri ararken öğrendiğim şeylerden bir tanesi, Türk interneti denen çölde veri ararken sadece Google araması ile yetinmemek gerektiği oldu. Veri arayacaksanız twitter ve github'da da arayın. YSK'nın sitesinden sandık bazında seçim verilerini indirmek, sonra bir de indirdiğim dosyaları ayıklayıp birleştirmek için onca uğraştıktan sonra laf olsun diye twitter'da 'sandık verileri' diye bir arama yapmış ve uğraştığım şeyin seçimlerden iki gün sonra paylaşıldığını görmüştüm. Bu sefer aramaya twitter ve github ile başlayıp Google ile sonlandırdım ve kimsenin nüfus verisini paylaşmadığından emin oldum.

Kimse paylaşmadığı için mecburi istikamet Türkiye İstatistik Kurumu (TÜİK) web sitesi. Adrese Dayalı Nüfus Kayıt Sistemi (ADKNS) verileri TÜİK'in sitesinde mevcut. Mevcut ama indirebilene madalya takıyorlar. Veri indirirken -ki kendisi bir istatistik kurumu web sitesinin temel işlevlerinden birisidir- saç baş yolmanız garanti. Neyse ki YSK'nın sitesinden tecrübeliyim ve insanlıktan çıkmadan istediğim verileri indirmeyi başardım (ayrıntılar için ilk yazıya bakabilirsiniz). Benden sonrakiler hazıra konabilsin diye de birleştirip düzenlediğim dosyaları github'da paylaştım.

2. Tüm Türkiye için mahalle/köy sınırları

Diğer eksik mahalle/köy sınırları verisi. Mahalle sınırları verisini daha önce de aramış ve bulamamıştım. Ayıklanmış hazır bir dosya yok ama aradan geçen zamanda ilceharitasi.com ve Milliyet Emlak sitelerini gözüme kestirmiştim. İki sitede de ilçe seçip mahalleleri harita üzerinde görebiliyorsunuz. Biraz kurcalayınca da bir bakmışsınız mahalle sınırları verisini JSON formatında indirmişsiniz.

İki site de ilk bakışta tüm Türkiye için veri sunuyor gibi gözükse de İstanbul dışındaki diğer illerin verisi sorunlu. Çoğu yerde sadece şehir merkezleri için veri var ve taşraya gidildikçe ya hiç birşey yok ya da sınırlar tamamen yalan. Bu da demek oluyor ki haritayı sadece İstanbul için çizdirebileceğim...

Harita

Gerekli veriyi toparladıktan sonra sırada RacialDotMap repo'sundaki kodu incelemek var. Haritayı üreten kodu çalıştıramayacaksam elimde veri olması bir işe yaramayacak. Öncelikle gereksinimlere bakalım:

  • Linux
  • Java
  • Python
  • Processing
  • GDAL
  • SQLite
  • Bol bol disk alanı ve RAM

Çüş. Ben bu konfigürasyonu kurana kadar iki seçim bir de nüfus sayımı olur. Alt tarafı poligon içine nokta çiziyoruz. O kadar basit olmasa da özetle aşağıdaki adımlar uygulanıyor:

  • Her yerleşim yeri (mahalle/köy) için:
    • Sınırları kapsayan dikdörtgeni (bounding box) bul
    • Yerleşim yeri içindeki tüm popülasyona ulaşıncaya kadar
      • Bounding box içerisinde rasgele bir koordinat üret
      • Üretilen koordinat sınır poligonu içerisinde değil ise yeni bir rasgele koordinat üret.
      • Üretilen koordinat sınır poligonu içerisinde ise nokta listesine ekle.
  • Nokta listesini sıraya diz.
  • Listedeki noktaları uygun tile'lara çiz.
  • Her tile'ı uygun isimle kaydet.

Bu adımların hepsini, herhangi başka bir gereksinim olmadan C# ile kodlayabilirim diye kendi kendimi gaza getirdikten sonra işe koyuldum. Sonuçta ortaya çıkan haritaları aşağıda görebilirsiniz. Kurcalayabileceğiniz haline erişmek için tıklayın.

İstanbul nüfus yoğunluğu (2014 ADKNS)
İstanbul genel seçim sonuçları (7 haziran 2015)

Başlangıçtaki niyetim algoritmadaki tüm adımları açıklamaktı, ancak sonra neden uğraşıyorum diye düşündüm. Burayı okuyanlar haritacılığı benden öğrenecek değil, koda bakmayı veya doğrudan çalıştırmayı tercih ederler bence - ben olsam öyle yapardım. O yüzden kısa kesiyorum ama merak eden olursa (ve sorarsa) ayrıntıya girebilirim.

Sevgiler.