Создать союз многоугольников в геопандах, или стройного (в одну геометрию)Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Создать союз многоугольников в геопандах, или стройного (в одну геометрию)

Сообщение Anonymous »

Я пытаюсь найти объединение двух многоугольников в геопандах и вывести одну геометрию, которая охватывает точки из обоих полигонов в качестве его вершин. Функция geopandas.overlay дает мне многоугольники для каждого отдельного союза, но я бы хотел один многоугольник. < /p>

Для контекста я использую это для объединения двух административных районов в одну область (то есть включает в себя городской район в стране). < /p>

Следующий пример - с веб -сайта Geopandas и иллюстрирует, что я бы хотел: < /p>

Код: Выделить всё

from matplotlib import pyplot as plt
import geopandas as gpd
from shapely.geometry import Polygon

polys1 = gpd.GeoSeries([Polygon([(0,0), (2,0), (2,2), (0,2)]),
Polygon([(2,2), (4,2), (4,4), (2,4)])])

polys2 = gpd.GeoSeries([Polygon([(1,1), (3,1), (3,3), (1,3)]),
Polygon([(3,3), (5,3), (5,5), (3,5)])])

df1 = gpd.GeoDataFrame({'geometry': polys1, 'df1':[1,2]})
df2 = gpd.GeoDataFrame({'geometry': polys2, 'df2':[1,2]})

res_union = gpd.overlay(df1, df2, how='union')
res_union.plot()
Изображение


None of the output geometries are what I was expected, which is the following:

Код: Выделить всё

poly_union = gpd.GeoSeries([Polygon([(0,0), (0,2), (1,2), (1,3), \
(2,3), (2,4), (3, 4), (3, 5), (5, 5), (5, 3), (4, 3), (4, 2), \
(3,2), (3,1), (2, 1), (2, 0), (0, 0)])])

poly_union.plot(color = 'red')
plt.show()
< /code>

 < /p>

, в первую очередь, как я выведен вышеpoly_union
) из входных многоугольников (, df2 ) Использование Geopandas или Shipely? < /p>

Во -вторых, какова правильная номенклатура, связанная с геометрией (

Код: Выделить всё

poly_union
), что я пытаюсь найти? Я бы назвал это «союзом», но каждый пример, который я нахожу, относится к «профсоюзам», не выводит эту геометрию. < /p>

Примечание: этот пример, кажется, не выводит ни одного многоугольника: < /p>

Код: Выделить всё

poly1 = df1['geometry']; poly2 = df2['geometry']
mergedpoly = poly1.union(poly2)
mergedpoly.plot()


Подробнее здесь: https://stackoverflow.com/questions/403 ... e-geometry
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»