Ir al contenido principal

¿Avances en el problema de las Direcciones en Nicaragua 2020?



Existen relativamente abundantes artículos quejandose, burlandose, o intentando explicar (1, 2) la particularidad de las direcciones nicaragüenses, entre el ruido de quejas, se vislumbran algunas propuestas para crear una nomenclatura estándar, ninguna hasta hoy ha sido implementada. Sin embargo con el advenimiento de la tecnología, incluso en los países con nomenclaturas específicas y alta densidad de señalización, es mas común buscar una dirección en una de las varias aplicaciones existentes(Google Maps, Waze, OpenStreetMap, etc) y esta te guiará paso a paso("turn-by-turn") hacia tu destino.
Por eso pienso que en lugar de intentar forzar una nomenclatura que podría tardar años en aplicarse, se debería dar una respuesta tecnológica al problema y luego avanzar hacia la tan anhelada estandarización.

Aunque en estos tiempos la movilidad de las personas se ha reducido, al contrario la cantidad de empresas que proveen servicios de envío o transporte hacia domicilios ha crecido exponencialmente. Podemos mencionar unas cuantas: Hugo, Yolo, Piki, Aventon, Ray, Nicamandados, Jumpers y muchas otras que subcontratan a las anteriores o tienen sus propias soluciones "in-house"

¿Si este es un problema, que soluciones usan las empresas?


Públicamente no se sabe, se que algunas usan aplicaciones de última milla como Deliforce, aunque esta plataforma al estar basada en Google Maps, no proporciona ninguna ventaja. Otras necesitan que la dirección agregue el nombre del barrio o distrito para poder tener cierto "orden" para sus pedidos.

Pero mayormente estas empresas mayormente trasladan la responsabilidad de proveer la ubicación al usuario, ya sea mediante acceso a la ubicación del dispositivo (algunas no funcionarán sin este permiso. Ver Fig. 1) o pidiendo al usuario que ubique dicha ubicación en un mapa manualmente.

Fig. 1. Piki

Fig. 2. Aventón


Claramente en experiencia de usuario esto no es lo ideal, pero para estas empresas pareciera que sus operaciones no tienen pérdidas con estas opciones.

Aproximaciones y Estudios para resolver este problema.

Podríamos dividir este problema en 3 partes.

1. Interpretación

Las computadoras deberían entender si un texto se puede considerar una dirección y además entender los atributos de dicha dirección.

2. Geocodificación

Es la práctica de asignar un identificador geográfico a un registro informático. (G. Rushton, M. P Armstrong, J. Gittler, et al, “Geocoding in Cancer Research: A Review,” American Journal of Preventive Medicine, no. 30(2s), pp. 16-24, 2006
)
Se puede argumentar que el punto 1 es parte de la geocodificación, pero dado que el punto 1 tiene sus propios retos y posibles soluciones lo dejamos por separado.

3. Geocodificación inversa

A partir de un punto en un mapa conocer la dirección.

NicaPostal y YupiMap


Esta aproximación aborda la parte 3. Proponen una nomenclatura similar a las usadas en otros países, lo diferente de esta propuesta es que las direcciones se generan mediante una app a la cual debes proveer una posición GPS, y ellos generan la nueva dirección usando su nomenclatura. Luego esta "nueva dirección" puede ser ingresada en su misma app y obtendrías la posición GPS. Nos salta varias dudas sobre la implementación de esta aproximación, pero es interesante sin lugar a dudas.

Aplicación de Aprendizaje de Máquinas


El M.Sc. José Ayérdis ha estado experimentado con la aplicación de varios algoritmos de aprendizaje de máquinas a la parte 1 de este problema. Estos experimentos está públicamente accesibles en su cuenta de Github

Ojtli

Ha desarrollado algoritmos para tratar las partes 1 y 2.
La interpretación está basado en algoritmos de Clasificación y Reconocimiento de Entidades Nombradas que son parte del procesamiento de lenguaje natural. En un primer momento se utilizó Google AutoML pero en versiones recientes utiliza modelos propios basado en Tensorflow.
Para este fin se utilizó como marco teórico el artículo académico "Geocodificación para direcciones no estandarizadas. Caracterización y tipificación de direcciones. Caso de Estudio Nicaragua" presentado en la conferencia "Computación para el Desarrollo - COMPDES 2020" del cual se ha publicado el libro de actas con el ISBN 978-84-18254-70-3

La geocodificación es un algoritmo propio que utiliza datos de OpenStreetMap así como algunos APIs de Google Maps.


Mas información sobre este proyecto puede encontrarse en su sección de preguntas frecuentes.

¿Existe algún otro desarrollo en este campo?


Comentarios

Entradas populares de este blog

Enumerar filas en una consulta con MySQL

Supongamos que tenemos tablas con la estructura siguiente: documentos (iddocumento, nombre_documento, url_original, idtipo_documento, idproyecto) proyectos (idproyecto, nombre_proyecto, longitud, unidad_medida) tipo_documentos (idtipo_documento, descripcion_tipo_documento) Tenemos necesidad de hacer una consulta como la siguiente: "Enumerar todos los documentos en la base de datos agrupados por proyecto" Parece fácil, excepto por el término "enumerar", aquí tienes un truquito para que logres enumerar tus consultas: SELECT (@rownum:=@rownum+1) AS rownum, nombre_documento, descripcion_tipo_documento, nombre_proyecto FROM (SELECT @rownum:=0) r, documentos AS d INNER JOIN proyectos AS p ON d.idproyecto = p.idproyecto INNER JOIN tipo_documentos AS td ON d.idtipo_documento = td.idtipo_documento Pero que tal si te piden que enumeres los proyectos con sus correspondientes documentos?. Teniendo lo anterior es un poco mas sencillo SELECT IF(@fila=proyectos.idproyecto,

jQuery DataTables y CodeIgniter

Ajax Source Datatables permite configurar fácilmente el origen de datos de la tabla, para que esta sea generada dinámicamente desde el servidor, así que con CodeIgniter tendríamos el siguiente código public function page(){ $data['pedidos'] = $this->pedidos_model->get_pedidos($this->input->post('iDisplayStart')); define('AJAX_REQUEST', 1);//truco para que en nginx no muestre el debug $TOTAL = $this->pedidos_model->total(); echo json_encode(array('aaData'=>$data['pedidos'], 'iTotalRecords'=>$TOTAL, 'iTotalDisplayRecords'=>$TOTAL, 'sEcho'=>$this->input->post('sEcho'))); } Este método producirá algo parecido a esto: {"iTotalRecords":83099,"iTotalDisplayRecords":83099,"sEcho":"2", "aaData":[{"Id":"85514","num":"86109&q

Personalizando Chrome

Cuando hablo de personalizar no me refiero a cambios en el tema, ni modificar algún comportamiento via la configuración, no, me refiero a obtener el código, modificarlo y compilarlo para crear mi propia "distribución". Así que antes de nada realiza esto: Descargar el codigo: http://dev.chromium.org/developers/how-tos/get-the-code Como compilar: https://code.google.com/p/chromium/wiki/NinjaBuild En caso, como a mi, que necesite una version anterior: https://www.chromium.org/developers/how-tos/get-the-code/working-with-release-branches Me encontré con varios errores cuando trate de descargar la versión 37, aquí está el hilo con las soluciones: https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/pmki-Uju6Zs La version 37 no estaba preparada para los cambios que vinieron con Yosemite, un error que encontré:  https://codereview.chromium.org/555163002 https://chromium.googlesource.com/chromium/src.git/+/59c4ad104b6f03af9c9acffc0fd9a42707083390/ba