OpenStreetMap (OSM) XML dosyalarını ayrıştıran ve hiyerarşik bir şekilde şehirler ve şehirler için bir veritabanı oluşturan bir komut dosyası yazmak istiyorum.OSM XML gezegen dosyalarından hiyerarşik şehir/eyalet/ülke verilerini nasıl alabilirim?
United Kingdom -> England -> Middlesex -> London -> Soho
çıktı açıklayan bir JSON belge olacaktır:
USA -> California -> San Francisco County -> San Francisco
ve belki İngiltere'de böyle: ABD'de bu gibi görünebilir bir hiyerarşi var çıkan veriler seti istiyorum OSM dosyasındaki tüm şehirler için bir hiyerarşi, yukarıdaki örneklerde olduğu gibi.
Python ve "imposm" ayrıştırıcı kitaplığını kullanıyorum ve dosyayı sorunsuz bir şekilde yükleyip ayrıştırabilirim; Sorunum, OSM verisinin nasıl yapılandırıldığının anlaşılmaması: OSM'nin verisindeki düğümler arasındaki ebeveyn/çocuk ilişkisini nasıl bileceğim. Örneğin, "Soho" için düğümü bulursam, onu "City of Westminster", "Büyük Londra", "Middlesex" ve "İngiltere" düğümlerine nasıl bağlayabilirim?
Bazı düğümler bu bilgilerden bazılarını verebilir bir "is_in" etiketine sahip olduğunu biliyoruzfakat
- A) bu tutarsız ve
- B) bir serbest biçimli metin gibi görünüyor alan, bir OSM düğümüne bir bağlantı değil (ör. is_in: "Westminster Belediyesi" bana Westminster düğümüne herhangi bir bağlantı vermez).
Bu düğümleri hiyerarşik olarak nasıl bağlayacağınız konusunda herhangi bir öneriniz varsa lütfen bana bildirin.
Cevabınız için teşekkürler, Igor. Bu yararlı bir bilgidir ve ihtiyaç duyduğum verileri elde etmek için OSM verilerinin yapısına yeterince güvenemeyeceğim gibi görünüyor. Verilerimi geonames.org gibi bir yerden almaktan daha iyi olacağımı düşünüyorum. – luke
İlgi alanını çevreleyen sınırları olan tüm düğümleri arayamaz mı? Örneğin. Eğer bir sokağınız varsa, şehir, il, ilçe ve ülke gibi bir düğüm bulmalısınız, çünkü sınırları sokakların enlem ve boylam konumunu kuşatır mı? – Tom