Criando centróide dentro do polígono [fechado]

Sep 09 2020

Quero obter os centróides de meus multipolígonos usando Python e GeoPandas. Mas ao visualizar os polígonos e os pontos de centróides no QGIS, os centróides não estão dentro dos polígonos.

Aqui está o código que usei:

import geopandas as gpd
import pandas as pd
import sys

# Read the data
polygons = gpd.GeoDataFrame.from_file('mypolygons.shp')
temp=polygons.centroid
polygons['x'] = temp.x
polygons['y'] = temp.y
centroid=polygons[['x','y']]

gdf = gpd.GeoDataFrame(centroid, geometry=gpd.points_from_xy(centroid.x, centroid.y))
gdf.to_file("centroid/centroid.shp")

O que está errado?

Respostas

7 BERA Sep 08 2020 at 23:50

Se você quiser um ponto dentro de cada polígono, use um ponto representativo :

Retorna um ponto calculado de forma barata que tem a garantia de estar dentro do objeto geométrico.

import geopandas as gpd
polygons = gpd.GeoDataFrame.from_file("/home/bera/GIS/Data/testdata/stands.shp")
polygons.geometry = polygons.representative_point()
polygons.to_file("/home/bera/GIS/Data/testdata/stands_repr_point.shp")