Sử dụng rasterio của Sean Gillies. Nó có thể dễ dàng kết hợp với Fiona (đọc và viết shapefiles) và tạo hình của cùng một tác giả.
Trong kịch bản rasterio_polygonize.py
bắt đầu là
import rasterio
from rasterio.features import shapes
mask = None
with rasterio.drivers():
with rasterio.open('a_raster') as src:
image = src.read(1) # first band
results = (
{'properties': {'raster_val': v}, 'geometry': s}
for i, (s, v)
in enumerate(
shapes(image, mask=mask, transform=src.affine)))
Kết quả là một trình tạo các tính năng của GeoJSON
geoms = list(results)
# first feature
print geoms[0]
{'geometry': {'type': 'Polygon', 'coordinates': [[(202086.577, 90534.3504440678), (202086.577, 90498.96207), (202121.96537406777, 90498.96207), (202121.96537406777, 90534.3504440678), (202086.577, 90534.3504440678)]]}, 'properties': {'raster_val': 170.52000427246094}}
Rằng bạn có thể biến thành hình học hình dạng
from shapely.geometry import shape
print shape(geoms[0]['geometry'])
POLYGON ((202086.577 90534.35044406779, 202086.577 90498.96206999999, 202121.9653740678 90498.96206999999, 202121.9653740678 90534.35044406779, 202086.577 90534.35044406779))
Tạo geopandas Dataframe và cho phép dễ dàng sử dụng các chức năng tham gia không gian, vẽ đồ thị, lưu dưới dạng Geojson, ESRI shapefile, v.v.
geoms = list(results)
import geopandas as gp
gpd_polygonized_raster = gp.GeoDataFrame.from_features(geoms)