Calcular distancias es un reto común para los proyectos de desarrollo. Afecta en la planificación de los sistemas de transporte, en la cobertura de servicios públicos y en los procesos de cálculo de valores del suelo, entre otras cosas. Para poder procesar esta información masiva sobre las distancias de forma eficiente como parte de sus proyectos de carácter público, el economista Rodrigo Azuero Melo desarrolló la herramienta Gmapsdistance en código abierto, conectando el poder del lenguaje de programación R con Google Maps.
Ahora que la herramienta se sumó a la iniciativa del BID “Código para el Desarrollo,” aprovechamos para entrevistar a Rodrigo y aprender más sobre Gmapsdistance, para que cualquier persona u organización pueda sacarle provecho.
Primero, cuéntanos un poco de ti
Soy un economista colombiano trabajando desde julio de 2017 como especialista en la división de gestión fiscal del BID. Hice mi pregrado y maestría en economía en la Universidad de Los Andes y posteriormente hice un PhD en economía en la Universidad de Pennsylvania. Siempre me ha apasionado el análisis y desarrollo de políticas públicas, así como las matemáticas y la programación. En economía encontré una disciplina donde puedo combinar ambos intereses. En el BID, específicamente en la unidad de gestión fiscal, también encontré un ambiente ideal para el desarrollo de herramientas digitales que permitan brindar soluciones a temas de políticas públicas.
¿Qué es la herramienta “Gmapsdistance”?
Partamos por Google Maps, que es una herramienta poderosa que permite identificar con precisión la distancia y el tiempo de recorrido entre dos puntos teniendo en cuenta diferentes factores como la cantidad de tráfico en el momento de realizar el viaje, o el medio de transporte a utilizar, entre otros.
Aunque es poderosa, la plataforma de Google Maps no está diseñada para realizar un volumen alto de búsquedas en tiempo real, lo cual es fundamental para el análisis de políticas públicas. Por ejemplo, si quieres saber cuál es el tiempo promedio que tardan los ocho millones de personas que residen en Bogotá para llegar al hospital más cercano, realizar estos cómputos directamente en Google Maps va a tomar algo de tiempo.
Gmapsdistance resuelve este problema, pues es una herramienta que conecta al programa R con Google Maps directamente.
Gmapsdistance se ha utilizado en diferentes ámbitos. Por ejemplo, para evaluar qué tan importante es la distancia a centros de atención cardíaca en la salud de adolescentes con problemas congénitos en el corazón; para medir la accesibilidad de la población a diferentes servicios de transporte público; y para evaluar qué tanto afecta la distancia a centros urbanos en la valoración de los predios en California. En la actualidad se está utilizando para evaluar el estado de acceso a la salud en Kenia.
Como parte de la iniciativa, la herramienta y más información sobre ella se encuentra disponible en la página de Código para el Desarrollo. La versión más reciente del programa, así como las instrucciones y algunos ejemplos de cómo utilizar esta herramienta se encuentran en mi perfil de Github. En total, esta herramienta ha sido descargada aproximadamente 17.000 veces.
¿Cuál fue el reto que te inspiró crear esta herramienta para calcular distancias?
En el verano de 2015 estaba trabajando en el sector social del BID. Específicamente, en un proyecto de mentorías de maestros de escuelas rurales en Ecuador. Un problema al que nos enfrentamos fue decidir dónde deberían estar ubicados los centros de mentorías para estos maestros. Teníamos las coordenadas geográficas aproximadas de los lugares de residencia de los maestros y con base en ellos debíamos decidir dónde establecer los centros de mentoría, de manera que incluyeran al mayor número posible de maestros, pero de tal forma que minimizáramos el tiempo de viaje que debían hacer ellos a los centros. En este reto, diseñamos un algoritmo que nos permitiera realizar un gran número de búsquedas en Google Maps en tiempo real. Este fue el reto inicial que me motivó a desarrollar esta herramienta.
¿Cómo la desarrollaste?
Mientras estaba haciendo el PhD en economía, me interesé bastante en los temas de big data y machine learning, y en general, en mejorar mis habilidades de programación en diferentes lenguajes. Este interés también lo tenía un gran amigo que hice durante el doctorado, David Zarruk, y junto con él decidimos formalizar y desarrollar esta herramienta.
¿Cuál es la ventaja de poder conectar R con Google Maps?
Primero, R es un lenguaje de programación bastante flexible y fácil de utilizar. Con pocas líneas de código puedes desarrollar una gran cantidad de algoritmos. Es un programa de código abierto u “open source”, por lo cual, es gratis y abierto al público. Cada vez es más utilizado por la comunidad en aplicaciones de ciencia de datos, datos masivos o “big data”, machine learning, entre otros.
La ventaja al combinar ambas herramientas está en que te permite utilizar los algoritmos altamente sofisticadas de Google Maps, pero puedes implementarla para realizar cientos de miles de cómputos en tiempo real a través de R.
¿Cómo se utiliza la herramienta Gmapsdistance?
El primer paso para utilizar Gmapsdistance es instalar alguna versión del programa R. Una interfaz muy popular es RStudio. Una vez se cuenta con RStudio, el siguiente paso consiste en instalar el paquete Gmapsdistance. Esto se hace en dos pasos, ejecutando las siguientes líneas en RStudio:
[code] install.packages(“GmapsDistance”) library(GmapsDistance) [/code]
Con esto, el programa está listo para ser utilizado. Se necesita establecer un origen, un destino, y un modo de transporte. Las ubicaciones se pueden poner en cualquier formato que reconozca Google Maps, simplemente es necesario poner el signo más (+) entre palabras. Por ejemplo, si quiero computar la distancia y el tiempo que me toma conducir un auto entre Washington y Nueva York, debo correr los siguientes comandos:
[code] origin="Washington+DC" destination="New+York+City+NY" GmapsDistance(origin,destination,mode="driving") [/code]
El comando también reconoce coordinadas tipo lat-long. Por ejemplo, para computar el tiempo y la distancia entre la ciudades griegas de Maraton y Atenas, ejecuto las siguientes líneas:
[code] results = GmapsDistance(origin = "38.1621328+24.0029257", destination = "37.9908372+23.7383394", mode = "walking") [/code]
Adicionalmente, también se puede computar múltiples distancias y tiempos entre diferentes orígenes y destinaciones de manera simultánea. También se puede establecer un tiempo diferente al actual para computar los cálculos teniendo en cuenta el nivel de tráfico. Un ejemplo está en la siguiente línea de comando:
[code] results = GmapsDistance(origin = c("Washington+DC", "New+York+NY", "Seattle+WA", "Miami+FL"), destination = c("Los+Angeles+CA", "Austin+TX", "Chicago+IL", "Philadelphia+PA"), mode = "bicycling", dep_date = "2022-08-16", dep_time = "20:40:00") [/code]
¿Cuál sería un aprendizaje clave que tuviste durante el proceso de crear la herramienta?
Aprendí que hay un gran ambiente colaborativo en toda la comunidad de ciencia de datos. Esto creo que tiene que ver con dos puntos. Primero, gracias al desarrollo de espacios ideales de colaboración entre programadores. Plataformas como StackOverflow, donde cualquier programador puede plantear una duda, comentario, o sugerencia para mejorar un programa, así como Github o Gitlab, donde el código está disponible para que el público lo modifique, comente, o adapte libremente.
El segundo punto está relacionado con el hecho de que cada vez es más común el uso de paquetes estadísticos que son de código abierto y donde cualquier persona puede colaborar y desarrollar su propio código, por ejemplo, R, Python o Julia. Tienen una comunidad bastante activa, y los usuarios pueden desarrollar rutinas que mejoren su implementación.
En cuanto a Gmapsdistance, la comunidad de Data Science ha sido activa proveyendo comentarios a la herramienta y sugiriendo diferentes usos que se le puede dar. Se han realizado reseñas de GmapsDistance en diferentes portales de Data Science como RPubs, Exegetic y R-bloggers, y se ha utilizado en diferentes talleres o clases de ciencia de datos (ejemplo 1, ejemplo 2, ejemplo 3).
¿Cómo te gustaría ver la herramienta mejorada o adaptada hacia el futuro?
Creo que Gmapsdistance tiene un gran potencial en el análisis de políticas públicas. Ya ha sido implementada en análisis de provisión de bienes públicos, valoración de predios y en análisis de acceso a servicios de salud, entre otros. Sin embargo, hay unos puntos que podrían mejorarse para utilizar esta herramienta en su máximo potencial.
Las limitaciones a esta herramienta están dadas por las limitaciones de Google Maps. Por ejemplo, en Google Maps no puedes realizar más de 2,500 búsquedas en un día, si quieres realizar más búsquedas debes pagar por estos servicios. En algunas ocasiones hemos tenido que desarrollar rutinas que se exceden de este límite y debemos hacer el pago correspondiente a Google.
Adicional a esto, siempre recibo sugerencias de usuarios sobre cómo mejorar esta herramienta. Por razones de tiempo no hemos podido implementar todos los comentarios. Nos gustaría poder encontrar a alguien en la comunidad a quien podamos incorporar en el proyecto y que esté dispuesto a contribuir activamente.
Entrevista con Rodrigo Azuelo Melo, especialista de Gestión Fiscal del BID y creador de GmapsDistance; realizada por Michelle Marshall y Arianna Orozco, editoras del blog “Abierto al Público” y consultoras del Sector de Conocimiento y Aprendizaje del BID
¿Estás buscando herramientas adicionales? Prueba el Agregador de Indicadores, una librería de R que te permite buscar, descargar y comparar indicadores del portal de datos abiertos del BID, Números para el Desarrollo, entre otras fuentes.
También puedes reutilizar MapMap, una aplicación móvil desarrollada para recolectar datos con georreferencia de las rutas de transporte público en Xalapa, Veracruz, México.
Encuentra más herramientas abiertas y gratuitas en el catálogo de Código para el Desarrollo.
Adán Marcos Dice
Gracias por el desarrollo de Gmapsdistance, complete un proyecto donde se debía medir las distancias entre conflictos sociales y puntos de atención de una entidad financiera comprometida con el desarrollo del Perú.
Dante Baldeon Dice
Buenos días Adán:
Me parecio genial su aplicación, en mi caso trabajo en el sector salud y queremos identificar los distritos y su accesibilidad a los hospitales con servicio oncológico.
Saludos
Dante
daniel fernandez Dice
Hola!.
Para cosas simples, yo uso una pagina que se llama “azhelper.com”
https://www.azhelper.com/es/calculadora-de-distancias
Escribes la ciudad de origen y destino. Pero creo que sólo sirve para algunos paises de Europa solamente. Espero que os sirva!
Elizabeth Z Dice
Muy buen recurso me encanta! Sin embargo estaría genial que implementaran el modo aéreo para distancias rectas, ampliaría aún más su nivel de utilidad y aplicación a otros sectores, gracias!