Chuyển đổi GeoJSON sang các đối tượng Python? [đóng cửa]


24

Mới đối với trang web, và với GeoJSON và python.

Mục tiêu của tôi là đọc trong một tệp có dữ liệu GeoJSON và sử dụng nó để tạo các hình dạng được sử dụng trong một ứng dụng đang sử dụng kịch bản python. Python có khả năng đọc nó và thực hiện một số thao tác. Tôi đã tìm thấy một số ví dụ, nhưng chúng không đi qua hệ thống phân cấp GeoJSON một cách chính xác.

Tôi đang tìm kiếm một thư viện hoặc hướng dẫn về cách trích xuất dữ liệu hình học từ tệp dữ liệu GeoJSON. Nói cách khác, tôi muốn có thể nói "lấy danh sách các tính năng ..." - sau đó, với mỗi tính năng, tôi muốn lấy hình học, đọc loại và lấy tọa độ cho mục hình học cụ thể đó. Lặp lại cho mỗi mục trong danh sách các tính năng.

Bất kỳ đề xuất?

Câu trả lời:


37

Khi bạn tải tệp GeoJSON bằng jsonthư viện, bạn sẽ nhận được một tệp dictchứa mục nhập featureschứa danh sách các tính năng. Mỗi tính năng lần lượt bao gồm một dict, trong đó, trong số những thứ khác, có chứa một mục geometry. Đây geometrylà một dictchứa các mục typecoordinates. Vì vậy, bạn có thể duyệt qua tệp GeoJSON của mình như thế này:

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']

Đề nghị tuyệt vời. Điều này dễ dàng hơn nhiều so với những gì tôi đã cố gắng làm. Tôi đã cần phải thay đổi tải thành tải và numpy không phải là một thư viện trong bản cài đặt python hiện tại của tôi. Cảm ơn đã trả lời nhanh chóng. Tôi sẽ có thể đi tiếp bây giờ.
Mike Weber

1
Numpy không cần thiết về mặt kỹ thuật. tính năng ['hình học'] ['tọa độ'] (ở trên) chỉ là một danh sách Python.
sgillies

@sgillies: Điểm tốt, Sean. Tôi đã loại bỏ việc sử dụng numpyđể tránh nhầm lẫn.
Jake

7

PyGeoj của tôi đặc biệt có nghĩa là một trình đọc và ghi tệp Geojson, với một API đơn giản biến nội dung tệp thành các đối tượng với các thuộc tính, vì vậy bạn không phải trực tiếp xử lý từ điển. Nó cũng có một số phương thức tiện lợi, như tính toán và thêm hộp cho toàn bộ bộ sưu tập tính năng hoặc chỉ cho từng tính năng.

Vì vậy, ví dụ, đoạn mã sau sẽ làm những gì người đăng yêu cầu:

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

Thư viện cũng có thể nhập và xuất các đối tượng từ / đến các thư viện khác thông qua _geo_interface_giao thức, trong số những thứ khác như được thấy trong tài liệu trên trang Github của dự án.


thư viện của bạn rất tuyệt, tôi mới bắt đầu sử dụng nó hôm nay
ngoằn ngoèo

Nếu tôi muốn bắt đầu thực hiện lập bản đồ web với phân tích cú pháp python, phần mềm tốt nhất để sử dụng là gì?
ngoằn ngoèo

1
Đối với ứng dụng web hoạt động với GeoJson, hãy sử dụng thư viện javascript của Leaflet. Dưới đây là một chủ đề ví dụ hay: gis.stackexchange.com/questions/68361/ gợi ý
Cho nhận xét

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.