Estoy en proceso de desarrollar un plugin para QGIS y necesito convertir una capa vectorial de entrada (que contiene un polígono) en GeoDataFrame
. La capa de entrada se importa de la siguiente manera:
input_Area = self.dlg.ui.Area.currentLayer()
Y necesito usarla para la siguiente función (que usa un GeoDataFrame como entrada):
def create_grid_from_polygon(polygon, tamaño_grid):
geometría_polígono = polygon['geometry']
bbox = geometría_polígono.bounds
xmin, ymin, xmax, ymax = bbox.minx[0], bbox.miny[0], bbox.maxx[0], bbox.maxy[0]
#Calcular número de filas y columnas
fila = int((ymax-ymin) / tamaño_grid)
col = int((xmax-xmin) / tamaño_grid)
#Inicializar la cuadrícula de puntos
capa_grid = []
for i in range(fila):
for j in range(col):
#Calcular coordenadas x e y del punto actual
x = xmin + j * tamaño_grid
y = ymin + i * tamaño_grid
#Crear un objeto QgsPointXY para el punto
punto = QgsPointXY(x,y)
#Comprobar si está dentro del polígono y agregar los puntos dentro del área
if polygon.contains(punto):
capa_grid.append(punto)
return capa_grid
He estado intentando algo así:
features = []
for feature in input_Area.getFeatures():
features.append(feature)
columna_geometría = input_Area.geometry.name()
if columna_geometría:
gdf = gpd.GeoDataFrame(features, geometry=columna_geometría)
else:
print("Columna de geometría no encontrada")
Pero realmente no logro que funcione. Parece tener problemas para encontrar el nombre de la columna de geometría, y aquí es importante señalar que dado que el código es para un plugin, el código necesita encontrar este nombre por sí mismo.
Si este método no es posible, me encantaría recibir sugerencias para otra solución.