es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Extracción de geometrías de polígonos Shapely como lista WKT desde un GeoDataFrame de Geopandas.

No tengo suerte extrayendo las geometrías de los polígonos de un shapefile en una base de datos geoespacial Geopandas.

La variable sigue mostrándose como <shapely.geometry.polygon.Polygon object at 0x0000020ADDDC00D0>

No como el WKT que se muestra al imprimir el GeoDataFrame.

GeoDataFrame de Geopandas – llamado intersection_matches

        index_tile sheet_code  scale  tile                                           geometry

210648 BE36_1000_1349 BE36 1000 1349 POLYGON ((1875520.000 5792640.000, 1875040.000…
210649 BE36_1000_1350 BE36 1000 1350 POLYGON ((1876000.000 5792640.000, 1875520.000…
210698 BE36_1000_1449 BE36 1000 1449 POLYGON ((1875520.000 5791920.000, 1875040.000…
210699 BE36_1000_1450 BE36 1000 1450 POLYGON ((1876000.000 5791920.000, 1875520.000…

Extrayendo filas de columna de polígonos Shapely del GeoDataFrame y tratando de convertirlas en WKT como variable de objeto

1)
geometries = wkt.dumps(intersection_matches[‘geometry’])

print (geometries)

[<shapely.geometry.polygon.Polygon object at 0x000001DE73E58F40>,
<shapely.geometry.polygon.Polygon object at 0x000001DE73E58FA0>,
<shapely.geometry.polygon.Polygon object at 0x000001DE73E6C280>]

2)

print (intersection_matches[‘geometry’].tolist())

(el mismo resultado que el de arriba)

3)

print (intersection_matches.iloc[:, 4].tolist())

TypeError: Solo se acepta str.

4)

print (intersection_matches.decode(“utf-8”)[intersection_matches[‘geometry’].isin(list_of_values))

AttributeError: El objeto ‘GeoDataFrame’ no tiene el atributo ‘decode’.

Contexto

import geopandas as gpd
from shapely.geometry import Polygon
from shapely import wkt

imagery_bb_polygon_df = gpd.GeoDataFrame(index=[0], crs=(“epsg:2193”), geometry=[Polygon(list_of_points)])
topo50_df = gpd.read_file(topo50_geometry_file)

intersection_matches = topo50_df.overlay(imagery_bb_polygon_df, how=’intersection’, keep_geom_type=False)

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que estás intentando extraer la columna geometry de tu GeoDataFrame intersection_matches y convertirla al formato WKT (Well-Known Text).

    Los dos primeros intentos que hiciste, geometries = wkt.dumps(intersection_matches['geometry']) y print (intersection_matches['geometry'].tolist()), ambos retornan la misma salida de . Esto es porque el método wkt.dumps() se usa para convertir un objeto de geometría Shapely al formato WKT, y el método tolist() se usa para convertir una columna de un GeoDataFrame en una lista.

    El tercer intento, print (intersection_matches.iloc[:, 4].tolist()), retorna un TypeError porque se usa el método iloc para acceder a una fila o columna particular de un DataFrame, y el método tolist() se usa para convertir una columna de un GeoDataFrame en una lista.

    El cuarto intento, print (intersection_matches.decode("utf-8")[intersection_matches['geometry'].isin(list_of_values)), retorna un AttributeError porque se usa el método decode() para decodificar una cadena de un codificación particular, y el método isin() se usa para verificar si una columna de un DataFrame contiene un valor particular.

    Para convertir la columna geometry de tu GeoDataFrame intersection_matches al formato WKT, puedes usar el método apply() para aplicar el método wkt.dumps() a cada fila de la columna geometry:


    intersection_matches['geometry'] = intersection_matches['geometry'].apply(wkt.dumps)

    Esto convertirá la columna geometry de tu GeoDataFrame intersection_matches en formato WKT.

Comments are closed.