GeoPandas cargar un shapefile desde un archivo ZIP

GeoPandas cargar un shapefile desde un archivo ZIP

Un shapefile es un formato de archivo geoespacial utilizado para representar características geográficas en un sistema de información geográfica (GIS, por sus siglas en inglés).

Consiste en varios archivos relacionados entre sí, que en conjunto contienen información sobre la forma, la ubicación y las características de los elementos geográficos, tales como líneas, puntos o polígonos. Los archivos que componen un shapefile incluyen un archivo de coordenadas, que define las ubicaciones espaciales de los elementos, así como archivos de atributos, que contienen información sobre las características y propiedades de los elementos. Desde geopandas podemos leer este formato de archivos y utilizar los datos que contenga.

Una de las desventajas de este formato es que al usar varios archivos por cada shapefile administrarlos puede llegar a ser complicado, por lo que guardarlos dentro de un archivo ZIP simplifica el manejo de los archivos y ahorra espacio, pero ya no podremos leerlos directamente desde geopandas, para eso les comparto el código que nos permitirá cargar nuestros shapefiles (recuerda tener instalado geopandas esto dependerá de tu sistema operativo).

Dataset para hacer pruebas https://www.kaggle.com/datasets/nswitzer/usa-state-shapeflies

import geopandas as gpd
import io
import fiona # se instala junto con pandas

zipshp = io.BytesIO(open('./shapefile.zip', 'rb').read())

with fiona.BytesCollection(zipshp.read()) as src:
  crs = src.crs
  gdf = gpd.GeoDataFrame.from_features(src, crs=crs)
  print(gdf.head())