LA GEODESIA

El atributo que distingue a los datos georreferenciados de otros tipos de datos es que contienen información sobre ubicaciones exactas sobre la superficie de nuestro planeta.

Para poder ubicar puntos o regiones sobre la superficie de la Tierra, es preciso conocer cómo es su forma y dimensiones. Este es el campo de estudio de la ciencia conocida como geodesia.

A continuación, definiremos algunos conceptos básicos para poder construir visualizaciones de este tipo de datos.

LA TIERRA COMO UNA ESFERA


Una manera de modelar la superficie de la Tierra sería considerarla como una esfera. En este caso, los cálculos de profundidad y distancias serían fáciles porque las ecuaciones son conocidas.

Sin embargo, la Tierra no es una esfera perfecta.

LA TIERRA COMO ELIPSOIDE

La rotación terrestre hace que la velocidad en el Ecuador sea mayor que en los polos, y esto deforma a nuestro planeta, haciendo que sea más “alargado” en la zona ecuatorial y más “achatado” en las zonas polares (el radio de la Tierra no es constante a lo largo de su superficie).

El elipsoide una forma geométrica que se adapta mejor a la forma real de la Tierra. Por lo tanto, permite una mejor idealización de su superficie y posibilita un mejor ajuste.

LA TIERRA COMO ELIPSOIDE

El elipsoide es una forma tridimensional creada a partir de la rotación de una elipse de dos dimensiones.

En el caso de la Tierra, el semieje mayor es el radio desde el centro de la Tierra hasta el Ecuador, mientras que el semieje menor es el radio desde el centro de la Tierra hasta el Polo.

LA TIERRA COMO ELIPSOIDE

Existen diversos elipsoides propuestos para modelar la superficie de la Tierra, los cuales se diferencian por las longitudes de los semiejes. Acá se resumen algunos de ellos:

Elipsoide Semieje mayor (m) Semieje menor (m)
Australian National 6378160.000 6356774.719
Clarke 1866 6378206.400 6356583.800
Bessel 1841 6377397.155 6356078.963
Fischer 1968 6378150.000 6356768.337
International 1924 (Hayford) 6378388.000 6356911.946
GRS 1980 6378137.000 6356752.314
WGS 84 6378137.000 6356752.314

LA TIERRA COMO ELIPSOIDE

Los elipsoides se clasifican, en términos generales, en dos grupos:

  • Elipsoides locales: se adaptan mejor a una zona específica de la Tierra.

  • Elipsoides globales o generales: son aquellos en los que coinciden tanto el centro de gravedad terrestre con el del elipsoide, como el plano ecuatorial terrestre con el del elipsoide.

El elipsoide más comúnmente usado actualmente, y a nivel global, es el World Geodetic System 1984 (WGS 84), ya que es la superficie de referencia para el Sistema de Posicionamiento Global (GPS).

LA TIERRA COMO GEOIDE

El geoide reproduce el hecho de que la masa de la Tierra no es uniforme en todos los puntos y, por consiguiente, tampoco la fuerza gravitatoria.

Dado que la masa de la Tierra no es uniforme en todos los puntos y la dirección de gravedad cambia, el geoide no es una superficie regular como el elipsoide, sino que presenta una forma irregular, con protuberancias y depresiones.

EL DATUM GEODÉSICO


Cuando se trabaja con un elipsoide general, éste se sitúa de tal modo que tanto la posición de su centro de gravedad como su plano ecuatorial coincidan con los terrestres.

EL DATUM GEODÉSICO

Cuando el elipsoide es local, estas propiedades no han de cumplirse necesariamente, y el elipsoide a solas resulta insuficiente ya que carecemos de información sobre su posicionamiento con respecto a la superficie terrestre.

EL DATUM GEODÉSICO

Surge así el concepto de datum.

