Inca. Formatos de archivo relacionados con el GIS

Conversiones entre formatos

Inca (el contenedor geográfico de Ingrid tanto ,

GDAL versión 3.10.2. Se utilizarán las funciones de virtual file system para el manejo de .zips, toda su documentación está en el siguiente enlace. https://gdal.org

Shapefile dentro de un .zip a .geojson

ogr2ogr -f GEOJSON “UrlDestino.geojson” “/vsizip/URLorigen.shp”

Se utiliza vsizip para no tener que crear una carpeta temporal y se pueda leer directamente desde el .zip. Funcionará también si existen varios shapefiles dentro de un .zip, solo habría que ajustar la ruta al .shp dentro de cada carpeta.

Importante: no existe ningún comando único que transforme un .zip con varios shapefile a sus respectivos geojson. Se puede realizar bucles buscando los .shp dentro del .zip y generando su respectivo geojson.

Geojson a shapefile dentro de un .zip

Funciona utilizando la librería GDAL y powershell. Se realiza en dos pasos:

Paso 1: ogr2ogr -f "ESRI Shapefile" "URLDestino\file.shp" "URLOrigen\file.geojson"
Paso 2: powershell Compress-Archive -Path "URLDestino\file.*" -DestinationPath "URLOrigen\file.zip"

En caso de que se quiera crear carpetas, habría que hacer un paso previo con mkdir creando el directorio donde se quiere transformar el geojson a shapefile, ya que ogr2ogr no crea carpetas. 

Conversión de formatos de único archivo dentro de un .zip

Con /vsizip/ de GDAL se permite generar directamente archivos comprimidos en formato ZIP al realizar conversiones con ogr2ogr, pero solo funciona correctamente únicamente con formatos que generan un solo archivo (por ejemplo, KML, GeoJSON, GML), y no es compatible con formatos que requieren múltiples archivos simultáneos como Shapefile (.shp, .shx, .dbf, etc.).
El comando:

ogr2ogr -f "KML" "/vsizip/C:/ruta/salida.zip/capa.kml" "C:/ruta/entrada.geojson"

generaría correctamente un .zip con el .kml en su interior, ya que solo creó un único fichero por sesión de escritura.
El comando:

ogr2ogr -f "ESRI Shapefile" "/vsizip/C:/ruta/salida.zip/capa.shp" "C:/ruta/entrada.geojson"

Dará error debido a que en una sesión de escritura debe generar .shp, .shx, etc.

Limitaciones de las formatos

Los diferentes formatos geoespaciales utilizados comúnmente presentan diversas limitaciones en cuanto a la gestión y almacenamiento de información. Cada extensión tiene restricciones específicas que afectan la precisión numérica, el manejo de atributos complejos o la capacidad para almacenar geometrías mixtas. Estas limitaciones se hacen evidentes cuando se realizan conversiones sucesivas entre diferentes formatos, ya que se acumulan pérdidas de información en cada etapa. Por ejemplo, si convertimos de Shapefile a KML y luego a DXF, primero perderemos información no soportada por KML, y posteriormente, al convertir a DXF, perderemos adicionalmente información no soportada por este último. En consecuencia, habremos perdido información en dos etapas distintas. 

Por el contrario, el uso de GeoPackage (GPKG) ofrece una solución mucho más robusta y eficiente. Este formato se destaca por su capacidad para mantener la integridad y precisión de la información geoespacial, minimizando significativamente las pérdidas durante el proceso de conversión. Además, al utilizar GeoPackage como un formato intermedio (formato inicial → GPKG → formato final), se garantiza que únicamente se pierda la información no soportada por el formato final, en lugar de sufrir pérdidas acumulativas en cada paso. 

A continuación, se describen detalladamente las limitaciones específicas de cada uno de los formatos evaluados

Limitaciones específicas de cada formato

1. Shapefile (.shp)

Límite máximo de 10 caracteres para nombres de atributos.
No permite estructuras de datos complejas o anidadas (sólo datos alfanuméricos simples).
No soporta múltiples geometrías mixtas en una sola capa (se simplifican al primer tipo de geometría que se lee).
Requiere un sistema de referencia espacial explícito pero sólo puede manejar un CRS a la vez.
La definición del ancho máximo de caracteres en los campos se asigna por defecto por GDAL si no se especifica.
Almacena datos con precisión de doble precisión (15-16 dígitos decimales).

2. GeoJSON (.geojson)

Soporta metadatos avanzados y estructuras de atributos muy complejas, pero funciones de GIS al transformar pueden perder información almacenada en “metadata”.
No tiene un tipo de geometría explícito único, puede contener múltiples tipos en un solo archivo.
El sistema de referencia espacial es EPSG:4326 (coordenadas geográficas WGS84).
No tiene un esquema rígido para definir tipos de datos, todos se almacenan como texto si no se especifica.
Aunque permite alta precisión, algunas herramientas que lo manipulan pueden reducir la precisión.

3. KML (.kml)

Soporta atributos complejos mediante ExtendedData, pero su uso principal es gráfico y estilístico.
No tiene un tipo de geometría explícito único, puede contener múltiples tipos en un solo archivo.
El sistema de referencia espacial es EPSG:4326 (coordenadas geográficas WGS84).

4. DXF (.dxf)

Formato orientado principalmente al dibujo técnico (CAD), no optimizado para datos geoespaciales complejos.
No soporta estructuras avanzadas de bases de datos, atributos complejos o relaciones espaciales.
No soporta sistemas de referencia espacial explícitos.
No permite almacenar datos alfanuméricos complejos, sólo entidades gráficas como LINE, CIRCLE, ARC, etc.
Fragmenta geometrías complejas en entidades individuales, lo cual puede alterar el Feature Count.

Comparativa de pérdidas de información al realizar conversiones con ogr2ogr

Shapefile → KML:
Se pierden atributos tipo fecha/hora, los nombres de atributos superiores a 10 caracteres se acortan, se pierden definiciones explícitas del ancho máximo de caracteres en campos y se reduce significativamente la precisión numérica.

Shapefile → GeoJSON:
La referencia espacial queda limitada al sistema EPSG:4326, se pierde la definición explícita del ancho máximo de caracteres en los campos y la definición explícita del tipo de geometría, aunque esto se debe a que GeoJSON conserva más de un tipo de geometría por archivo.

Shapefile → DXF:
Se pierden todos los atributos no gráficos (cualquier dato alfanumérico), sistemas de referencia espacial explícito, definición explícita del tipo de geometría, y se reduce la precisión numérica significativamente. El Feature Count también cambia, ya que DXF fragmenta cada línea en entidades individuales.

GeoJSON → Shapefile:
Se pierden atributos con nombres superiores a 10 caracteres (se acortan), la definición explícita del ancho de campo se asigna por defecto por GDAL, se pierde precisión numérica alta, se pierden atributos tipo fecha/hora y las geometrías mixtas o multipartes quedan reducidas al primer tipo de geometría que se lee.

GeoJSON → KML:
Se pierde precisión numérica alta, estructuras de atributos complejos (datos anidados, arrays, etc.) y los atributos tipo fecha/hora se convierten a cadenas si no están en el formato compatible de KML.

GeoJSON → DXF:
Se pierden todos los atributos no gráficos (alfanuméricos), atributos tipo fecha/hora, precisión numérica elevada y sistemas de referencia espacial explícitos. Se pierde la definición explícita del tipo de geometría. El Feature Count también cambia, ya que DXF fragmenta cada línea en entidades individuales.

KML → Shapefile:
Se pierden todos los atributos complejos o metadatos avanzados, los atributos tipo fecha/hora se convierten a cadenas o se pierden si no son compatibles con DateTime de Shapefile, la definición explícita del ancho de campo se asigna por defecto por GDAL. Se pierden detalles gráficos o estilísticos complejos. Las geometrías mixtas o multipartes quedan limitadas al primer tipo de geometría que se lee.

KML → GeoJSON:
Atributos complejos o metadatos avanzados que no encajan en el esquema GeoJSON se pierden. La referencia espacial queda restringida al sistema EPSG:4326.

KML → DXF:
Se pierde significativamente la precisión numérica, todos los atributos complejos o alfanuméricos, detalles gráficos o estilísticos complejos. Se pierde el sistema de referencia espacial.

DXF → Shapefile:
Geometrías mixtas o multipartes se simplifican al primer tipo de geometría que se lee, la definición explícita del ancho de campo se asigna por defecto por GDAL.

DXF → GeoJSON:
La referencia espacial queda restringida al sistema EPSG:4326.

DXF → KML:
Se puede perder precisión numérica.