Traducir el blog
Cómo geolocalizar ciudades en el mapamundi
🔝To translate this blog post to your language, select it in the top left Google box.
Tal día como hoy de hace 12 años escribí el primer artículo de este blog, en el que sigo dando "guerra", y que seguiré publicando mientras tenga lectores que me sigan, a los que tengo que agradecer que visiten este blog a menudo para llegar algún día a los dos millones de páginas vistas (a ver si no hacen falta otros 10 años para alcanzar el segundo millón de visitas).
En un artículo anterior publiqué un Mapa con Relojes Mundiales que puedes descargar desde aquí:
En otro artículo expliqué cómo cambiar, en tiempo real, la representación plana del planeta Tierra, con zonas de día y de noche:
En este artículo explicaré cómo se añade una nueva ciudad al mapamundi llamando a una Web API.
Si en el Mapa con Relojes Mundiales se hace clic en el icono con el símbolo ➕, y luego se introduce un nombre de ciudad en la celda AA2, esa ciudad se busca con la Nominatim API y, las primeras 20 ciudades encontradas, se cargan en el rango de celdas: AA3:AA22
Al seleccionar una de esas 20 ciudades encontradas, la geolocaliza en el mapamundi y pregunta si se quiere añadir esa nueva ciudad al mapa, como se puede ver en esta captura de pantalla:
La abreviación API se refiere a los Interfaces de Programación de Aplicaciones, que permiten consultar grandes bases de datos desde una Web API, mediante un servidor que atiende mensajes de solicitud-respuesta definidas, normalmente expresados en formato JSON o XML, por medio de un mensaje basado en HTTP a través de la web.
En este caso llamaremos a la API de la web Nominatim (Open-source geocoding with OpenStreetMap (OSM) data), que nos devolverá la latitud y longitud de cualquier ciudad del mundo en cuestión de milisegundos.
Para poder encontrar hasta 20 ciudades o pueblos al introducir un nombre en la celda AA2, se ejecuta la macro GetLatLongCity, del módulo modCiudadNueva que, mediante un objeto XML, hace una llamada "GET" para obtener datos desde la página web que llama al servidor de Nominatim API:
https://nominatim.openstreetmap.org/search?format=xml&limit=20&accept-language=en&q=" & sCity
Siendo: sCity el nombre de la ciudad buscada, por ejemplo: Zaragoza, en esta página web:
https://nominatim.openstreetmap.org/search?format=xml&limit=20&accept-language=en&q=Zaragoza
En la llamada a la API se incluye:
- format=xml, con el formato del archivo de salida.
- limit=20, con el número máximo de resultados.
- accept-language=en, con el lenguaje de búsqueda, en este caso en inglés (=en). Para español habría que cambiar a: =es.
Código de la macro que llama a Nominatim API, y que devuelve xml.responsetext con la respuesta, que es cargada en la celda A1 de la hoja 'Ciudades':
Nominatim indexa entidades con nombre (o numeradas) dentro del conjunto de datos de OpenStreetMap (OSM), que es un mapa del mundo creado por gente como tú o como yo, y que es de uso libre bajo una licencia abierta.
La Nominatim API consulta los datos buscando objetos OSM por nombre o tipo, y esta documentada en esta página en inglés:
La API de búsqueda (/search) permite buscar una ubicación a partir de una descripción o dirección textual. Nominatim API Search admite consultas de búsqueda estructuradas y de formato libre.
En la siguiente página se detallan las políticas de uso de esta API.
Me quedo con esta frase:
"En principio, estamos contentos de que la API pública sea utilizada por usuarios externos para usos creativos e inesperados."
El resultado de la búsqueda es un archivo con formato XML, del que solamente interesa obtener los valores de estas 3 etiquetas para cada uno de los 20 resultados de la búsqueda:
- display_name: con el nombre de la ciudad o pueblo encontrado.
- lat: con la latitud geográfica en formato decimal.
- lon: con la longitud geográfica en formato decimal.
Para extraer esos 3 valores se puede hacer importando los datos XML de un servicio web en la hoja de cálculo de Excel, como se explica aquí:
¡O mediante fórmulas! ¡que es como a mí me gusta!, pues tengo todo el control sobre las etiquetas que quiero extraer.
En la celda A1 de la hoja 'Ciudades' está el resultado de la búsqueda con Nominatim API.
En la columna B he escrito los 3 nombres de las etiquetas, repetidos 20 veces, de las que quiero obtener su valor: lat, lon y display_name, con el signo igual (=).
En la celda A2 he escrito esta fórmula arrastrada hacia abajo hasta la celda A61:
=SI.ERROR(EXTRAE(A1;C1+LARGO(B1)+1;LARGO(A1)-C1-LARGO(B1));"")
En la columna C está la fórmula que busca la posición de las etiquetas de la columna B en la columna A:
=SI.ERROR(ENCONTRAR(B1;A1);"")
La fórmula de la columna D extrae los valores de cada una de las etiquetas XML:
=SI.ERROR(IZQUIERDA(A2;ENCONTRAR("'";A2)-1);"")
En las columna E a K he creado una tabla de ciudades y fórmulas auxiliares para conseguir la lista de hasta 20 ciudades encontradas, lo que no voy a explicar por falta de espacio...
En la fila 24 se encuentra la ciudad seleccionada, con su latitud y longitud, su región y país.
La nueva ciudad sustituirá a una ciudad anteriormente programada en la hoja 'Relojes' y obtendrá su geolocalización en el mapamundi mediante la función LocalizarCiudad, que devuelve la posición en el mapa del punto que representa a la ciudad:
Esta función se llama en la macro PreguntarCiudad para obtener la longitud y latitud de la nueva ciudad, tanto en la hoja 'Relojes' como en la hoja 'Mundo':
Y así he podido geolocalizar cualquier ciudad del planeta Tierra en el mapamundi con relojes.
¿Qué te parece? ¿Cómo te quedas?
Mi lista de blogs
-
Crea desde Cero tu Propio Gestor de Tareas en Excel - Hace unos días buscaba un software para gestionar mis tareas. Prioridades, responsables, fecha de inicio, fecha de fin, indicadores de […] The post Crea ...Hace 17 horas
-
GENERAR ORGANIGRAMA CON AZURE FUNCTIONS, AUTOMATE Y POWER APPS - Hola a todos, Este es uno de esos post que me gusta escribir porque la herramienta sobre que voy a hablar me ha encantado crearla. … La entrada GENERAR ...Hace 1 día
-
ConBeamU and Strand7 check update - Results of the continuous beam spreadsheet were last checked against Strand7 results 10 years ago. I have now updated this check with the latest version (4...Hace 4 días
-
Un número como diferencia entre potencias (2) - En la anterior entrada sobre este tema se usó la descomposición en factores primos de un número. Esto supone declarar los vectores *primo()* y *expo()* d...Hace 5 días
-
Tu agente secreto para entender las finanzas del negocio - Descubre cómo crear de forma sencilla y práctica un agente de IA que actúe como «agente secreto”, Interpretando los números de tu negocio y ayudándote a ...Hace 1 semana
-
Get Ready for an Excellent Holiday Season - Happy Thanksgiving, if you’re celebrating tomorrow! And then it’s Black Friday, so get your shopping list spreadsheet ready for that! Note: For some produc...Hace 1 semana
-
Nuevo mapa de municipios - Domadores - 🔝*To translate this blog post to your language, select it in the top left Google box. * *A partir de ahora aprenderás a domar fieras 🐈⬛ 🐘 🐯 🦁 🐍...Hace 2 semanas
-
Excel de Diseño de Mezclas de Concreto Método ACI 211 (Dosificación de hormigón) - El método ACI 211, desarrollado por el Comité 211 del American Concrete Institute, es uno de los procedimientos más utilizados a nivel internacional para e...Hace 2 semanas
-
How to Use the COPILOT Function in Microsoft Excel - Wondering if you could use the mighty Copilot AI from Microsoft in your Excel workbooks to think and work faster? I’ve got you covered! Read on to learn ho...Hace 5 semanas
-
Mostrar datos de dos celdas en un cuadro de texto de Microsoft Excel - En Microsoft Excel es posible vincular el contenido de una celda a un cuadro de texto o a una forma. Vincular contenido de cuadro de texto a valor de cel...Hace 5 semanas
-
El error #¡NULO! y el operador de intersección - En este vídeo te muestro la utilidad del operador de intersección (el espacio) para hacer búsquedas en tablas de doble entrada. Te dejo una descripción… ...Hace 5 semanas
-
Who is my boss’s boss? [Data Analytics Challenge – 001] - Let’s try something different. I will share a data analytics challenge here. Post your solutions in the comments. Our first challenge involves Employee D...Hace 4 meses
-
🛠️ Error Formula.Firewall en Power Query: ¿Qué es y cómo solucionarlo? - Power Query es una herramienta poderosa para transformar y combinar datos en Excel o Power BI. Sin embargo, en algunos escenarios comunes, puedes encontrar...Hace 4 meses
-
Cómo hacer gráficos en Excel - Excel es una de las herramientas más potentes y versátiles para el análisis y la presentación de datos. Los gráficos en Excel no solo ayudan a visualizar...Hace 8 meses
-
Fin - Llevo tiempo pensando esta entrada y no sé que decir. Analisis y Decisión nació en 2008 y no ... Leer más »Hace 10 meses
-
Análisis DAFO (FODA, DOFA) las decisiones con Excel - Para conocer la situación de una empresa, proyecto o persona, recurrimos al análisis DAFO (FODA, DOFA) en la toma de decisiones con Excel. El los años sese...Hace 1 año
-
Color, Conditions, and Copilot: How to save time using conditional formatting with Copilot in Excel - Hi everyone, this is part 11 in a series of posts to show you some of the things that are possible to do with Copilot in Excel. *What is conditional f...Hace 1 año
-
How To Predict Bearing Life With Excel - When you work in mechanical engineering, understanding the reliability and performance of bearings under various conditions is crucial. Bearings are the co...Hace 1 año
-
TikTok’s search evolution - 2 in 5 Americans use TikTok as a search engine. Nearly 1 in 10 Gen Zers are more likely to rely on TikTok than Google as a search engine. More than half of...Hace 1 año
-
Unblocking and Enabling Macros - When Windows detects that a file has come from a computer other than the one you're using, it marks the file as coming from the web, and blocks the file....Hace 2 años
-
Office Scripts: Trabajando con Tablas - [image: Office Scripts: Trabajando con Tablas] Me he dado cuenta que últimamente solo escribo de lenguaje M (es mi pequeño vicio)... pero hay que liberar l...Hace 2 años
-
Hello world! - [image: Hello world!] Welcome to WordPress. This is your first post. Edit or delete it, then start writing!Hace 3 años
-
La importancia de saber mecanografía en 2022 - [image: Resultado de imagen de mecanografía viñeta escribiendo a máquina] Según la RAE, la mecanografía es el arte de escribir a máquina. Hace unos cuantos...Hace 3 años
-
London Excel Meetup Workbooks - The workbooks used in my presentation on “Analytical and Interactive Dashboards in Excel” at the London Excel Meetup, September 3, 2020Hace 5 años
-
Cálculo de jornada que termina al día siguiente (Power Query) y despedida - [image: Cálculo de jornada que termina al día siguiente (Power Query) y despedida] Este blog se ha ocupado de cálculos de tiempo con bastante intensidad, c...Hace 5 años
-
International Keyboard Shortcut Day 2019 - The first Wednesday of every November is International Keyboard Shortcut Day. This Wednesday, people from all over the world will become far less efficient...Hace 6 años
-
Welcome, Prashanth! - Last March, I shared that we were starting to look for a new CEO for Stack Overflow. We were looking for that rare combination of someone who… Read more "W...Hace 6 años
-
Visualize parts and whole - combine clustered column and stacked column charts - *Inga: Disa what?* *Igor: -ppeared.* by The FrankensTeam ------------------------------ Really it was 3 years ago we posted our last article? *Freddy: Th...Hace 6 años
-
Salvador Sostres, analfabeto profesional - Los nuevos tiempos traen nuevas profesiones. Internet, además, ha revolucionado el mundo del periodismo y la palabra escrita. Adaptarse o morir, ese es el ...Hace 7 años
-
Planificación de compras - Realizar una lista con los productos que necesitamos y que formarán parte de nuestra cesta de la compra nos ayuda a *encontrar la combinación de bienes p...Hace 13 años
-
-
-
-
-
-
-
-
-
No Response to "Cómo geolocalizar ciudades en el mapamundi"
Leave A Reply
Comenta este artículo, critícalo o avisa si detectas algún error que haya que corregir.