El datum es un sistema de referencia. Proporciona un modelo que permite a las personas medir ubicaciones en la superficie de la Tierra en relación con un elipsoide particular que se ajusta apropiadamente a la región en la que se realizan las mediciones, en un momento particular.

EL DATUM GEODÉSICO

Hay muchos datums de referencia diferentes y todos tienen un nombre único. En términos generales, se los puede clasificar en datums globales o geocéntricos y datums locales, en función de si se utilizan como referencia en todo el mundo o si están diseñados para alguna región en particular.

Un ejemplo de la primera clase es el datum global WGS 84, establecido por el Departamento de Defensa de Estados Unidos y utilizado en el GPS.

Ejemplos de datums locales son Campo Inchauspe (nacional), Chos Malal y Tapi Aike, concebidos a partir de la necesidad de generación de cartografía en nuestro país.

EL DATUM GEODÉSICO

Dado que un datum local alinea tan estrechamente su esferoide a una área determinada de la superficie de la Tierra, no es adecuado para su uso fuera del área para la que se diseñó.

¿POR QUÉ ES TAN IMPORTANTE CONOCER TODO ESTO?

A la hora de trabajar con datos georreferenciados es fundamental conocer su sistema de coordenadas de referencia (CRS) (ya veremos cómo consultar esta información).

Esto nos sirve, por ejemplo, para saber las unidades con las que estamos trabajando, o si podemos unir espacialmente a dos datasets, ya que no podemos realizar esta operación si tienen diferentes CRS.

COORDENADAS GEOGRÁFICAS

El sistema de coordenadas geográficas es un sistema de coordenadas esféricas mediante el cual un punto se localiza con dos valores angulares: la latitud (\(\phi\)) y la longitud (\(\lambda\)).


PROYECCIONES CARTOGRÁFICAS

Si bien el sistema de coordenadas esféricas (o elipsoidales) es útil y potente, estamos más acostumbrados a la utilización de sistemas cartesianos, en los cuales la posición de un punto se define mediante un par de coordenadas X e Y.

Además, si necesitamos crear una representación visual de la información cartográfica, lo habitual es hacerlo en una superficie plana.

PROYECCIONES CARTOGRÁFICAS

Proyección cartográfica: proceso de asignar una coordenada plana a cada punto de la superficie de la Tierra.



PROYECCIONES CARTOGRÁFICAS

Una proyección cartográfica es la correspondencia matemática biunívoca entre los puntos de una esfera o elipsoide y sus transformados en un plano.


Las proyecciones se clasifican según la superficie sobre la que se proyectan los puntos. Si bien existen otras superficies, las más habituales son: el plano, el cono y el cilindro.

PROYECCIONES CÓNICAS

La superficie desarrollable es un cono, el cual se sitúa generalmente tangente o secante en dos paralelos a la superficie del elipsoide.

En este último caso, la distorsión se minimiza en las áreas entre dichos paralelos, haciéndola útil para representar franjas que no abarquen una gran distancia en latitud, pero poco adecuada para representación de grandes áreas. Ejemplos: Proyección Cónica Equiárea de Albers y Proyección Conforme Cónica de Lambert.

PROYECCIONES CILÍNDRICAS

Son aquellas que proporcionan la apariencia de un rectángulo, que puede ser visto como una superficie cilíndrica “desenrollada”.

Al proyectar, tanto los meridianos como los paralelos se convierten en líneas paralelas, aunque la distancia entre estos últimos no es constante. Ejemplos: Proyección Conforme de Mercator y Proyección Equivalente de Lambert.

PROYECCIONES PLANAS O AZIMUTALES

Consisten en proyectar una parte de la Tierra sobre un plano tangente a la esfera en un punto seleccionado. El punto de contacto puede ser el Polo Norte, el Polo Sur, un punto en el Ecuador o cualquier punto intermedio.

¡LA LISTA ES ENOOOOORME!


GEOPANDAS

Es una librería de Python de código abierto que proporciona soporte para el trabajo con datos georreferenciados sobre la base de objetos Pandas.

