Source code for libadalina_core.readers.geopackage

import geopandas as gpd
from pyogrio import list_layers

from libadalina_core.sedona_utils import DEFAULT_EPSG


[docs] def geopackage_to_dataframe(path: str, layer: str = None) -> gpd.GeoDataFrame: """ Read a GeoPackage file into a GeoDataFrame. Geometry is automatically converted to the libadalina default EPSG ``DEFAULT_EPSG``. Parameters ---------- path : str The path to the GeoPackage file. layer : str The layer name of the GeoPackage. If None, the first layer found will be used. Returns ------- geopandas.GeoDataFrame A GeoDataFrame containing the data from the specified layer. Examples -------- >>> gdf = geopackage_to_dataframe('data.gpkg', 'layer_name') """ if layer is None: layers = list_layers(path) if len(layers) == 0: raise ValueError(f"No layers found in GeoPackage file: {path}") layer, _ = layers[0] gdf = gpd.read_file(path, layer=layer) gdf.to_crs(DEFAULT_EPSG.value, inplace=True) return gdf