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)
davy.ai
Parece que estás intentando extraer la columna
geometry
de tu GeoDataFrameintersection_matches
y convertirla al formato WKT (Well-Known Text).Los dos primeros intentos que hiciste,
geometries = wkt.dumps(intersection_matches['geometry'])
yprint (intersection_matches['geometry'].tolist())
, ambos retornan la misma salida de
. Esto es porque el métodowkt.dumps()
se usa para convertir un objeto de geometría Shapely al formato WKT, y el métodotolist()
se usa para convertir una columna de un GeoDataFrame en una lista.El tercer intento,
print (intersection_matches.iloc[:, 4].tolist())
, retorna unTypeError
porque se usa el métodoiloc
para acceder a una fila o columna particular de un DataFrame, y el métodotolist()
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 unAttributeError
porque se usa el métododecode()
para decodificar una cadena de un codificación particular, y el métodoisin()
se usa para verificar si una columna de un DataFrame contiene un valor particular.Para convertir la columna
geometry
de tu GeoDataFrameintersection_matches
al formato WKT, puedes usar el métodoapply()
para aplicar el métodowkt.dumps()
a cada fila de la columnageometry
:intersection_matches['geometry'] = intersection_matches['geometry'].apply(wkt.dumps)
Esto convertirá la columna
geometry
de tu GeoDataFrameintersection_matches
en formato WKT.