Saltar al contenido principal

Intro a los SIG para developers

¿Es difícil aprender qué son y cómo funcionan los sistemas de información geográfica (SIG, or GIS por sus siglas en inglés)?

Como informático que lleva desde 2014 en este mundo, sé que al principio es difícil entender la mayoría de recursos disponibles, porque a mi también me ha costado, es más... ¡a veces me sigue costando! 😅.

Esto se debe a muchas razones:

  1. La mayoría de los recursos dan por sentado que conoces el vocabulario/jerga de los SIG como: mapa base, capas, geometrías, entidades, datos ráster, extensión, geocodificar, geodésico, geoprocesamiento, teselas, datum, ... 🤨.
  2. También que dominas todos conceptos fundamentales y relativamente complejos como: sistemas de coordenadas o de referencia, proyección, topología, ... 😮.
  3. En ocasiones, los términos en el contexto de los SIG tienen significados totalmente distintos a la informática tradicional, por ej: buffer informático != buffer geográfico 😱.
  4. Falta de consenso y un vocabulario universal en conceptos básicos. Diferentes tecnologías terminan dando diferentes nombres al mismo concepto. Por ejemplo: Google y Esri llamamos Polyline a los que en GeoJSON se llama Linestring, o lo que en Google Maps es un InfoWindow, en Esri es un PopupTemplate, y en Leaflet un Popup 😭.
  5. No razonan el por qué se hacen algunas cosas de manera distinta a como estamos acostumbrados 🤔.
  6. Los SIG abarcan una amplia gama de tecnologías, desde servidores a aplicaciones de escritorio, SDKs, ... que puede abrumar al principio 🤯.

Si a esto le sumamos que casi nunca se le deja claro a alguien con un perfil informático los beneficios potenciales y los problemas que podrán resolver con ellos, no es de extrañar que muchas personas terminen frustándose, abandonando y dedicando su tiempo a aprender otras tecnologías.

Por eso he creado yo este recurso, porque nunca he encontrado un único recurso empiece desde los beneficios, pasando por los conceptos básicos y profundizando lo suficiente como para ser capaz de recomendarlo a alguien (como yo) que quiera empezar.

información

Por ejemplo, para reducir esa fricción, desde el equipo de Developer Experience de Esri hemos creado un glosario de términos que nos permite que al pasar el ratón por encima de estos, podamos ofrecer un modal con una aclaración:

Glossary hover experience

En esta página explicaré los conceptos básicos, usando el vocabulario más sencillo que pueda y similitudes/comparativas con el mundo de la informática tradicional, para que entiendas cómo los SIG están contruídos sobre muchos conceptos que ya conoces.

Para qué sirven

Si no tienes claro para qué te pueden servir los SIG, y si merece la pena invertir tiempo en ellos, aquí te dejo un breve vídeo que muestra algunas de las cosas que puedes llegar a hacer. En este caso, concretamente con ArcGIS:

Y si quieres, en Geo Developer superpowers 🦸, he hecho una recopilación de problemas que puedes resolver con ellos.

Si te preguntas... ¿y esto no lo puedo hacer yo a mano?. A lo mejor sí... aunque es fácil infravalorar la complejidad de crear algunas estas tecnologías (por desconocimiento), por lo que yo lo desaconsejo, por lo menos hasta haberlas probado y haberte familiarizado con las complejidades que ocultan.

Dicho esto, reinventar la rueda es siempre una opción, y no soy yo de ponerle puertas al campo... además, hay que reconocer que algunas de las tecnologías que hoy forman parte del ecosistema han surgido de personas inconformistas, valientes y comprometidas, como Volodymyr Agafonkin, el creador de Leaflet.js.

Definición de SIG

¿Qué se entiende por un SIG/GIS?, yo te diría que:

Un sistema que combina múltiples tecnologías optimizadas para tratar con datos geolocalizados, y con tratar me refiero: almacenarlos, manipularlos, visualizarlos y analizarlos.

Estas tecnologías son: bases de datos (espaciales), servidores (espaciales), librerías/SDKs (espaciales) e incluso aplicaciones de escritorio para trabajar con estos datos.

En los siguientes apartados iremos repasando estas tecnologías y destacando algunas de la familia de productos ArcGIS, pero también otras alternativas populares relevantes.

