Ваша попытка создать унарный союз разделяет разницу между двумя способами, которые работают. То, как вы пытались выбрать два полигона (dfff["geometry"][1:2]
и dfff["geometry"][2:3]
), на самом деле возвращает пару GeoSeries
(которая содержит некоторую последовательность shapely
геометрий), поэтому вы передаете unary_union
список GeoSeries
, тогда как функция unary_union
в shapely
ожидает список shapely
геометрий. Вы могли бы сделать:
polygons = [dfff.iloc[1, "geometry"], dfff.iloc[2, "geometry"]]
boundary = unary_union(polygons)
Тем не менее, GeoSeries
предоставляют собственный метод unary_union
, который просто вызывает shapely.ops.unary_union
, но делает это над GeoSeries
объектами. Так что более простой способ получить унарный союз:
boundary = dfff["geometry"][1:3].unary_union
Это также гораздо проще распространяется на более длинный список полигонов.