Estos días he estado jugando un poco con una fuente de datos abiertos proporcionada por el Gobierno de España para resolver un pequeño problema que teníamos en casa: cómo priorizar la elección de centro para el curso que viene que tiene que realizar Ana. El caso es que ha estado este año trabajando de interina en un colegio de la zona de Carballiño, y para el curso que viene tiene que indicar su prioridad de centros. Tiene la posibilidad de escoger cualquiera de las provincias, pero una de las posibilidades es escogerlos de manera individual. Y para nosotros, teniendo en cuenta que tenemos un piso en Forcarey, un criterio bastante importante es el de la proximidad geográfica, y el de la facilidad de desplazamiento en carretera.
El problema a priori se planteaba complicado, ya que en la zona interior de Galicia donde está Forcarey, cerca de los límites de las cuatro provincias, ninguno de los dos teníamos nociones de cuáles podían ser los centros más apropiados. Mirarlos de manera individual podía ser un dolor de cabeza, por lo que me puse a pensar en maneras de optimizar la elección, y di con algo bastante interesante. Existe en el catálogo de datos puestos a disposición por parte del Gobierno una categorización de todos los Centros Educativos de Galicia. Categorización que incluye el tipo de centro (público, privado, CEIP, IES…) así como (y esta era la clave del asunto) sus coordenadas geográficas.
Exactamente lo que estaba buscando. A partir de ahí, la idea era poder representarlos en un mapa, para poder determinar los más convenientes para nuestra ubicación. ¿Y cómo hacerlo? Por suerte, tengo experiencia con Node Red y su estupendo plugin para mapas. No tardé en realizar un flujo, que extrae de las fuentes en XML (una por provincia) la información de cada colegio, clasificarlo, filtrarlos por tipo, y crear una entrada en el mapa para cada colegio, con información relevante:
¿El resultado? Estupendo. Un mapa en el que se puede observar los centros, clasificados por los tipos que nos interesan, y con la información relativa a código de centro, dirección y algunos datos adicionales.
Este ejercicio, aparte de lo obvio, me ha permitido sacar una información derivada adicional bastante interesante, y es el conocer las zonas más despobladas o con población más envejecida de Galicia. Y es que si se observa el mapa completo de la Comunidad, es fácil ver que hay zonas muy extensas en las que no existe colegio alguno de Primaria. Es decir, zonas sin habitantes, o al menos sin niños (lo que suele ser parejo):
Esta es la maravilla de poder usar datos abiertos.
Etiquetas: datos abiertos, datos.gob.es, node-red, opendata
Hola, muchas gracias por la información, ¿podrías publicar el código?
Hola, Félix. Me alegra que te resulte interesante. Te dejo por aquí el código:
[
{
"id": "d58a767a.dfa1e8",
"type": "worldmap",
"z": "7573c8b2.8a78a8",
"name": "",
"lat": "40.93",
"lon": "-3.22",
"zoom": "6",
"layer": "OSM",
"cluster": "",
"maxage": "",
"usermenu": "show",
"layers": "show",
"panit": "true",
"panlock": "false",
"zoomlock": "false",
"hiderightclick": "false",
"coords": "none",
"showgrid": "false",
"path": "/CEIPMAP",
"x": 900,
"y": 280,
"wires": []
},
{
"id": "490d6f18.75d02",
"type": "http request",
"z": "7573c8b2.8a78a8",
"name": "CEIP Pontevedra",
"method": "GET",
"ret": "txt",
"paytoqs": false,
"url": "https://www.edu.xunta.gal/centroseducativos/BuscaCentros.do?campoDeControl=S&codAsistencia=&resultadosPaxina=10&ensinoModalidade=&concello=&provincia=36&d-148912-e=3&ensinoEspecialidade=&ensinoPrincipal=&DIALOG-EVENT-buscar=Buscar&DIALOG-EVENT-buscar=&codigo=&plan=&6578706f7274=1&tipoCentro=&titularidade=&rexime=",
"tls": "",
"persist": false,
"proxy": "",
"authType": "",
"x": 280,
"y": 260,
"wires": [
[
"759550dc.98e48"
]
]
},
{
"id": "759550dc.98e48",
"type": "xml",
"z": "7573c8b2.8a78a8",
"name": "",
"property": "payload",
"attr": "",
"chr": "",
"x": 460,
"y": 400,
"wires": [
[
"ad39ce0e.7ead8",
"529c13ba.71f4fc"
]
]
},
{
"id": "ad39ce0e.7ead8",
"type": "function",
"z": "7573c8b2.8a78a8",
"name": "Compose Map data // Públicos",
"func": "var icon =\"graduation-cap\";\n\nvar thing=[];\nvar data_array=msg.payload.table.row;\nvar len=data_array.length;\nvar j=0;\nfor (var i=0;i
"noerr": 0,
"x": 620,
"y": 200,
"wires": [
[
"d58a767a.dfa1e8"
]
]
},
{
"id": "d7b5af56.dd23a",
"type": "http request",
"z": "7573c8b2.8a78a8",
"name": "CEIP Orense",
"method": "GET",
"ret": "txt",
"paytoqs": false,
"url": "https://www.edu.xunta.gal/centroseducativos/BuscaCentros.do?campoDeControl=S&codAsistencia=&resultadosPaxina=10&ensinoModalidade=&concello=&provincia=32&d-148912-e=3&ensinoEspecialidade=&DIALOG-EVENT-buscar=Buscar&DIALOG-EVENT-buscar=&ensinoPrincipal=&codigo=&plan=&6578706f7274=1&tipoCentro=&titularidade=&rexime=",
"tls": "",
"persist": false,
"proxy": "",
"authType": "",
"x": 260,
"y": 300,
"wires": [
[
"759550dc.98e48"
]
]
},
{
"id": "a372265b.6e5ee8",
"type": "http request",
"z": "7573c8b2.8a78a8",
"name": "CEIP La Coruña",
"method": "GET",
"ret": "txt",
"paytoqs": false,
"url": "https://www.edu.xunta.gal/centroseducativos/BuscaCentros.do?campoDeControl=S&codAsistencia=&resultadosPaxina=10&ensinoModalidade=&concello=&provincia=15&d-148912-e=3&ensinoEspecialidade=&ensinoPrincipal=&DIALOG-EVENT-buscar=Buscar&DIALOG-EVENT-buscar=&codigo=&plan=&6578706f7274=1&tipoCentro=&titularidade=&rexime=",
"tls": "",
"persist": false,
"proxy": "",
"authType": "",
"x": 270,
"y": 340,
"wires": [
[
"759550dc.98e48"
]
]
},
{
"id": "ec1cc44a.30bf08",
"type": "http request",
"z": "7573c8b2.8a78a8",
"name": "CEIP Lugo",
"method": "GET",
"ret": "txt",
"paytoqs": false,
"url": "https://www.edu.xunta.gal/centroseducativos/BuscaCentros.do?campoDeControl=S&codAsistencia=&resultadosPaxina=10&ensinoModalidade=&concello=&provincia=27&d-148912-e=3&ensinoEspecialidade=&DIALOG-EVENT-buscar=Buscar&DIALOG-EVENT-buscar=&ensinoPrincipal=&codigo=&plan=&6578706f7274=1&tipoCentro=&titularidade=&rexime=",
"tls": "",
"persist": false,
"proxy": "",
"authType": "",
"x": 260,
"y": 380,
"wires": [
[
"759550dc.98e48"
]
]
},
{
"id": "2688fb01.6caf24",
"type": "inject",
"z": "7573c8b2.8a78a8",
"name": "",
"topic": "",
"payload": "",
"payloadType": "date",
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"x": 150,
"y": 180,
"wires": [
[
"490d6f18.75d02",
"d7b5af56.dd23a",
"a372265b.6e5ee8",
"ec1cc44a.30bf08"
]
]
},
{
"id": "529c13ba.71f4fc",
"type": "function",
"z": "7573c8b2.8a78a8",
"name": "Compose Map data // Privados",
"func": "var icon =\"graduation-cap\";\n\nvar thing=[];\nvar data_array=msg.payload.table.row;\nvar len=data_array.length;\nvar j=0;\nfor (var i=0;i
"noerr": 0,
"x": 730,
"y": 420,
"wires": [
[
"d58a767a.dfa1e8"
]
]
}
]