Saya mencoba untuk mendapatkan KML file ( wijken.kml ) ke Shapely . File KML divalidasi terhadap skema XML yang tepat, jadi saya kira input sudah benar.
Rute yang saya coba:
1) Konversi ke format WKT atau WKB, dan membaca dengan fungsi built in
Konversi:
ogr2ogr -f CSV wijken.csv wijken.kml -lco GEOMETRY=AS_WKT
ogr2ogr -f SQLite wijken.wkb wijken.kml
Dalam bentuk:
from shapely import wkt, wkb
f = open('../kml/wijken.wkb')
wkb.load(f)
Yang memberi (sama untuk wkt()
):
ReadingError: Could not create geometry because of errors while reading input.
Karena tidak memberikan info lebih lanjut, dan kode Python membungkus perpustakaan lain (C?), Saya tidak tahu apa yang salah dengan format. File CSV berisi banyak kolom, mungkin ada yang salah di sana, tetapi saya belum menemukan contoh WKT online yang dapat diuji.
2) Konversi ke GeoJSON dan menggunakan membangun di Shapely asShape
fungsi
ogr2ogr2 -f GeoJSON wijken.json wijken.kml
Dalam Bentuk:
import json
from shapely.geometry import asShape
f = open('wijken.json', 'r')
js = json.load(f)
f.close()
asShape(js)
Pemberian yang mana:
ValueError: Unknown geometry type: featurecollection
Kesalahan ini sama dengan contoh GeoJSON yang minimal dan valid. Melihat kode Shapley, masalahnya adalah tipe GeoJSON dasar seperti "Fitur" dan "FeatureCollection" tidak dikenali. Tidak jelas rute mana yang harus diambil untuk mendapatkan dari fitur GeoJSON ke fitur yang dimengerti oleh Shapely.
3) Baca dalam KML dengan fastkml , yang mengembalikan objek Shapely
Ini berfungsi, tetapi tampaknya kehilangan properti / nilai ExtendedData di KML (atau setidaknya tidak meneruskannya ke objek Shapely).
Saya merasa bahwa saya kehilangan sesuatu, tidak mungkin begitu sulit untuk mendapatkan data ke Shapely. Bisakah seseorang mengarahkan saya ke solusi yang paling kuat / bekerja?