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.