Seguro que más de uno ha buscado alguna vez la API de AEMET (Agencia Estatal de Meteorología) sin éxito. Siendo esta agencia de carácter público debería tener una API al estilo openweathermap y similares a nivel de España pero si buscamos algo del estilo api.aemet.es no hallamos nada.
Entonces ¿tiene AEMET una API? Bueno, no exactamente pero nos vale si queremos recoger datos meteorológicos del país. Fijaos en la siguiente dirección http://www.aemet.es/xml/municipios/localidad_28013.xml. Aquí encontramos un xml con los datos de predicción del tiempo en Aranjuez de los próximos siete días. Para buscar los datos de un municipio en concreto, el sistema va de la siguiente manera: debemos escribir la url http://www.aemet.es/xml/municipios/localidad_X.xml siendo X un código numérico que consiste en el código de provincia. En Madrid es 28 pero si tienes dudas de qué código es el que corresponde a tu provincia, coincide con las dos primeras cifras del código postal de tu localidad. Las otras tres cifras (que indican el municipio en concreto) son un número correlativo acorde con el orden alfabético que le corresponde a ese municipio.
Es decir, que si yo enlazo a http://www.aemet.es/xml/municipios/localidad_28001.xml salen los datos de La Acebeda (Madrid) ¿Por qué La Acebeda corresponde al código 001? Porque es el primer municipio de Madrid si los ordenamos por orden alfabético (Acebeda, La).
Con esta información se puede hacer una base de datos que relacione código con municipio y así poder descargar el XML. Nosotros ya hicimos el trabajo sucio y creamos una base de datos que relaciona provincia y municipio con los códigos de AEMET. Podéis descargarlo aquí.
Me parece muy interesante, ¿con qué programa generasteis la base de datos?
Te dejo por aquí el programa http://two.wordpress.test/wp-content/uploads/2016/09/main.py
Es un script hecho rápido, pero espero que te sirva. Un saludo.
EDIT: Repositorio -> https://github.com/two.wordpress/apimet
Hola, vengo a hacer un poco de spam, pero es que justo esta semana me he encontrado con este problema y despues de leer este artículo se me ocurrio hacer unas librerias en nodejs para evitar que las próximas personas tengan que pasar por el calvario de procesar todo el XML y usar directamente una api REST. Os dejo el link al proyecto en github.
El de la api rest:
https://github.com/IagoLast/meteosapi-server
El listado de municipios y provincias en formato json
http://iagolast.github.io/pselect/
Saludos!
Hola, le he estado echando un vistazo rápido y tiene muy buena pinta.
La verdad es que este post se encuentra algo desactualizado, me explico. Como ya sabes la propia agencia ha abierto una «API». Ante tal acontecimiento, pensamos en editar el post para informar de ello. Para tener conocimiento de causa, decidimos también probar algunas de las características que ofrece. No nos gustó en general, sobre todo de cara a la implementación de widgets en interfaces web obteniendo la información a través de AJAX, cosa que falla por no editar las cabeceras HTTP correctamente resultando en errores CORS. Puede que ya lo hayan solucionado, no obstante preferimos no informar.
Gracias por el aporte a la comunidad, ¡un saludo!
Nada, seguimos en 2019 y siguen sin cambiar las cabeceras CORS en el servidor, encima les mando un email indicandoles el problema y su respuesta es que a ellos les funciona correctamente…