GEOPANDAS

GeoPandas utiliza geometrías espaciales para representar diferentes tipos de objetos geográficos.

image/svg+xml Point LineString Polygon MultiPoint MultiLineString MultiPolygon GeometryCollection

GEOPANDAS

GeoPandas utiliza geometrías espaciales para representar diferentes tipos de objetos geográficos. Estos son los más comunes:

  1. POINT (Punto): representa una ubicación individual en el espacio geográfico, definido por una coordenada de latitud y longitud. Ejemplos: ubicación de un sensor de monitoreo ambiental, una ciudad, un efector de salud, etc.

  2. LINESTRING (Línea): es una secuencia de puntos conectados que forman una línea. Representa objetos lineales, como rutas, calles, ríos o límites geográficos.

GEOPANDAS

  1. POLYGON (Polígono): es un área cerrada formada por una secuencia de puntos conectados. Representa una superficie o área geográfica, como una parcela de terreno, un lago, una provincia o un país.

  2. MULTIPOLYGON (Polígono): es una geometría que agrupa múltiples POLYGON que están relacionados entre sí, pero que no necesariamente son contiguos. Por ejemplo: conjunto de islas en un archipiélago, múltiples departamentos que conforman una provincia, múltiples provincias/estados que conforman un país, etc.

LECTURA DE ARCHIVOS CON GEOPANDAS

GeoPandas facilita la lectura de archivos geoespaciales, como Shapefiles, GML o GeoJSON, que contienen datos geográficos. La información sobre las geometrías de los objetos (como puntos, líneas o polígonos) se suele almacenar en una columna especial llamada geometry.

Para leer cualquiera de estos archivos, podemos utilizar el método gpd.read_file().

LECTURA DE ARCHIVOS CON GEOPANDAS

Para ejemplificar, trabajaremos con los datasets barrios.gml y geo_salud.gml, que se encuentran dentro de los datos abiertos de la Municipalidad de Rosario y contienen información relacionada a los barrios de la ciudad y a los centros de salud, respectivamente.

Ambos archivos se encuentran en formato GML, acrónimo inglés de Geography Markup Language (Lenguaje de Marcado Geográfico), el cual se trata de un sublenguaje de XML utilizado para el modelado, transporte y almacenamiento de información geográfica.

LECTURA DE ARCHIVOS CON GEOPANDAS

Exploremos el primero de estos archivos:

import geopandas as gpd

