Geocoding: Cómo asignar coordenadas geográficas a tus direcciones

Contribución:
Ing. Sist. Mauricio Márquez Goa
Estudiante Ing. Agrim. Steffi Giraudo
Equipo IDECOR


9 de diciembre 2020.

El proceso de geocodificar es uno de los más utilizados por múltiples usuarios, ya sea que tengan conocimientos “geo” o no. El más usado son las aplicaciones móviles que permiten indicar una dirección y obtener una ruta óptima para llegar a esa ubicación. A veces hay desafíos tales como una calle que se escribe distinto o una numeración que no se encuentra e implica una pequeña investigación para lograr determinar la posición buscada.

El proceso se complejiza cuando el número de direcciones a geolocalizar es grande, de modo que no es posible resolver con una aplicación móvil, sino que requiere del uso de herramientas de escritorio y un arduo proceso de homogeneización de datos, tanto en los datos alfanuméricos como en los geográficos.

En este artículo, presentaremos una serie de pasos que permiten localizar con coordenadas geográficas de manera inequívoca direcciones o sitios de interés a través de procesos de geocodificación /geolocalización (geocoding).

Pasos a seguir

Paso 1. Capas necesarias

Un proceso de geocodificación requiere de al menos una capa geográfica (generalmente son capas lineales de ejes de calles, pero en casos generales pueden ser puntos o polígonos a nivel de localidad) y una tabla de registros alfanuméricos cuya posición se desconoce pero que mediante la capa geográfica sería posible estimar una posición.

Paso 2. Elección del geocodificador

El proceso de geocodificar requiere del uso de un algoritmo, para ello hay plugins descargables en QGIS. Si se utiliza alguna herramienta de ESRI tienen la posibilidad de construir un geocodificador según algunos parámetros previamente fijados o es posible desarrollar algún algoritmo propio utilizando lenguaje de programación (por ejemplo Python) o dentro de una base de datos.

La elección del geocodificador depende de los datos y herramientas disponibles y condicionará los procesos de adecuación de datos.

Paso 3. Normalización de datos

Todas las herramientas que utilizan algoritmos requieren que se cumplan ciertas premisas para que funcionen de acuerdo con la lógica que fue desarrollada. En este caso, es necesario establecer algunos campos (atributos) que indiquen el nombre de la calle y altura (a veces estos datos deben ir en campos separados y otras veces combinados), la localidad, el código postal, el país, etc. La estructura de los datos dependerá del geocodificador que se utilizará.

Otro punto importante es que los nombres de las calles deben estar siempre escritos de la misma manera, de modo que haya correspondencia en los registros. Por ejemplo, si en la capa de ejes de calle figura “Avenida Colón”, en la tabla de registros a geocodificar debe estar escrito de la misma manera.

Paso 4. Ejecución del geocodificador (iterativo)

Finalmente, se procede a ejecutar el geocodificador. Es importante saber que no todos los datos se ubicarán, sino que quedarán remanentes, sobre los que se deberá trabajar, repitiendo los procesos de normalización tanto sobre la tabla de registros alfanuméricos como sobre los datos geográficos.

Este será un proceso iterativo, puesto que cada vez que se ejecute el geocodificador quedarán datos sin geolocalizar sobre los cuales trabajar, hasta que se llegue al punto en que se considere que el resultado obtenido cumple con los objetivos propuestos.

Un ejemplo práctico

Veamos un ejemplo de una tabla CSV de direcciones en la zona de Barrio Alberdi en Córdoba capital, la cual será geocodificada a través de QGIS utilizando un complemento.

Primero, añadiremos nuestra tabla de direcciones al QGIS y luego la exploraremos.

Observamos que la misma, está compuesta por los campos “id” de tipo de dato integer, “calle” de tipo texto, “calle_normalizada” de tipo texto, “altura” de tipo integer, “localidad” de tipo texto, “provincia” de tipo texto y “país” de tipo de dato texto.

