Объединение шейп-файлов полигонов в Python - PullRequest
2 голосов
/ 05 апреля 2020
Сценарий

My python3 создал переменную geometries_list, значение которой представляет собой список шейп-файлов, каждый полигон представляет собой географическую область c

[<shapefile.Shape at 0x7f060abfae48>,
 <shapefile.Shape at 0x7f05dcaf1cc0>,
 <shapefile.Shape at 0x7f060a86b278>,
 <shapefile.Shape at 0x7f05da470668>]

Я хочу "объединить" полигоны. Я попробовал следующий код

from functools import reduce
from shapely.geometry import Polygon
union = reduce(lambda x,y: x.union(y), geometries_list) 

, но он дает результат: AttributeError: у объекта 'Shape' нет атрибута 'union'

Я вижу другой метод, который включает создание объекта shapefilewriter и последовательная перезапись каждого многоугольника в списке https://gis.stackexchange.com/questions/103033/using-pyshp-to-merge-two-shapefiles Этот подход может работать, но каждая перезапись сохраняется на диске

1 Ответ

0 голосов
/ 08 апреля 2020

Возможно, стоит упомянуть, что shapely.ops.unary_union - более эффективный метод объединения фигур.

Вы можете конвертировать shapefile.Shape объекты в shapely.Polygon объекты через их Geo JSON представление и объединить их следующим образом.

from shapely.geometry import shape
from shapely.geometry.ops import unary_union

union = unary_union([shape(s.__geo_interface__) for s in geometries_list])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...