GeoJSON Türündeki OpenStreetMap Verilerini Overpass ile Elde Etme

Bilindiği üzere OpenStreetMap gönüllüler tarafından inşa edilen bir haritaya sahip. Aynı zamanda bu inşa edilen veriler daha sonra kullanıma uygun olabilecek şekilde tasnif edilmekte. Bu yazıda OpenStreetMap verilerini elde edip kullanmayı elimden geldiğince anlatacağım.

OpenStreetMap’te yer alan verileri GeoJSON formatında kullanmayı anlatacağım için eğer daha önce GeoJSON formatı hakkında bilgi sahibi değilseniz, bunu anlattığım yazıma göz atabilirsiniz.

GeoJSON hakkında fikrimiz varsa, artık bu verileri elde edeceğimiz kaynağı incelemeye geçebiliriz.

OSM Overpass API Nedir?

OSM Overpass API, OpenStreetMap üzerinde yer alan verileri filtreleyerek belli bir bölgede yer alan, belli niteliklere sahip olan veriler şeklinde elde etmek amacı ile kullanıma sunulmuştur. Overpass API’ı kullanmak için farklı yöntemler mevcut, ben bu yazıda kendi kullandığım yöntem olan tarayıcı arayüzü olan overpass turbo aracılığı ile elde etmeyi anlatacağım.

Overpass turbo’nun erişim adresi: https://overpass-turbo.eu/

Overpass turbo’ya ilk girdiğimizde bizi karşılayan arayüz şu şekildedir:

Solda yer alan metin editörü, çekeceğimiz veriler için filtre edilmiş sorguları gireceğimiz alan olmakla beraber sağda yer alan haritada bu verileri görüntüleme imkanı bulacağız. Bu şekilde verileri edinmeden evvel görüntüleyerek doğru veriyi elde edip etmediğimizi öğrenme imkanı buluruz.

Overpass sorguları için detaylı bilgi için wiki.openstreetmap.org adresinden detaylı bilgiye ulaşmak mümkün. Bu yazıda tüm ham bilgiye yer vermeden işe yarayacak bazı uygulamalara dönük anlatım yer alacak.

Overpass turbo aynı zamanda bir sorgu sihirbazına da sahiptir. Bu sorgu sihirbazı basit sorgular için faydalı olabilmektedir.

Bu sihirbazda “tourism=museum in Vienna” örnek aramasını yaptığınızda Viyana’da yer alan müze verilerini elde edebilirsiniz. Ancak bu sihirbaz üzerinde çok fazla durmayacağım.

Dediğim gibi bu yazı balık tutmayı öğretmekten ziyade mimarlık ya da şehir plancılığı gibi alanlardan kişilere (daha çok öğrencilere) balık vermeyi hedeflemekte. Bu sebeple, uygulamalı kısımlara hızlıca geçeceğim.

Overpass Turbo Örnek Sorguları

Mahalle Sınırlarını Elde Etmek

Örnek olarak Antalya’da yaşadığım Altınkum Mahallesi’nin sınırlarını belirten veriyi nasıl elde edebileceğimizi göstereceğim. Öncelikle Overpass API, OpenStreetMap üzerine inşa edildiği için bu sorguları yaparken bir yandan da OpenStreetMap yan sekmede açık duracaktır.

OpenStreetMap üzerinde Altınkum mahallesi diye aradığımızda şu sonuçlar önümüze gelmekte:

Bu sonuçlardan ilki benim ilgilendiğim Altınkum Mahallesi olduğu için bu sonuca tıklıyorum.

Bu ekranda OpenStreetMap üzerindeki yer alan Altınkum Mahallesi’ni tanımlayan verileri bulabilmekteyiz.

Şu an için ilgimizi çekecen iki bilgi var, bunlardan birincisi ilişki kimliği. Bu kimlik bilgilerin en üstünde mahalle adının yanında parantez içinde yer almakta. Örn: İlişki: Altınkum Mahallesi (9223761)

Bir diğer bilgi ise isim etiketi. Etiketler altında yer alan tabloda name kısmının yanında kalan kısım hangi isimle erişebileceğimizi tanımlamakta.

addr:cityAntalya
addr:districtKonyaaltı
admin_level8
boundaryadministrative
nameAltınkum Mahallesi
typeboundary

Burada yer alan admin_level ve diğer etiketler de daha sonra kullanacağımız bilgilerden.

[out:json][timeout:250];
(
  relation["type"="boundary"](9223761);
  area[name="Altınkum Mahallesi"];
);
out body;
>;
out skel qt;

Yukarıda yer alan kod bloğunu, overpass turbo arayüzündeki metin editörüne yapıştırıp sorguyu yürüttüğümüzde, tıpkı az önce OpenStreetMap’te olduğu gibi bir haritayla karşılaşacağız.

Bu kod bloğunda yer alan relation["type"="boundary"](9223761); satırı, haritada yer alan mahalleyi tanımlayan noktayı ifade etmekte. area[name="Altınkum Mahallesi"]; satırı ise mahalleyi tanımlayan alanı gösteren polygonu ifade etmekte. Bu satırlarda yer alan tanımlayıcı bilgiler az önce bahsettiğimiz ilişki kimliği ve isim etiketi ile filtrelenmekte olduğunu fark etmişsinizdir, etmediyseniz de etmeniz gerekmekte.

Artık Altınkum Mahallesine ilişkin nokta ve sınır bilgilerini rahatlıkla elde edebileceğiz. Bunun için overpass turbo arayüzündeki araç çubuğunda yer alan export seçeneğine tıklamak yeterli.

