KMLファイル(wijken.kml)をShapelyに取得しようとしています。KMLファイルは適切なXMLスキーマに対して検証されるので、入力は正しいと思います。
私が試したルート:
1)WKTまたはWKB形式に変換し、組み込み関数で読み込む
変換:
ogr2ogr -f CSV wijken.csv wijken.kml -lco GEOMETRY=AS_WKT
ogr2ogr -f SQLite wijken.wkb wijken.kml
形に:
from shapely import wkt, wkb
f = open('../kml/wijken.wkb')
wkb.load(f)
これは(と同じwkt()
)を与えます:
ReadingError: Could not create geometry because of errors while reading input.
それはそれ以上の情報を提供せず、Pythonコードは他の(C?)ライブラリをラップするため、フォーマットの何が問題なのかわかりません。CSVファイルには複数の列が含まれていますが、おそらくそこに何か問題がありますが、テストできる同等のオンラインWKTの例が見つかりません。
2)GeoJSONに変換し、Shapely asShape
関数でビルドを使用する
ogr2ogr2 -f GeoJSON wijken.json wijken.kml
形に:
import json
from shapely.geometry import asShape
f = open('wijken.json', 'r')
js = json.load(f)
f.close()
asShape(js)
それは与える:
ValueError: Unknown geometry type: featurecollection
このエラーは、最小限の有効なGeoJSONの例でも同じです。Shapleyコードを見ると、問題は「Feature」や「FeatureCollection」などの基本的なGeoJSONタイプが認識されないことです。GeoJSONの機能からShapelyが理解できる機能にたどり着くためのルートは明確ではありません。
3)とKMLで読み出さfastkml格好の良いオブジェクトを返し、
これは機能しますが、KMLのプロパティ/ ExtendedData値が失われるようです(または少なくともShapelyオブジェクトに渡されません)。
何か不足しているように感じます。Shapelyにデータを取り込むのはそれほど難しくありません。誰かが私を最も堅牢で実用的なソリューションに向けることができますか?