Datos geolocalizados

Todo en un SIG gira en torno a los datos geolocalizados, por eso, para entender todo lo demás, lo primero que necesitamos saber es cuáles son los diferentes tipos de datos geolocalizados que existen.

Estos se suelen clasificar en función de CÓMO se almacena la información que contiene su ubicación (también conocida como "la componente espacial" de los datos).

Hay principalmente dos tipos: datos vectoriales y datos ráster, estos son persistidos en disco como gráficos vectoriales y mapas de bits respectivamente.

Si te interesa, al final del documento hay un apartado "Captura" donde se explica que:

  • El dato se puede crear originalmente tanto como dato vectorial, como en ráster.
  • A veces se transforman los datos vectoriales a ráster mediante un proceso llamado rasterización.
  • Otras veces se extraen datos vectoriales a partir de los datos ráster mediante un proceso llamado extracción de entidades.
💡 ¿Sabías que...? Hay un campo conocido como GeoAI donde se usan modelos de deep learning, para extraer datos vectoriales a partir de datos ráster (entre otras muchas cosas[0]), y que se cree[0] que surgió a mediados de los años 60.

En este documento repasaremos las ventajas y limitaciones de cada tipo de dato, junto a herramientas y técnicas para manipularlos.

Calidad de datos

Antes de entrar en el detalle de los datos vectoriales y ráster, necesitamos conocer algunos conceptos cruciales que nos acompañarán siempre que trabajemos con datos geolocalizados, y a que a su vez nos permitirán entender cómo crear aplicaciones de visualización, análisis, ... además de implementar procesos (ej: ETL) con garantías de calidad.

💡 ¿Sabías que...?: Si no conoces estos conceptos podrías... A) Malinterpretar una ubicación y enviar a una persona o vehículo a decenas o kilómetros de distancia de la ubicación deseada, B) Medir erróneamente la superficie de una parcela, piscina, edificio y calcular incorretamente tasas o ayudas, C) Registrar incorrectamente la delimitación de fincas (deslindes) con posibles consecuencias legales, ¿y muchas cosas más?.

Por tanto, no importa si accedemos a los datos vía API de un tercero, si los descargamos de fuentes abiertas, si los compramos a un proveedor, o si nos los proporciona ingeniero de datos especializado en geoinformática (conocido como técnico o analista/SIG). En cualquier caso necesitamos conocer estos conceptos poder manipularlos con garantías, pero también para evitar posibles quebraderos de cabeza.

Vamos a ver tres conceptos principales:

  1. Sistemas de coordenadas.
  2. Proyecciones.
  3. Topologías geospaciales.

SISTEMAS DE COORDENADAS

Vamos a empezar por cómo se asignan unas coordenadas a una ubicación.

Calcular las coordenadas de una ubicación en la tierra no es trivial, principalmente porque la tierra no es una esfera o elipsoide perfecto, si no un geoide (una roca gigante):

💡 ¿Sabías que...?: existen asignaturas completas en grados universitarios donde se estudia la forma de la tierra. Por ejemplo, en Ingeniería en Geodesia o Geomática.

Sin embargo, comprender completamente todos los conceptos teóricos matemáticos que se esconden detrás de este tema va más allá del objetivo de esta introdución. Por lo que me conformo con que sepas que para poder medir con precisión y exactitud las ubicaciones en la superficie de la tierra existen diferentes sistemas de referencia de coordenadas (CRS por sus siglas en inglés).

Ahora, antes de seguir, vuelve arriba y pulsa la pestaña: 📍 Sistema de referencia.


PROYECCIONES

Este es uno de los conceptos más desconocidos y confusos para la mayoría de los desarrolladores, quizás porque muchas tecnologías realizan este proceso automáGicamente ocultando la complejidad al desarrollador.

Hasta ahora hemos visto los sistemas de referencia/coordenadas geográficas. Estos suelen expresar las coordenadas en grados, normalmente especificados como: latitud y longitud. Los valores en WGS84 oscilan entre [-180, 180] para la longitud, y entre [-90, 90] para la latitud.

Sin embargo, cuando queremos representar la superficie tridimensional de la Tierra en un plano bidimensional, como un mapa o una pantalla, tenemos que transformar la forma usando una proyección cartográfica[1]. En este caso las coordenadas se expresan en metros, normalmente especificados como: "x" e "y". En Web Mercator los valores oscilan entre [-103676511,103676511] para "y", y entre [-20037508, 20037508] para "x".

Un error bastante común es que cuando no se cargan correctamente las coordenadas geográficas en un mapa proyectado, por ejemplo si asignamos a "y" el valor de latitud, y al "x" el valor de longitud, los datos acaben en la Null island 🏝️🤣 (dado que si se le asignan valores pequeñitos de longitud y latitud a "x" e "y" que oscilan entre valores tan grandes, aparezcan en el centro del mapa).

Los métodos matemáticos que se utilizan para proyectar SIEMPRE introducen algún tipo de distorsión en algún aspecto, ya sea en la forma 🔻🔷🛑⭕, el área ▨, la distancia 📏, o la dirección 📐[2]. Estos dos vídeos los explican de manera muy visual: Why all maps are wrong y The Impossible Map.

En la siguiente imagen se puede ver:

Es habitual encontrarse las coordenadas en WGS84 (coordenadas geográficas) y querer cambiarlas a Web Mercator (coordenadas proyectadas) y vicebersa. De hecho, yo me creé un conversor de un sistema a otro: Mercator to Geographic converter.

Por eso, para evitar errores, a la hora de combinar datos de diferentes fuentes, o al representarlos en un mapa base (conocido comúnmente como basemap, mapa de referencia, o mapa de fondo), que es el que da contexto para superponer los datos geolocalizados, es importante tener en cuenta que todos estén en el mismo sistema de referencia [3].

¿Qué implicaciones tiene todo esto en una biblioteca de mapas/SIG? por ejemplo, en la ArcGIS Maps SDK for JavaScript, multitud de clases tienen una propiedad "spatialReference" que es donde se define el sistema de referencia, por ejemplo las que se usan para representar la vista del mapa (MapView para mapas 2D, y SceneView para mapas/escenas 3D), las clases utilizadas para pintar los datos (Point, Polyline, etc)

Ahora, antes de seguir, vuelve arriba y pulsa la pestaña: 🌀 Distorsiones.

información

Aunque para los casos más básicos esto no sea muy relevante, es importante saber que tecnologías populares como Google Maps o Leaflet tienen un soporte limitado para trabajar con datos en diferentes proyecciones (1, 2)

TOPOLOGÍAS GEOESPACIALES

Las topologías geospaciales permiten definir reglas para asegurar la integridad de los datos[5].

Esto se puede usar para garantizar que una calle no atraviese un edificio, que el número de portal de un bloque esté ubicado en una arista del edificio, que la superficie de dos fincas no se solapen, etc.

Por ejemplo, estas son 3 de las 32 reglas tológicas soportadas en ArcGIS:

Ejemplos de reglas topológicas en ArcGIS

Las restricciones, limitaciones o constraints topológicas se pueden definir a nivel de base de datos, pero como veremos en el apartado "Análisis", también se pueden usar por código (a través de una biblioteca) para detectar errores o arreglar los datos antes de persistirlos.

Datos vectoriales

Usaremos datos vectoriales para geolocalizar entidades geográficas (geographical features, un término que se usa mucho) que tienen una identidad y localización claramente diferenciada a otras entidades geográficas (a veces se les llama entidades discretas), por ejemplo: objetos, edificios, posiciones, perímetros, ...

La ubicación de estos datos se pueden representar con diferentes tipos de geometrías, y el tipo de geometrías soportadas por cada tecnología, la forma de representarlas internamente, e incluso el nombre que se les da, varía entre unas tecnologías y otras[6] (bases de datos, SDKs, formatos de archivo, etc).

GEOMETRIAS (PRIMITIVAS)

TipoRepresentaciónEjemplo de uso
PuntoParadas de taxi, árboles, semáforos ... aunque a veces, lo que podría ser un polígono (por ej: el perímetro de un local, negocio, o tienda), se reduce a un punto (la entrada principal, o el centroide).
Polilínea o linestringCalles, tendidos eléctricos, redes de tuberías, carreteras, líneas de autobús, metro, rutas comerciales, senderos de montaña, líneas de costa, diques, ríos, cordilleras, fallas geológicas, ...
PolígonoSuperficie/huellas de edificios, barrios, municipios, perímetros, parques, zonas industriales, parques naturales, bosques, países, zonas de paso restringidas, ...
Malla de triángulos (Mesh)Para representar objetos en escenarios 3D como estructuras o moviliarios hurbano, edificios, vegetación, vehículos, personas, señales de tráfico, iconos 3D, cajeros, fuentes, farolas, antenas de telefonía, etc..

GEOMETRÍAS COMPUESTAS ("multipart geometries" en inglés)

TipoRepresentaciónEjemplo de uso
MultipuntosTracks de GPS, paradas de bus por ciudad, postes de servicios públicos, inventarios de árboles, lugares de pesca, aparcamientos, bocas de incendios, baños públicos, fuentes de agua, etc.
MultilíneasRedes de carreteras, sistemas de ferrocarril, redes de ríos, redes de utilities, senderos y caminos, cables subacuáticos, líneas de alta tensión, rutas de avión, etc.
Multipolígonos Islas, territorio soberado de países (e.g. España), municipios, comunidades autónomas, parque naturales y reservas, zonas costeras y marítimas,
Colección de geometrías o GeometryCollectionEs un tipo de geometría se puede usar para geometrías complejas, esbozar o guardar dibujos o indicaciones a suponer en un mapa, agregaciones de datos, etc.
nota

Faltan por hacer:

  • Añadir las representaciones 3D equivalentes.
  • Ventajas y limitaciones

Datos raster

Aunque los datos vectoriales son frecuentes en todos los campos y sectores económicos, en algunos como el energético, defensa, agricultura, climatología, medio ambiente, conservación, etc, es muy habitual trabajar con datos de resultantes de la observación de la tierra que se almacenan en formato ráster, y que se obtienen mediante teledetección (a partir de sensores ubicados en satélites, aviones, drones, etc.).

Vínculo entre el sector militar, la teledetección y los datos raster

El impulso de la teledetección y la observación de la tierra está fuertemente ligado al sector militar, ya que a primeros del siglo XX (durante la Primera Guerra Mundial), los militares desarrollaron la fotografía aérea sistemática con objeto de vigilancia y reconocimiento de territorios. Y en la segunda mitad del siglo XX, el desarrollo de satélites artificiales permitió el uso de la teledetección remota a escala global proveyendo información con varios fines (civil, militar y de investigación).

Más info en: Historia de la teledetección.

👀 Curiosidad: ¿Sabías que cada día se generan TB de datos abiertos en formato ráster?

A día de hoy:

Y gran parte de estos datos se presentan en formato ráster.

Estos datos ráster por tanto representan datos espacialmente continuos, y al igual que un gráfico de mapa de bits, se almacenan como matrices de celdas/píxeles organizadas en filas y columnas, pero en este caso cada celda está asociada a una ubicación real.

Raster images representation and georeferenciation

Al tamaño de la superficie terrestre que representa cada celda/pixel se le llama resolución espacial (GSD) y depende del sensor usado para la captura, la distancia del mismo a la tierra, etc.

Resolución espacial - Pixel GSD ráster

Lo que representa el valor numérico de cada celda variará, pudiendo ser el color de una fotografía aérea, una imagen satélite, un mapa escaneado, la elevación, la temperatura (terrestre o marítima), el tipo de uso de suelo, etc.

Estas matrices pueden ser bidimensionales, tridimensionales o n-dimensionales.

Por ejemplo, una matriz tridimensional podría almacenar valores que representan volúmenes de datos, como por ejemplo la temperatura del mar o los niveles de oxígeno a diferentes profundidades:

 Subconjunto de unidad ecológica marina del Caribe. Temperatura y Concentración molar de oxígeno

O un satélite capturando el espectro electromagnético en una imagen multiespectral que almacena en una matriz n-dimensional los valores de radiación de las diferentes bandas electromagnéticas. Estas contienen información que el ojo humano no captura con sus receptores (rojo, verde y azul), y que luego se puede combinar calcular multitud de cosas, como por ejemplo el estado de salud de la vegetación (mediante el índice NDVI), o poder ver la actividad de un fuego a través del humo, monitorizar la actividad térmica y potenciales focos de fuego en tiempo real:

Ráster NDVI

En definitiva, estos tipos de datos, ya sean procesados o en crudo, son usados por todo tipo de organizaciones (públicas, privadas, con y sin ánimo de lucro), en ámbitos como:

  • Gestión del territorio: Estudiar características del terreno, analizar patrones de uso del suelo, identificar construcciones ilegales (casas, piscinas, etc.), expansión urbana y desarrollo de infraestructuras, monitorizar la evolución de minas, ...
  • Monitorización de cultivos agrícolas: Monitorizar la salud de los cultivos, controlar plagas y en definitiva optimizar la producción de los cultivos.
  • Meteorología y climatología: Analizar patrones climáticos y predecir eventos meteorológicos severos (incendios, inundaciones, huracanes, ...).
  • Gestión de desastres: Dar apoyo en situaciones de emergencia. Evaluar daños por desastres naturales como inundaciones, huracanes e incendios forestales usando imágenes antes y después del evento.
  • Defensa: Estudiar y evaluar el terreno en zonas de conflicto, y monitorizar ubicaciones estratégicas.
  • Conservación del medio ambiente: Monitorizar áreas protegidas, la salud de los bosques, temperaturas oceánicas, rastrear vida marina, analizar el impacto de actividades humanas en hábitats naturales, los cambios ambientales como la deforestación, desertificación, pérdida de hábitats, además de para estudiar ecosistemas costeros y marinos.
  • Etc

Más adelante veremos cómo manipular, visualizar, analizar y extraer información de la ingente cantidad de datos disponibles a través de estos formatos.

Algunos recursos adicionales

Capas de datos

De manera análoga a como se trabaja con herramientas de diseño gráfico (ej: Photoshop), los datos en un SIG se suelen organizar y almacenar por capas, principalmente porque se adapta mejor a las necesidades específicas de representación, análisis y visualización de datos geolocalizados.

nota

Del mismo modo, en portales de datos abiertos, es habitual encontrar ficheros donde cada uno representa una capa de datos.

Las capas se utilizan a menudo para gestionar y visualizar grandes colecciones de entidades geográficas. Existen dos tipos de capas o colecciones de entidades geográficas:

  • Estructuradas, son aquellas en las que cada entidad geográfica tiene el mismo tipo de geometría y los mismos atributos.
  • No estructuradas, aquellas en las que cada entidad tiene un tipo de geometría diferente o atributos diferentes.

En la siguiente figura representa conceptualmente una aplicación donde se visualizan varias capas de datos simultáneamente:

En la figura vemos:

  • En la parte superior una capa de gráficos (capa gráfica), que es una capa no estructurada. Normalmente se usan para mejorar la usabilidad de las aplicaciones, y sirven para representar elementos mientras se interactúa con la aplicación (por ejemplo mostrar un "pin"/marcador tras hacer la búsqueda de una dirección, mostrar la traza de una geometría mientras se está dibujando, etc). En este caso contiene diferentes tres geometrías de dos tipos distintos dos marcadores y un polígono). Esta sólo existe en memoria RAM.
  • En la parte intermedia cada capa persistida en disco contiene es estructurada, y por tanto contiene un único tipo de geometría (puntos, líneas, o polígonos) y todas las entidades tienen los mismos atributos.
  • Y en la parte inferior hay dos capas raster, la de elevación (relieve) y la del mapa satélite de fondo. Estas capas normalmente se sitúan debajo porque al contener datos contiguos podrían no dejar ver los datos de las capas inferiores.
nota

Aunque normalmente se trabaja con capas, cuando una aplicación es muy sencilla y se trabaja con pocos datos geolocalizados, estos se puede añadir manualmente en una capa gráfica (ya que trabajar por capas no aporta tanto valor en estos casos).

Es habitual que cuando estos datos se alojen en un SGBD relacional, cada capa se almacene en una tabla de la base de datos.

¿¿Eso significa que las bases de datos espaciales no se normalizan?? 🤔

En bases de datos geográficas, la normalización completa de los datos puede no ser práctica debido a la complejidad y la naturaleza espacial de los datos debido a:

  • La jerarquía espacial: Los datos geográficos suelen estar organizados en una jerarquía espacial (por ejemplo, país -> estado -> ciudad), y la normalización puede crear esquemas complejos que dificulten la consulta eficiente de datos.

  • El rendimiento: La normalización extrema puede afectar al rendimiento, especialmente en consultas espaciales usando joins.

  • La integridad referencial: Las relaciones espaciales y la necesidad de mantener la consistencia de los datos de ubicación hacen que sea más difícil garantizar la integridad referencial de las bases de datos geográficas.

    En muchos casos, se busca un equilibrio entre la normalización para garantizar la integridad de los datos y la desnormalización para mejorar el rendimiento de las consultas espaciales.

Formatos de datos

Antes de pasar a ver las bases de datos, vamos a repasar los formatos de intercambio y almacenamiento en los que solemos encontrar datos en Internet, ya sea en archivos estáticos, en texto plano o en binario a través de APIs, y que sirven para mejorar la interoperabilidad entre sistemas. Aunque no entraremos en detalle en cómo se representan.

Algunos de estos formatos se pueden utilizar para crear aplicaciones que sigan funcionando incluso "en modo avión", o sea que sigan cargando mapas, calculen rutas, o sean capaces de buscar direcciones postales en zonas sin cobertura como, túneles, metro/subsuelo, bosques, montañas, alta mar, aviones, países extranjeros, etc.

El *W3C* de la comunidad geo ➡️ El OGC.

El Open Geospatial Consortium (OGC) es un consorcio internacional formado por todo tipo de organizaciones que establece estándares abiertos e interoperables en busca del crecimiento neutral y la interoperabilidad de la comunidad geoespacial (en el marco de los Sistemas de Información Geográfica) y de La Web.

Podríamos decir que es una organización análoga al W3C pero en el ámbito "geo". Y veremos cómo algunos formatos de datos, y posteriormente APIs, están definidos como estándares OGC.

Algunos de los formator que veremos han sido publicados como estándares OGC (🥇), o están en proceso (🥈), y otras especificaciones abiertas que se han convertido en estándares de facto (🥉).

Para datos vectoriales

Los formatos más sencillos para datos vectoriales no son más que especificaciones, esquemas, o extensiones sobre formatos basados en texto plano.

Es habitual encontrarlos:

  • En aplicaciones que nos ofrecen la posibilidad de exportar nuestros datos en algunos de estos formatos.
  • Como en extensiones de bases de datos para trabajar con algunos de estos formatos.
  • APIs de empresas que devuelven sus respuestas en estos formatos.
  • Además de librerías y SDKs que son capaces de leer, visualizar y transformarlos.

A continuación vamos a ver algunos de los formatos más sencillos:

  • JSON (JavaScript Object Notation):
    • 🥇 GeoJSON: formato muy sencillo que representar estructuras geoespaciales a partir de sus vértices. Soporta capas estructuradas de puntos, líneas, polígonos, etc., además de FeatureCollections (capas no estructuradas). Sólo soporta un sistema de referencia espacial (WGS 84) y está soportado en casi todas las bases de datos.
    • 🥈 JSON-FG: similar a GeoJSON pero más flexible y soportando más sistemas de referencia.
    • TopoJSON: permite representar las mismas estructuras que GeoJSON pero de manera más eficiente, reduciendo el tamaño de los archivos y manteniendo las relaciones topológicas.
    • Esri JSON: soporta multitud de sistemas de referencia, geometrías en 2D y 3D, es eficiente como el TopoJSON, e incluye mecanismo de paginación para grandes datasets.
  • XML (Extensible Markup Language):
    • 🥇 KML: permite la visualización sencilla de datos geográficos en tres dimensiones y soporta etiquetas, estilos, descripciones y enlaces. El KMZ es una versión comprimida del KML que puede incluir recursos adicionales como imágenes, modelos 3D, y otros archivos asociados para la representación de los datos. Está soportado nativam en muchas bases de datos.
    • 🥇 GML: permite representar una amplia gama de datos geoespaciales, desde simples puntos hasta complejas redes y superficies. Soporta la modelación de geometría, propiedades geográficas y relaciones espaciales detalladas. Es adecuado para aplicaciones que requieren una rica estructura de datos geoespaciales y que pueden manejar su complejidad y flexibilidad.
    • 🥇 GeoRSS: permite añadir la ubicación (puntos, líneas y polígonos) a las entradas de feeds como RSS y Atom.
    • 🥉 GPX: esta diseñado para intercambiar datos entre dispositivos GPS y herramientas software. Contiene información sobre waypoints (puntos de referencia), rutas y tracks (trazados de rutas).
  • CSV (Comma-separated values):
    • 🥉 GTFS: creado para compatir información sobre los horarios de transporte público y la información geográfica asociada. Sólo contiene información estática (o programada) sobre los servicios de transporte público, no en tiempo real. Contiene entre 6 y 13 ficheros CSV comprimidos en ZIP.

Otros formatos destacables y más avanzandos de intercambio o almacenamiento de datos vectoriales son:

  • 🥈 GeoParquet: almacena datos geoespaciales en un formato columnar basado en Parquet. Principalmente usado en análisis big data geoespacial con alto rendimiento y comprensión. Está optimizado para procesamiento el paralelo.
  • 🥈 IMDF: almacena datos geoespaciales detallados sobre interiores de edificios (habitaciones, pasillos y puntos de interés) usados para la navegación en interiores y gestión de espacios.
  • 🥉 Shapefile: formato que consta de múltiples archivos (comprimido en ZIP) almacena datos geoespaciales vectoriales (puntos, líneas y polígonos), ampliamente usando en SIG.
  • PMTiles: almacena teselas vectoriales en un archivo empaquetado (no SQLite) que puede ser accedido usando la cabecera de petición HTTP Range.
  • etc.

Además de estos formatos, dependiendo del proyecto y las industrias en las que trabajemos es habitual encontrar otros formatos de fichero que tienen que ser procesados y/o georefenreciados para poder usarlos en nuestras aplicaciones. Dos ejemplos:

  • Arquitectura y diseño industrial: Hay ocasiones donde las personas que crean planos de pueblos/ciudades lo hacen con herramientas de diseño asistido por computador (CAD), que generan ficheros DWG, DXF, DGN, ... y que posteriormente se pueden georeferenciar.
  • Ingeniería Civil: o herramientas de escaneado lidar 3D que generan nubes de puntos en formatos: 🥇 LAS, LAZ, E57, PLY, etc.

Si quieres explorar más, aquí tienes un listado de formatos de ficheros para datos geoespaciales que creé hace tiempo.

Para datos ráster

Hay formatos rásters que también están basados en formatos de imágenes que ya conocemos cono JPEG o TIFF.

Algunos de los formatos más habituales para almacenar y compartir imágenes georeferenciadas son:

  • 🥇 GeoTIFF: ampliamente usado en SIG, es una imagen que incluye metadatos como la proyección del mapa, sistema de coordenadas, elipsoide y datum.
  • 🥇 Cloud Optimized GeoTIFF (COG): similar a GeoTIFF pero optimizado para ser leído parcialmente (usando HTTP range requests), lo que permite acceder a grandes imágenes a través de la nube.
  • 🥇 NetCDF: formato de datos multidimensional usado para datos científicos (meteorológicos, oceanográficos, de clima, ...).
  • Tile Package: es una especificación abierta creada por Esri que consiste en un archivo comprimido que contiene múltiples carpetas con la pirámide de imágenes troceadas (teselas) con las que se genera el mosaico que es un mapa base. Puede ser usado en aplicaciones offline.
  • JPEG 2000: en el año 2006 el OGC definió los metadatos para poder georreferenciar imágenes JPEG 2000 con usando GML.
👀 Curiosidad: Cómo comprimir imágenes (ráster) erróneamente puede arriesgar vidas 🛟

Es importante tener cuidado al usar algoritmos de compresión en imágenes GIS ráster, especialmente cuando se van a usar posteriormente en procesos de análisis, ya que de no hacerlo se pueden introducir errores con graves consecuencias.

Por ejemplo, hay departamentos de urbanismo de ciudades puede usan capa ráster de elevación para llevar a cabo una evaluación del riesgo de inundación, identificando las zonas vulnerables a las inundaciones. Esta evaluación se basa en gran medida en Modelos Digitales de Elevación (MDE) que permite modelizar el flujo de agua y predecir las zonas inundables.

Al comprimir los datos se modificarán los valores de las celdas pudiendo llegar a introducir errores que conlleven cambios sutiles que suavicen la elevación, y los rasgos críticos como pequeñas zanjas y pequeñas crestas se pierden o se representan de forma imprecisa, lo que podría conllevar a una modelización inexacta de las inundaciones, de los caudales de agua, extensión de las inundaciones, diseño de rutas y planes de evacuación erróneos, ... lo que conllevaría una preparación inadecuada para las inundaciones reales y en definitiva, un riesgo para la vida de las personas.

Usar algoritmos de compresión de imágenes adecuados como "LERC (Limited Error Raster Compression)" , que permite preservar de la calidad de los datos, mantiendo márgenes de error controlados, garantizando que la compresión no degradará significativamente la calidad de los datos es esencial para mantener la precisión del análisis y la interpretación espaciales.

Puedes encontrar otros formatos raster en la Wikipedia.

nota

Las fotografías (normales, panorámicas o 360º) con los metadatos Exif (Exchangeable image file format), conocidos como GPS tags o geotags, permiten incluir información como latitud, longitud, altitud, dirección de la brújula, ángulo de inclinación en grados, o el ángulo de balanceo a las imágenes con lo que se pueden geolocalizar (como hace Google Photos o ArcGIS Online). Dicho esto, yo no las considero datos ráster al uso (en términos GIS) dado que para ello cada pixel de la imagen/celda debería estar asociada a una posición. Dicho esto, en Esri estamos desarrollando una tecnología llamada Oriented Imagery que permite procesar y añadir los metadatos necesarios a conjuntos de imágenes para hacerlo (ver ejemplo).

nota

En referencia a la nota anterior, también hay tecnologías que permiten trabajar con Full-motion video (FMV) que permiten geolocalizar todos los frames de un vídeo, pudiendo por ejemplo, usar una grabación de una cámara embarcada en un dron, elicóptero, ..., casi como si fuese una capa GIS más. Aquí dejo algunas demos: Esri FMV videos.

Para ambos

Existen formatos que permiten trabajar tanto con datos vectoriales como datos raster:

  • 🥇 GPKG: permite almacenar datos vectoriales (y raster) en una base de datos SQLite.
  • Mobile Map Package: formato propietario de Esri que permite almacenar Esri Geodatabases (datos ráster / vector), grafos (para representar redes de transporte), geocodificadores y todo lo necesario para trabajar en entornos sin conexión a Internet.
  • MBTiles: almacena teselas vectoriales (o ráster) en una base de datos SQLite que puede usar en aplicaciones offline.

Manipulación de datos

⚠️ Pendiente de hacer

Bases de datos

⚠️ Pendiente de hacer

Servidores y APIs

⚠️ Pendiente de hacer

Datos abiertos

⚠️ Pendiente de hacer

Visualización

⚠️ Pendiente de hacer

Análisis

⚠️ Pendiente de hacer

Gestión

⚠️ Pendiente de hacer

Captura

⚠️ Pendiente de hacer

Historia del GIS

A veces, que sin conocer la historia y su evolución, cuesta entender en el presente. Por eso, en ~2018 creé la web Introducción al GIS, ArcGIS y Esri con el objetivo de ayudar a entender por qué los sistemas de información geográfica son hoy como son:

Pantallazo de la web: Introducción al GIS, ArcGIS y Esri

Conclusión

⚠️ Pendiente de hacer

Otros recursos

[0] The Birth and Evolution of GeoAI

[0] Geospatial Deep Learning with ArcGIS

[1] Coordinate Systems: What's the Difference? (datum, referencia espacial y sistema de coordenadas)

[2] Tutorial: Elegir la proyección adecuada

[3] Sistemas de referencia en la ArcGIS Maps SDK for JavaScript

[5] Topology basics

[6] Tipos de geometría en diferentes technologías: GeoJSON, geometrías en ArcGIS, tipos de datos en PostGIS, formas en la API JS de Google Maps.

Comentarios