25 votos

¿Cómo escribo un marco de datos GeoPandas en un único archivo (preferiblemente JSON o GeoPackage)?

Soy nuevo en SIG y tengo un problema básico de principiante. Tengo datos en forma de un geopackage .gpkg de GADM.org. Puedo leer y utilizar los datos sin problemas utilizando Geopandas (a través de Fiona incorporada).

He añadido y eliminado algunas columnas a los datos, y he cambiado algunos nombres de columnas por otros más intuitivos para mí (para facilitar su uso posterior y mantener la coherencia entre los archivos). Modificaciones menores.

Ahora quiero exportar los datos a un formato de archivo que sea fácil de leer posteriormente en Python como un marco de datos GeoPandas. Sin embargo, cada vez que intento

CityShapeFile.to_file('CityShapeFile_edited.gpkg',encoding='utf-8')

Independientemente del formato que elija (por ejemplo, gpkg, json, shp, ...) no obtengo un único archivo, sino una carpeta con 5 archivos: *.cpg , *.dbf , *.prj , *.shp et *.shx . Estoy seguro de que esos archivos juntos contienen todos los datos que necesito, pero para volver a leer los datos en Python realmente los necesito en un solo archivo (hasta donde yo sé). Considerando que los datos originales que descargué están en un solo archivo gpkg, esto parece posible y probablemente normal, pero ¿cómo hacerlo?

He leído en el manual de Fiona que puede escribir archivos shape comprimidos, pero no he podido encontrar ningún ejemplo sencillo de hacerlo con un marco de datos GeoPandas, ni estoy seguro de que se pueda leer correctamente. Así que..,

¿Cómo escribo un marco de datos GeoPandas en un único archivo (preferiblemente JSON o GeoPackage)?

42voto

Om Shankar Puntos 117

Para escribir en GeoJSON: dataframe.to_file("output.json", driver="GeoJSON")

Para escribir en GeoPackage: dataframe.to_file("output.gpkg", driver="GPKG")

Documentación está aquí aunque algo escasa.

5voto

Paulpro Puntos 201

La respuesta de @toms es perfecta -- que he utilizado para crear mi geopackage, por cierto. Ahora que he aprendido, quiero añadir a la discusión:

GeoDataFrame to_file tiene la siguiente firma:

>>> help(dataframe.to_file)

to_file(filename, driver='ESRI Shapefile', schema=None, **kwargs)
...

Y sigue:

...
A dictionary of supported OGR
    providers is available via:

    >>> import fiona
    >>> fiona.supported_drivers

A partir de fiona.__version__ == 1.8.6 esos son los controladores compatibles:

{'AeronavFAA': 'r',
 'ARCGEN': 'r',
 'BNA': 'raw',
 'DXF': 'raw',
 'CSV': 'raw',
 'OpenFileGDB': 'r',
 'ESRIJSON': 'r',
 'ESRI Shapefile': 'raw',
 'GeoJSON': 'rw',
 'GPKG': 'rw',
 'GML': 'raw',
 'GPX': 'raw',
 'GPSTrackMaker': 'raw',
 'Idrisi': 'r',
 'MapInfo File': 'raw',
 'DGN': 'raw',
 'S57': 'r',
 'SEGY': 'r',
 'SUA': 'r',
 'TopoJSON': 'r'}

Una lista bastante interesante, por cierto. Es sólo que no está clara la relación entre los formatos de archivo extensión / nombre, que puede parecer un poco "ruidoso" para los recién llegados (como yo), pero una segunda ronda de google lo hará.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X