Export penceresinde görüldüğü üzere, overpass turbo haritasında yer alan verileri, GeoJSON, GPX, KML formatlarında ya da ham OSM verisi olarak elde edebilmekteyiz. En başından beri belirttiğim üzere ben GeoJSON formatındaki verilerle ilgileniyorum. copy yazısına tıkladığımda bu verileri direkt kopyalamış olacağım.

Altınkum Mahallesi’ni tanımlayan GeoJSON verileri:

{
  "type": "FeatureCollection",
  "generator": "overpass-ide",
  "copyright": "The data included in this document is from www.openstreetmap.org. The data is made available under ODbL.",
  "timestamp": "2021-02-02T07:02:02Z",
  "features": [
    {
      "type": "Feature",
      "properties": {
        "@id": "node/6212987028",
        "@relations": [
          {
            "role": "label",
            "rel": 9223761,
            "reltags": {
              "addr:city": "Antalya",
              "addr:district": "Konyaaltı",
              "admin_level": "8",
              "boundary": "administrative",
              "name": "Altınkum Mahallesi",
              "type": "boundary"
            }
          }
        ]
      },
      "geometry": {
        "type": "Point",
        "coordinates": [
          30.6345044,
          36.8668189
        ]
      },
      "id": "node/6212987028"
    }
  ]
}

Yukarda yer alan kod bloğunda sadece mahalleyi tanımlayan noktaya ait veriler yer almakta. Alanı tanımlayan sınır bilgisi oldukça fazla nokta içerdiği için kalabalık yapmaması adına kaldırdım.

Bu verilerin yer aldığı overpass turbo kaydına buradan erişebilirsiniz.

Veri sorgusu yapmayı ve bu sorgudan elde edilen verileri dışarı aktarmayı öğrendiğimize göre, vereceğim diğer balıklara geçebiliriz.

Mahallede Yer Alan Yapıları Elde Etme

Altınkum Mahallesi sınırları içerisinde yer alan ve OpenStreetMap’te mevcut olan yapı verilerini elde etmek istediğimizde karşımıza çıkacak sonuç:

Bu sonucun sorgusuna buradan ulaşabilirsiniz.

Mahallede Yer Alan Yolları Elde Etme

Altınkum Mahallesi sınırları içerisinde yer alan ve OpenStreetMap’te mevcut olan yol verilerini elde etmek istediğimizde karşımıza çıkacak sonuç:

Bu sonucun sorgusuna buradan ulaşabilirsiniz.

İlde Yer Alan İlçeleri Elde Etme

İstanbul ili sınırları içerisinde yer alan ve OpenStreetMap’te mevcut olan ilçe verilerini elde etmek istediğimizde karşımıza çıkacak sonuç:

Bu sonucun sorgusuna buradan ulaşabilirsiniz.

İlde Yer Alan Mahalleleri Elde Etme

İstanbul ili sınırları içerisinde yer alan ve OpenStreetMap’te mevcut olan mahalle verilerini elde etmek istediğimizde karşımıza çıkacak sonuç:

Bu sonucun sorgusuna buradan ulaşabilirsiniz.

İlde Yer Alan Park ve Ormanları Elde Etme

İstanbul ili sınırları içerisinde yer alan ve OpenStreetMap’te mevcut olan orman ve park verilerini elde etmek istediğimizde karşımıza çıkacak sonuç:

Bu sonucun sorgusuna buradan ulaşabilirsiniz.

İlçede Yer Alan Park ve Ormanları Elde Etme

Pendik ilçesi sınırları içerisinde yer alan ve OpenStreetMap’te mevcut olan park ve orman verilerini elde etmek istediğimizde karşımıza çıkacak sonuç:

Bu sonucun sorgusuna buradan ulaşabilirsiniz.

Mahallede Yer Alan Okulları Elde Etme

Pendik ilçesindeki Yenişehir Mahallesi sınırları içerisinde yer alan ve OpenStreetMap’te mevcut olan okul verilerini elde etmek istediğimizde karşımıza çıkacak sonuç:

Bu sonucun sorgusuna buradan ulaşabilirsiniz.

Mahallede Yer Alan İbadethaneleri Elde Etme

Pendik ilçesindeki Yenişehir Mahallesi sınırları içerisinde yer alan ve OpenStreetMap’te mevcut olan ibadethane verilerini elde etmek istediğimizde karşımıza çıkacak sonuç:

Bu sonucun sorgusuna buradan ulaşabilirsiniz.

Mahallede Yer Alan Parkları Elde Etme

Pendik ilçesindeki Yenişehir Mahallesi sınırları içerisinde yer alan ve OpenStreetMap’te mevcut olan park verilerini elde etmek istediğimizde karşımıza çıkacak sonuç:

Bu sonucun sorgusuna buradan ulaşabilirsiniz.

Örnekleri şimdilik bunlarla sınırlı tutmayı düşünüyorum. Bir sonraki yazıda elde ettiğimiz bu verileri nasıl vektör tabanlı görsellere dönüştürebileceğimizi anlatmayı planlıyorum.

Yorumlar

“GeoJSON Türündeki OpenStreetMap Verilerini Overpass ile Elde Etme” için 2 cevap

  1. Ayşe avatarı
    Ayşe

    Merhaba, Ellerinize sağlık harika veriler. İlçe ve mahalle maplerini birleştirme işlemini nasıl yapabiliriz?

    1. cakirefekan avatarı

      merhaba ilginiz için teşekkürler. pendik ve pendik’in yenişehir mahallesinde yer alan okulların bir arada yer aldığı sorguya buradan ulaşabilirsiniz.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir