De Vodafone API a PostgreSQL con mapa y teselas incluidas

June 13, 2025View on GitHub

Estado del proyecto: Archivado

鈿狅笍 Este repositorio ha sido archivado 鈿狅笍

El desarrollo se ha dividido en dos repositorios separados:

Este repositorio ya no se mantiene y los endpoints de las APIs han cambiado, por lo que se recomi茅nda encarecidamente consultar los enlaces anteriores para el desarrollo activo

De Vodafone API a PostgreSQL con mapa y teselas incluidas

Intenci贸n

Se pretende el siguiente flujo:
alt text

Privacidad

La privacidad es uno de los pilares de este proyecto. Para entender a qu茅 punto la hemos tenido en cuenta debes saber que hemos dividido Arag贸n en teselas de 500x500 metros. Cuando un dispositivo hace una medici贸n y env铆a su ubicaci贸n nosotros s贸lo guardamos la parcela de 500x500 metros a la que pertenece el dispositivo (basado, como se ha dicho, en su ubicaci贸n), por lo que ni nosotros ni nadie podr谩 saber la ubicaci贸n exacta del dispositivo una vez haya finalizado el test y se hayan guardado los datos correctamente.

Pongamos un ejemplo; digamos que hemos enviado los datos exactamente desde esta posici贸n:

Nuestra posici贸n exacta est谩 marcada como un punto amarillo en el mapa
alt text

Una vez haya finalizado el test, la informaci贸n que quedar谩 guardada ser谩 que se ha hecho una medici贸n dentro de esta parcela:

No se podr谩 saber desde qu茅 punto exacto se ha hecho la medici贸n. S贸lo se mostrar谩 que la medici贸n se ha hecho en esa parcela de 500x500 metros, tal y como se ha explicado antes
alt text

Creaci贸n de la tabla

Procederemos a crear la tabla desde la que despu茅s partiremos:

psql postgresql://[usuarioBBDD]:[passwordBBDD]@[hostBBDD]/[nombreBBDD] -c "
CREATE TABLE IF NOT EXISTS [nombreBBDD].[esquemaBBDD].[tablaBBDD] (
        fecha timestamp,
        categoria varchar,
        calidad varchar,
        municipio varchar,
        ine int4,
        modelo varchar,
        so varchar,
        tipored varchar,
        operador varchar,
        coordenadax int4,
        coordenaday int4,
        latitud float8,
        longitud float8,
        valorintensidadsenial float8,
        rangointensidadsenial int4,
        velocidadbajada float8,
        rangovelocidadbajada int4,
        velocidadsubida float8,
        rangovelocidadsubida int4,
        latencia float8,
        rangolatencia int4,
        geom geometry(geometry, 4326),
        geom_25830 geometry(geometry, 25830),
        cuadricula geometry(geometry, 25830)
);"

Explicaci贸n

Script para las variables

El fichero script-cobertura-internet/script_coberturas-APIaPostgreSQL-variables.sh contiene todas las variables necesarias para que el script del proyecto funcione correctamente. Asimismo se explica qu茅 funci贸n tiene cada variable.

Variable urlAPI

La variable urlAPI se consigue mediante la aplicaci贸n web Swagger, publicada en Aragon Open Data. Se muestra dicho proceso de obtenci贸n:

Obtenci贸n

La existencia de esta secci贸n tiene como objetivo mantener la url de la variable urlAPI actualizada a煤n en en el caso de que 茅sta cambie, por lo que lo importante es seguir los pasos (e ignorar el contenido que haya podido cambiar. Por ejemplo, ha podido cambiar el aspecto de la p谩gina web que se muestra abajo como pantallazo).

Para obtener la url de la API y rellenar la variable urlAPI nos dirigiremos a: https://opendataei2a.aragon.es/cobertura/api/swagger/index.html Uniremos los campos marcados en rojo tal y como se muestra en la siguiente imagen:

alt text

La URL final, por tanto, ser铆a: https://opendataei2a.aragon.es/cobertura/api/ + data/getData qued谩ndose en: https://opendataei2a.aragon.es/cobertura/api/data/getData

Variable rutacarpetaCSV

rutacarpetaCSV="[RUTA CARPETA DONDE SE GUARDAR脕 EL CSV DE LA API, ACABADO EN '/

Antes de ejecutar script es necesario tener creada la carpeta donde se dejar谩 el fichero CSV que se obtiene de la API.

Dicha carpeta tendr谩 que tener accesos de escritura / lectura para el usuario de ejecuci贸n.

Script general

En el fichero script-cobertura-internet/script_coberturas-APIaPostgreSQL.sh se explica la ejecuci贸n del script paso a paso.

Ruta para el fichero variables

El fichero script-cobertura-internet/script_coberturas-APIaPostgreSQL-variables.sh debe guardarse en una ruta donde se tenga permisos de lectura y escritura. De hecho, deberemos acceder al fichero script-cobertura-internet/script_coberturas-APIaPostgreSQL.sh y cambiar a mano el corchete "[CARPETA DONDE EST脡 EL ARCHIVO DE LAS VARIABLES]" visualizable en el comando "source" (l铆nea 5 del script) por la ruta de la carpeta donde se encuentre el fichero script-cobertura-internet/script_coberturas-APIaPostgreSQL-variables.sh y en la que se cumplan los requisitos explicados en este p谩rrafo.

La l铆nea del fichero script-cobertura-internet/script_coberturas-APIaPostgreSQL.sh a la que se hace referencia es la siguiente:

source [CARPETA DONDE EST脡 EL ARCHIVO DE LAS VARIABLES]/script_coberturas-APIaPostgreSQL-variables.sh

Infraestructura necesaria para este proyecto

  • (Recomendado) Gestor de bases de datos PostgreSQL con PostGIS para ir viendo los cambios mediante una GUI. Por ejemplo, DBeaver (https://dbeaver.io/)
  • (Requerido) M谩quina Linux Debian/Fedora (la distribuci贸n es pr谩cticamente indiferente pues usamos comandos que suelen estar en todas ellas) con comandos:
    • curl
    • psql
    • sed
    • grep
    • head
  • los cuales son comandos b谩sicos que se incluyen pr谩cticamente siempre, como se ha mencionado anteriormente.

Licencia

Este proyecto est谩 sujeto a la European Union Public License (EUPL), como as铆 se podr谩 encontrar en el archivo: script-cobertura-internet/LICENSE.md