Saltar al contenido principal

Intro a los SIG para informáticos


¿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.

Así que aquí 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 / Generación" 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".

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.

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).

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 3D), las clases utilizadas para pintar los datos (Point, Polyline, etc)

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


Note: 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:

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)

Nota: faltan por añadir las representaciones 3D equivalentes.

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.

Por hacer: Ventajas y limitaciones

Datos raster

⚠️ Pendiente de hacer

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, lo normal es encontrar ficheros donde cada uno representa una capa de datos.

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). 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 un único tipo de geometría1 (puntos, líneas, o polígonos).
  • Y en la parte inferior hay dos capas raster, la de elevación (relieve) y la del mapa satélite de fondo.

Nota: Aunque cuando una aplicación es muy sencilla, los propios datos geolocalizados se puede añadir manualmente en una capa gráfica.

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 las bases de datos, vamos a repasar los formatos en los que solemos encontrar datos en internet, ya sea en archivos estáticos o a través de APIs, y que sirven para mejorar la interoperabilidad entre sistemas. Aunque no entraremos en detalle en cómo se representan.

Para datos vectoriales

⚠️ Pendiente de hacer

Para datos ráster

⚠️ 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 / generación

⚠️ 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

(diagrama de productos ArcGIS)

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