Tôi đang cố gắng đưa tệp KML ( wijken.kml ) vào Shapely . Tệp KML được xác thực theo lược đồ XML thích hợp, vì vậy tôi đoán đầu vào là chính xác.
Các tuyến tôi đã thử:
1) Chuyển đổi sang định dạng WKT hoặc WKB và đọc với chức năng xây dựng
Chuyển đổi:
ogr2ogr -f CSV wijken.csv wijken.kml -lco GEOMETRY=AS_WKT
ogr2ogr -f SQLite wijken.wkb wijken.kml
Trong hình dạng:
from shapely import wkt, wkb
f = open('../kml/wijken.wkb')
wkb.load(f)
Mà cho (tương tự cho wkt()
):
ReadingError: Could not create geometry because of errors while reading input.
Vì nó không cung cấp thêm thông tin và mã Python bao bọc các thư viện (C?) Khác, tôi không biết điều gì sai với định dạng. Tệp CSV chứa nhiều cột, có lẽ có gì đó không đúng, nhưng tôi chưa tìm thấy ví dụ WKT trực tuyến có thể so sánh để kiểm tra.
2) Chuyển đổi sang GeoJSON và sử dụng asShape
chức năng xây dựng trong hàm Shapely
ogr2ogr2 -f GeoJSON wijken.json wijken.kml
Trong hình dạng:
import json
from shapely.geometry import asShape
f = open('wijken.json', 'r')
js = json.load(f)
f.close()
asShape(js)
Cung cấp cho:
ValueError: Unknown geometry type: featurecollection
Lỗi này là giống nhau đối với một ví dụ GeoJSON tối thiểu, hợp lệ. Nhìn vào mã Shapley, vấn đề là các loại GeoJSON cơ bản như "Feature" và "FeatureCollection" không được nhận dạng. Không rõ tuyến đường nào cần đi từ các tính năng của GeoJSON đến các tính năng mà Shapely hiểu.
3) Đọc bằng KML với fastkml , trả về các đối tượng Shapely
Điều này hoạt động, nhưng dường như mất các thuộc tính / giá trị ExtendedData trong KML (hoặc ít nhất là không truyền nó cho các đối tượng Shapely).
Tôi cảm thấy mình đang thiếu thứ gì đó, thật khó để lấy dữ liệu vào Shapely. Ai đó có thể chỉ cho tôi hướng tới giải pháp mạnh mẽ nhất / làm việc không?