Feb 112013
 

GeoPlanet es una base de datos de información geográfica que Yahoo! ofrece gratuitamente en internet (aunque con limitaciones de uso) . En este artículo exploramos la información que se puede obtener de esta base de datos y la manera de consultarla.

Introducción

GeoPlanet es un excelente recurso online para obtener información geográfica, que complementa otras fuentes como Google Maps, GADM y OpenStreetMaps. Su base de datos contiene información sobre más de seis millones de lugares en todo el mundo, y está estructurada jerárquicamente, de manera que cualquier entidad existente está contenida en otra entidad de nivel superior.

El acceso al servicio se realiza utilizando un API basado en solicitudes HTTP GET. Aunque el servicio es gratuito, cada solicitud debe incluir un “application ID” que debe haber sido obtenido previamente. Por otra parte, Yahoo! impone un límite de 2000 solicitudes por día.

Cada entidad tiene un identificador denominado “WOEID” (Where On Earth ID).

Obtención del application ID

Para solicitar un ID de aplicación, accedemos a la url: https://developer.apps.yahoo.com/wsregapp/. La página de registro nos presenta un formulario en el que debemos rellenar datos del usuario y una descripcion del uso que se pretende hacer:

yahoo-app-id

 

Tras rellenar la información solicitada, obtenemos un identificador de 68 caracteres, que utilizaremos en las llamadas al API.

Obtener el WOEID y el resto de información geográfica de un lugar

El primer paso es obtener el identificador WOEID a partir del topónimo de lugar cuya información geográfica nos interesa.

Para ello realizamos una consulta como en el siguiente ejemplo:

Y obtenemos como respuesta un documento XML:

Nota: Si lo preferimos, podemos obtener los resultados en formato JSON, añadiendo el parámetro “format=json”. Esto es aplicable a todas las solicitudes realizadas al API:

Obtener varios resultados posibles para un topónimo

En ocasiones, un nombre puede ser ambiguo. Por ejemplo, hay muchas ciudades que se llaman Madrid o Toledo en distintos países de América, además de las ciudades con dichos nombres en España.

En la solicitud que hacemos a GeoPlanet, podemos indicar un número de resultados que deseamos obtener:

La respuesta es un documento XML que contiene varios elementos <place>…</place>:

En el ejemplo podemos observar:

– En el tag <places>, los atributos “start” y “count” contienen los parámetros de la consulta realizada, y el atributo “total” indica el número total de resultados existentes en la base de datos para la consulta. En este caso, 15 entidades denominadas “madrid”, de las cuales hemos obtenido cinco.

– La jerarquía está recogida en los tags <admin[1,2,3]> y<locality[1,2]>. Para cada una de las entidades referenciadas en estos tags se indica su identificador WOEID.

 Obtener la información asociada a un WOEID

Los WOEIDs obtenidos en las respuestas recibidas pueden ser utilizados para consultar la información disponible sobre ellos, con urls de la forma:

También podemos obtener el “padre” de una entidad con una url de la forma:

Nota: por defecto, esta consulta devuelve sólo los datos “woeid”,”placeTypeName” y “name”. para obtener toda la información asociada, podemos utilizar el parámetro “select=long”, como se ve en el ejemplo.

Obtener el nombre del lugar asociado a un WOEID en otro idioma (si existe):

Obtener una lista de entidades vecinas:

Obtener las entidades relacionadas jerárquicamente

Las entidades relacionadas jerárquicamente con una entidad identificada por su WOEID se pueden obtener con una url de la forma:

en donde RELACION puede ser:

  • parent (padre) – El padre de la entidad
  • ancestors (ascendientes) – Todas las entidades de las que una entidad es descendiente
  • siblings (hermanas) – Todas las entidades que dependen del mismo padre
  • children (hijas) – Todas las entidades de las cuales la entidad es padre
  • descendants (descendientes) – Todas las entidades de las cuales la entidad es un ascendiente.

Referencias

 Publicado por en 9:29 pm

 Deja un comentario

(requerido)

(requerido)