datos_barrios = gpd.read_file('datasets/barrios.gml')
datos_barrios.head(1)
gml_id MSLINK BARRIO OBSERVACIO geometry
0 barrios.1 28 VICTORIA WALSH Mod Lím Or POLYGON ((-60.68993 -32.96495, -60.68973 -32.9...

¿Qué tipo de elemento contiene la columna geometry?

LECTURA DE ARCHIVOS CON GEOPANDAS

datos_barrios.info()
<class 'geopandas.geodataframe.GeoDataFrame'>
RangeIndex: 51 entries, 0 to 50
Data columns (total 5 columns):
 #   Column      Non-Null Count  Dtype   
---  ------      --------------  -----   
 0   gml_id      51 non-null     object  
 1   MSLINK      51 non-null     int64   
 2   BARRIO      51 non-null     object  
 3   OBSERVACIO  51 non-null     object  
 4   geometry    51 non-null     geometry
dtypes: geometry(1), int64(1), object(3)
memory usage: 2.1+ KB

Observar que el objeto datos_barrios es un objeto de tipo GeoDataFrame y que éste contiene una columna de tipo geometry, en la que se encuentra la información geoespacial.

REPRESENTACIÓN DE DATOS GEOESPACIALES

Podemos hacer un mapa utilizando el método plot sobre el objeto GeoDataFrame:

datos_barrios.plot(edgecolor ='black', linewidth = 2, column = 'BARRIO')

REPRESENTACIÓN DE DATOS GEOESPACIALES

Podemos representar sólo las divisiones entre barrios con el método boundary.plot:

datos_barrios.boundary.plot(edgecolor = 'black')

REPRESENTACIÓN DE DATOS GEOESPACIALES

Importamos ahora el archivo geo_salud.gml y exploramos su contenido:

datos_centros_salud = gpd.read_file('datasets/geo_salud.gml')
datos_centros_salud.head(1)
fid id name codigo_calle calle altura bis direccion etiquetas subtipo ... titular estado tipo_geometria ultima_actualizacion contactos atencion descripcion piso multimedia geometry
0 F0 1220 Hospital Provincial 21950 ALEM LEANDRO N 1450 0 ALEM LEANDRO N 1450 Salud, Datos útiles LUGAR ... Provincial Publicado Punto 01/08/2017 09:35 Teléfono: 4801402. None None None None POINT (-60.63051 -32.95626)

1 rows × 25 columns

¿Qué tipo de elemento contiene la columna geometry?

REPRESENTACIÓN DE DATOS GEOESPACIALES

# Crea el mapa base con los límites de los barrios
graf_base = datos_barrios.plot(edgecolor = 'black', color = 'lightgrey', linewidth = 1)

# Superpone los puntos de los centros de salud en el mapa base
datos_centros_salud.plot(ax = graf_base, markersize = 20, color = 'darkblue')

REPRESENTACIÓN DE DATOS GEOESPACIALES


🤔 ¿Cómo podemos hacer para agregar, al gráfico anterior, información acerca del tipo de efector de salud (Municipal/Nacional/Privado/Provincial)?

Tener en cuenta que, en la base datos_centros_salud, esta información se encuentra en la columna titular.

REPRESENTACIÓN DE DATOS GEOESPACIALES

# Crea el mapa base con los límites de los barrios
graf_base = datos_barrios.plot(edgecolor = 'black', color = 'lightgrey', linewidth = 1)

# Superpone los puntos de los centros de salud en el mapa base coloreándolos según categoría en 'titular'
datos_centros_salud.plot(ax = graf_base, markersize = 20, column = 'titular')

REPRESENTACIÓN DE DATOS GEOESPACIALES

Mejoremos un poquito el gráfico anterior:

  • Agreguemos la leyenda seteando el parámetro legend = True.

  • Configuremos la paleta cmap = 'viridis'.

  • Agreguemos un título a la leyenda y ajustemos manualmente su posición en el gráfico a través del parámetro legend_kwds = dict(title = 'Efector', bbox_to_anchor = (1.4, 1)).

  • Representemos sólo los límites de cada barrio, sin relleno, para que los puntos se visualicen mejor.

REPRESENTACIÓN DE DATOS GEOESPACIALES

# Crea el mapa base con los límites de los barrios
graf_base = datos_barrios.boundary.plot(edgecolor = 'black', linewidth = 0.8)

# Superpone los puntos de los centros de salud en el mapa base coloreándolos según categoría en 'titular'
datos_centros_salud.plot(ax = graf_base, markersize = 20, column = 'titular', legend = True, cmap = 'viridis', legend_kwds = dict(title = 'Efector', bbox_to_anchor = (1.4, 1)))

OTRO EJEMPLO

Importaremos ahora el archivo cultivos_por_dpto_mapa.json, que contiene datos acerca de la superficie cultivada en cada uno de los departamentos de la provincia de Córdoba:

datos_cultivos = gpd.read_file('datasets/cultivos_por_dpto_mapa.json')
datos_cultivos.head(1)
id nombre sup_cultivada sup_trigo porc_trigo sup_maiz porc_maiz sup_soja porc_soja sup_mani porc_mani sup_sorgo porc_sorgo sup_tr_mz porc_tr_mz sup_tr_sj porc_tr_sj sup_dpto geometry
0 cultivos_por_dpto_mapa.1 JUAREZ CELMAN 542086 Has 710 Has 0.1 % 139802 Has 25.8 % 241694 Has 44.6 % 58191 Has 10.7 % 1394 Has 0.3 % 25814 Has 4.8 % 74481 Has 13.7 % 792949 Has MULTIPOLYGON (((4416979.546 6325867.470, 44168...

OTRO EJEMPLO

El objetivo es construir un mapa para representar visualmente la cantidad de hectáreas sembradas por departamento (columna sup_cultivada). Para ello, primero debemos extraer el número, separándolo de la unidad “Has”:

datos_cultivos['sup_cultivada_has'] = datos_cultivos['sup_cultivada'].str.extract(r'(\d+)').astype('int')

datos_cultivos.head(1)
id nombre sup_cultivada sup_trigo porc_trigo sup_maiz porc_maiz sup_soja porc_soja sup_mani porc_mani sup_sorgo porc_sorgo sup_tr_mz porc_tr_mz sup_tr_sj porc_tr_sj sup_dpto geometry sup_cultivada_has
0 cultivos_por_dpto_mapa.1 JUAREZ CELMAN 542086 Has 710 Has 0.1 % 139802 Has 25.8 % 241694 Has 44.6 % 58191 Has 10.7 % 1394 Has 0.3 % 25814 Has 4.8 % 74481 Has 13.7 % 792949 Has MULTIPOLYGON (((4416979.546 6325867.470, 44168... 542086

OTRO EJEMPLO

Representemos dicha información con el método plot:

datos_cultivos.plot(edgecolor = 'black', linewidth = 1.2, column = 'sup_cultivada_has', cmap = 'magma', legend = True)

OTRO EJEMPLO

Con el método crs accedemos al Sistema de Coordenadas de Referencia del GeoDataFrame:

datos_cultivos.crs
<Projected CRS: EPSG:22174>
Name: POSGAR 98 / Argentina 4
Axis Info [cartesian]:
- X[north]: Northing (metre)
- Y[east]: Easting (metre)
Area of Use:
- name: Argentina - between 64°30'W and 61°30'W, onshore.
- bounds: (-64.5, -54.91, -61.5, -21.99)
Coordinate Operation:
- name: Argentina zone 4
- method: Transverse Mercator
Datum: Posiciones Geodesicas Argentinas 1998
- Ellipsoid: GRS 1980
- Prime Meridian: Greenwich

El CRS EPSG:22174 es proyectado, lo que significa que sus coordenadas están en metros (norte y este).

OTRO EJEMPLO

Para representar las coordenadas adecuadamente, debemos reproyectar los datos a un CRS geográfico, como EPSG:4326 o WGS 84, que usa latitud y longitud en grados.

datos_cultivos_cambiado = datos_cultivos.to_crs(epsg=4326)

OTRO EJEMPLO

Rehacemos el mapa:

datos_cultivos_cambiado.plot(edgecolor = 'black', linewidth = 1.2, column = 'sup_cultivada_has', cmap = 'magma', legend = True)

LIBRERÍA FOLIUM

Folium es una biblioteca de Python diseñada para facilitar la visualización de datos geoespaciales en mapas interactivos que se pueden visualizar en navegadores web.

Basada en la poderosa biblioteca Leaflet.js, Folium permite crear mapas de una manera sencilla y personalizarlos con una variedad de capas, marcadores y herramientas de análisis espacial.

MAPA CLOROPLETH

Un mapa cloropleth es una representación gráfica de datos en un mapa donde las áreas geográficas están coloreadas o sombreadas en función de la intensidad o el valor de un atributo específico.

Este tipo de visualización es particularmente útil para mostrar variaciones en datos cuantitativos, como tasas de población, distribución de ingresos, niveles de educación o cualquier otra métrica que se pueda asociar a diferentes regiones.

MAPA CLOROPLETH CON FOLIUM

Make this Notebook Trusted to load map: File -> Trust Notebook