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.

¿Cómo puedo crear un archivo de forma (shapefile) a partir de un DataFrame de GeoPandas?

Estoy teniendo problemas para escribir un GeoPandas DataFrame a un archivo shapefile utilizando la función GeoDataFrame.to_file(). Cuando ejecuto el código a continuación, a veces obtengo un shapefile vacío, y a veces se ejecuta pero no devuelve nada en absoluto.

import arcpy
import pandas as pd
import glob
import geopandas as gpd
from shapely.geometry import Point

arcpy.env.overwriteOutput = True

arcpy.env.workspace = r'F:\GY539Programming\projectdata'
ws = arcpy.env.workspace

files = glob.glob(ws + '/*.csv')
for filename in files:
    df = pd.read_csv(filename, sep=',')
    geometry = [Point(xy) for xy in zip(df['Longitude'], df['Latitude'])]
    gdf = gpd.GeoDataFrame(df, crs='EPSG:4326', geometry=geometry)
    gdf.to_file('file.shp', driver='ESRI Shapefile')

¿Algún consejo? Mis datos provienen de un archivo csv que contiene una columna con coordenadas de longitud y otra con coordenadas de latitud. Aquí hay un fragmento:

          Api  Permit  ... Latitude Longitude

0 5.000000e+13 163019 … 61.14 -149.98
1 5.000000e+13 100001 … 61.21 -149.77
2 5.000000e+13 163015 … 61.33 -149.91
3 5.000000e+13 165037 … 61.30 -149.99
4 5.000000e+13 100002 … 61.42 -149.81

¡Muchas gracias!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que estás intentando convertir un archivo CSV en un shapefile utilizando GeoPandas. Es posible que el problema esté relacionado con el sistema de referencia de coordenadas (CRS) de tus datos. Cuando creas el GeoDataFrame, estás configurando el CRS en EPSG:4326, que es el estándar para las coordenadas de latitud y longitud. Sin embargo, es posible que tus datos estén en un CRS diferente. Puedes verificar el CRS de tus datos utilizando el comando gdf.crs. Si el CRS es diferente de EPSG:4326, puedes utilizar el comando gdf.to_crs() para convertir los datos al CRS correcto antes de escribirlo en un shapefile.

Comments are closed.