GeoJSON'u Python nesnelerine dönüştürme? [kapalı]


24

Sitede yeni, geoJSON ve python için.

Amacım geoJSON verilerinin bulunduğu bir dosyayı okumak ve python komut dosyası kullanan bir uygulamada kullanılacak şekiller oluşturmak için kullanmak. Python'un okuma ve bazı manipülasyonlar yapma kabiliyeti var. Bazı örnekler buldum, ancak geoJSON hiyerarşisini doğru şekilde geçmiyorlar.

GeoJSON veri dosyasından geometri verilerinin nasıl çıkarılacağı hakkında bir kütüphane veya talimatlar arıyorum. Başka bir deyişle, "özelliklerin listesini al ..." diyebilmek istiyorum - o zaman, özelliklerin her biri için, geometriyi almak, türünü okumak ve koordinatları almak istiyorum. o belirli geometri maddesi. Özellikler listesindeki her öğe için tekrarlayın.

Baska öneri?

Yanıtlar:


37

jsonKütüphaneyi kullanarak bir GeoJSON dosyası yüklediğinizde , özellikler listesini dictiçeren bir girdi içeren bir dizin alırsınız features. Her özellik sırayla, dictdiğer şeylerin yanı sıra bir girdi içeren bir oluşur geometry. geometryBir olan dictgirdileri içeren typeve coordinates. Böylece GeoJSON dosyanızı şu şekilde değiştirebilirsiniz:

import json

with open('test.json') as f:
    data = json.load(f)

for feature in data['features']:
    print feature['geometry']['type']
    print feature['geometry']['coordinates']

Mükemmel öneri. Bu yapmaya çalıştığımdan çok daha kolaydı. Yükü yük olarak değiştirmem gerekti ve numpy mevcut python kurulumumda bir kütüphane değil. Hızlı cevap için teşekkürler. Şimdi devam edebileceğim.
Mike Weber

1
Numpy teknik olarak gerekli değil. özellik ['geometri'] ['koordinatlar'] (yukarıda) yalnızca bir Python listesidir.
sgillies,

@sgillies: Güzel nokta, Sean. numpyKarışıklığı önlemek için kullanımını kaldırdım .
Jake,

7

Benim lib PyGeoj , özellikle dosya içeriğini niteliklere sahip nesnelere dönüştüren basit bir API ile birlikte bir geojson dosya okuyucusu ve yazıcısı anlamına gelir, bu yüzden sözlüklerle doğrudan uğraşmanıza gerek kalmaz. Ayrıca, özellik koleksiyonunun tamamı veya yalnızca her özellik için bbox'ı hesaplamak ve eklemek gibi bazı kolaylık yöntemlerine sahiptir.

Örneğin, aşağıdaki kod posterin istediği şeyi yapar:

import pygeoj
testfile = pygeoj.load("test.geojson")
for feature in testfile:
    print feature.geometry.type
    print feature.geometry.coordinates

Kütüphane ayrıca _geo_interface_, projenin Github sayfasındaki belgelerde görülen diğer şeylerin yanı sıra , protokol aracılığıyla nesneleri diğer kütüphanelere / protokollerden içeri ve dışarı aktarabilir .


sen kütüphanen harika, sadece bugün kullanmaya başladım
ziggy

Python ayrıştırma geojson ile web haritalaması yapmaya başlamak istersem, kullanılacak en iyi yazılım hangisidir?
ziggy

1
GeoJson ile çalışan web uygulaması için Leaflet javascript kütüphanesini kullanın. İşte güzel bir örnek konu: gis.stackexchange.com/questions/68489/…
Yorum İçin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.