Esta sección esta dirigida especialmente a las personas que están interesadas en geocodificar direcciones en Colombia. Aunque creo que Colombia posee un sistema lógico, no muchos esfuerzos se han hecho para poder hacer una buena geocodificación, no como Europa o Estados Unidos. Espero ante mano que les sea útil esta primera entrega y cualquier duda, comentario, corrección, adición... por favor háganme saberla.
La geocodificación es el proceso por el cual se le asigna coordenadas a un punto por medio de una dirección. Este proceso es realizado por diferentes softwares SIG usando datos propios o conectándose a servidores especializados ¿Pero que hacemos si no tenemos la posibilidad de acceder a uno de estos programas o si no tenemos los datos necesarios? Una posible solución es basarnos en otras herramientas tales como Open Refine y Google Maps.
Open Refine[1] es una poderosa herramienta libre que trabaja con datos desordenados, limpiándolos, transformándolos de un formato a otro, extendiéndolos con servicios web y enlazándolos a bases de datos tal como Freebase. Una de las ventajas de esta aplicación es poder crear columnas a partir de datos existentes por medio de servicios Web, tal como Google Geocoding API. Esta API (Application Programming Interface) permite transformar direcciones a coordenadas geográficas.
Al usar la API debemos tener en cuenta algunas restricciones: si somos usuarios gratuitos podemos geocodificar máximo 2.500 puntos por día o, si somos usuarios API Google Maps for Business podemos geocodificar hasta 100.000 puntos por día. Otro aspecto importante es la sintaxis de la dirección, ya que Colombia no usa el sistema europeo de calles con nombres propios, debemos colocar las direcciones de un forma especifica.
En Colombia, a comparación de otros países, usamos un sistema cartesiano para definir las calles. El nombre de la calle depende de su sentido así, en Colombia tenemos Carreras, Calles, Diagonales o Transversales. Las Carreras y Transversales dividen la ciudad en este y oeste, o sea que van norte-sur, las Calles y Diagonales van de Este-Oeste dividiendo la ciudad en Norte y Sur. Para formar una dirección se ubica el inmueble sobre una calle principal y se mide la distancia a la que se encuentra de la calle transversal a la calle principal. Por ejemplo, en la imagen a continuación vemos un predio que se encuentra sobre la Calle 84 BIS, separado 42 m de la Carrera 13, por lo tanto la dirección será Calle 84 BIS N. 13-42. En Colombia las Calles y Diagonales aumentan hacia el Norte y las Carreras y Transversales hacia el Oeste. Este sistema es eficiente en cuanto a ubicación, por que una persona que no conozca el lugar puede fácilmente llegar a su destino en el momento en que se ubique pero, como es el caso de muchas ciudades en Colombia, las calles no son creadas según planes de ordenamiento territorial sino por la inserción de casas sin control, por las cuales se permite el paso vehicular y finalmente se les asigna una abreviatura.
Muchas calles poseen los mismos números con diferente letra,
dichas letras van de la A-Z y algunas poseen hasta dos letras (Por ejemplo la Calle
13 C y la Calle 13 AA). En las grandes ciudades, se ha dividido el territorio
en zonas norte, sur y centro, que se ve codificado en la nomenclatura con una S
o Sur, N o Norte y si no especifica es centro. Para geocodificar un punto a
partir de una dirección en Colombia usando Google Maps, la dirección debe tener
la siguiente sintaxis:
Calle 38AS 93D 54, Bogotá, Colombia
Calle 38AS # 93D-54, Bogotá, Colombia
Como se ve, la dirección debe empezar con el nombre completo
de la calle (Carrera, Calle, Diagonal o Transversal), seguido de un espacio y
el número de la respectiva calle. En el caso de que la calle contenga una
letra, la letra debe estar junto al número. Luego, si el usuario desea puede
colocar un numeral (#) o dejar un espacio, en seguida se coloca el número de la
calle transversal a la calle principal seguida de la letra (si la posee). Dejando
un espacio o un guion (-) se coloca la distancia a la cual se encuentra el predio y
seguido la letra si la posee. Finalmente, se coloca las especificaciones de la dirección
como el barrio, localidad o comuna, ciudad, país… procurando llevar un orden
ascendente.
Lo anterior es una aproximación de cómo se deben escribir
las calles en Google Maps, aunque no en todas las ocasiones funcione
correctamente, generalmente se obtienen buenos resultados. Ahora bien,
conociendo la sintaxis de la dirección, vamos a ver primero algo sobre Open Refine y luego explicaremos el procedimiento
general de cómo obtener las coordenadas longitud/latitud por medio de Google Geocoding API.
Antes de mostrar como obtener las coordenadas de nuestras direcciones, les dejo este pequeño vídeo (1 de los tres hechos) para introducirlos en Open Refine. Estos videos los encuentran en www.openrefine.org.
Ahora si, una vez exportada la tabla en la cual poseemos las direcciones a geocodificar en Open Refine, vamos a la columna donde se encuentra la dirección y damos clic en la barra desplegable, seguimos a Edit Column y Add Column by fetching URLs… Enseguida saldrá una ventana en la cual escribiremos:
Antes de mostrar como obtener las coordenadas de nuestras direcciones, les dejo este pequeño vídeo (1 de los tres hechos) para introducirlos en Open Refine. Estos videos los encuentran en www.openrefine.org.
Ahora si, una vez exportada la tabla en la cual poseemos las direcciones a geocodificar en Open Refine, vamos a la columna donde se encuentra la dirección y damos clic en la barra desplegable, seguimos a Edit Column y Add Column by fetching URLs… Enseguida saldrá una ventana en la cual escribiremos:
‘http://maps.google.com/maps/api/geocode/json?sensor=false&address=’+ escape(value, ‘url’)
with(value.parseJson().results[0].geometry.location, pair, pair.lat
+", " + pair.lng)
Esto creara una columna con los valores de latitud y longitud
separados por una coma. Para separar estos valores vamos otra vez al menú desplegable,
Split into several columns y
definimos separar la columna por la coma en dos nuevas columnas.
Finalmente tendemos una tabla con las coordenadas de cada
punto, que podremos ubicar usando algún SIG o programa en línea. La API de Google no es la única opción
que tenemos para geocodificar, por ejemplo tenemos el proyecto Nominatum[3] de OpenStreetMap que con pasos similares a los anteriores podemos encontrar las
coordenadas para nuestras direcciones.
[1] Desde el
2 de Octubre 2012 Google dejo de dar soporte al proyecto llamado Google Refine, desde entonces personas independientes tomaron su dirección y lo llamaron Open Refine. Para más información visiten la pagina www.openrefine.org.
[2] Para más información mirar Geocoding Open Refine y Google Geocoding API
[3] Para Mas Información ver Proyecto Nominatim.
[2] Para más información mirar Geocoding Open Refine y Google Geocoding API
[3] Para Mas Información ver Proyecto Nominatim.
Hola Nelson, gracias por tu artículo, muy interesante!! Pero me quedé tan solo en la primera parte. No he podido instlar google refine,. Cuando doy click al .exe, no me parece la ventana del navegador. He intentado cambiar configuraciones del internet, pero nada. Me puedes dar una mano con eso? Mil gracias.
ResponderEliminarHola, Buenos días, muchas gracias por tu comentario...en cuanto a tu pregunta, cuando abres google-refine.exe normalmente aparece una ventana de MS-DOS donde instala el programa y después abre la ventana de inicio en el explorador. Open Refine fue un producto de Google y por lo tanto te recomiendo que tengas Google Chrome instalado y como navegador predeterminado. Otra opción es que dentro del archivo .zip, hay un archivo que se llama refine.bat que abrirá la ventana MS-DOS que ya te había mencionado....Espero que te sea útil y una vez muchas gracias
EliminarHola Nelson!. Hecho!!! Pude solucionar la descarga del programa. Y logré los resultados esperados, un listado de coordenadas de mi listado de direcciones en Cali, Colombia.
ResponderEliminarMil gracias!
Con todo placer, es un gusto poder ayudar
Eliminaryo segui los pasos que dices pero no me funciono
ResponderEliminarHola Victor, tocaría que fueras mas especifico con lo que pasa para poderte ayudar...
EliminarBuen día, mira si me funciono pero la posición no corresponde a la dirrecion exacta, me una posición lejana a la que deberia estar
ResponderEliminarHola Victor...Hay ocasiones en las que no sirven la geocodificación, la verdad trate de exponer la mejor manera de poner las direcciones pero ya se me sale de las manos la forma en que google realiza la operación. Ademas que el blog dice "Lo anterior es una aproximación de cómo se deben escribir las calles en Google Maps, aunque no en todas las ocasiones funcione correctamente, generalmente se obtienen buenos resultados"....gracias por tu comentario y voy a mirar como mejorar la precisión de la geocodificación.
EliminarHola nelson.
ResponderEliminarHe hecho varias pruebas pero las direcciones que tienen letra en la "generadora" (ejemplo: carrera 15 66A 02) la ubica en la 66 y no en la 66A. Y así sucesivamente, no geocodifica las que tienen letra en la segunda posición. Qué estoy haciendo mal?
Gracias por tu ayuda
Hola, que pena contestarte hasta ahora :/, pero la verdad no sabría decirte el porqué. La verdad creería que esta en la forma en como Google tiene codificadas nuestras calles, pero lo que estoy diciendo es especulaciones, lo siento por no poderte ayudar
EliminarBuen dia... muy buena la información...las instrucciones son claras y funcionan perfentamente, solo quiero aportar que las cooordenadas que trae el procedimiento son las de la primera coincidencia que encuentra google y aveces no son las adecuadas... por ello y dado que es free, es recomendable en generar el KML y desplegarlo en google earth y revisar los puntos por si algunos se deben mover...
ResponderEliminarHola, gracias por el comentario. ¿Còmo genero el KML?
ResponderEliminarHOLA estuve viendo un video de una argentina donde ella sacaba incluso los nombres de los barrios para unas direcciones en buenos aires, yo necesito hacer lo mismo pero en cali colombia, porfavor me ayudas, esta es la URL de la chica https://www.youtube.com/watch?v=vOEuvmgXfB4
ResponderEliminar