En el proceso de revisión, se han detectado anomalías, por tal motivo, a nuestra tabla se le ha realizado una limpieza del campo “calle”, particularmente se ha cambiado aquellos caracteres especiales o palabras incompletas para obtener una mejor descripción del nombre de la calle. Ejemplo: Con la función replace de QGIS hemos sustituido el carácter especial “¥” por “Ñ”, de similar modo se han hecho las sustituciones de siglas por palabras, como ser “AV” por “AVENIDA”, entre otras.

Ya teniendo nuestra tabla de direcciones limpia, procederemos a construir las variables requeridas por el geocodificador.

Antes distingamos qué requiere el Geocodificador de QGIS, denominado MMQGIS, el cual es un plugin instalable desde los complementos del Software.

Para hacer uso del Geocodificador MMQGIS desplegaremos el apartado del menú MMQGIS – Geocode – Geocode CSV with Web Service.

A continuación, visualizaremos la siguiente ventana:

MMQGIS requiere, primordialmente, que le indiquemos los siguientes campos: Dirección Exacta (Address), Ciudad (City), Localidad o Estado (State), País (Country).

Además, nos solicita indicar con cuál servicio deseamos hacer el geocoding. Las opciones disponibles son:

  • Google
  • OpenStreetMap
  • US Census Bureau
  • ESRI Server

Tanto Google como ESRI Server, requieren poseer una Api Key o un servidor, sin embargo, este ejercicio lo realizaremos con el servicio de OpenStreetMap (OSM) que es gratuito.

Observando la ventana del geocodificador, en la variable Dirección Exacta (Address) se debe introducir tanto la calle como la altura, entonces retomando nuestra estructura de datos, notamos que debemos construirlo, para ello haremos una concatenación entre los campos “calle_normalizada” y “altura”; de manera que tengamos las direcciones tal y como son descritas para la localidad de Córdoba Capital. Por lo tanto, utilizaremos la calculadora de datos de QGIS y crearemos el campo que contenga calle y altura, aplicando la función: concat(«calle_normalizada», ‘ ‘, «altura»)

Habiendo ajustado la estructura de la tabla, abrimos nuevamente el geocodificador MMQGIS e indicamos los requisitos necesarios.

Nótese que la salida serán dos archivos, el primero será un shape file que contendrá los registros geocodificados y el segundo un CSV con los registros no geocodificados (para continuar el proceso iterativo).

Una vez culminado el proceso, nos indicará la cantidad de registros que se lograron geocodificar.

En el ejemplo implementado, nos arrojó un valor de 904 elementos geocodificados de 1599 (57%).

A los fines de mejorar el porcentaje de registros geolocalizados, se debe revisar qué ocurre con aquellos registros que el Geocoding de OSM no logra ubicar, para corregirlos y volver a procesar, tanto aquellos registros que no fueron geocodificados como los que fueron geocodificados erróneamente.

De esta manera, hemos demostrado cómo geocodificar direcciones a través del servicio de OSM y QGIS con el complemento MMQGIS.

Aprovechando datos disponibles en la IDE

Los datos existentes en la IDE pueden ayudarnos a controlar estos procesos masivos, por ejemplo mediante la capa de Radios Urbanos pueden identificarse aquellos registros que fueron ubicados erróneamente por el algoritmo (en las localidades tenemos nombres de calles que se repiten y en ocasiones el algoritmo puede ubicar puntos en otras localidades), si se utiliza una capa propia de calles los límites de radios urbanos o departamentales pueden permitir agregar esta información a los datos propios.

Hace algunos meses se ha comenzado con la publicación de datos municipales; en el siguiente link pueden acceder a la nota del primer caso: «IDECOR Ciudades: Jesús María se suma a MapasCordoba«.  Y en lo que resta del año está previsto seguir sumando nuevos Municipios, lo que permitirá realizar procesos de geocodificación con datos oficiales de los mismos.

En una próxima entrega expondremos cómo hacer limpieza de datos con Postgres/PostGIS y geocodificar con las cartografías de las municipalidades!

Cualquier duda o inquietud, podés contactar al equipo de IDECOR en [email protected]. Y para mantenerte informado seguí a IDECOR por Instagram en idecor.ok y por los materiales de capacitación en el canal de YouTube IDECOR.