Actualización automática de mapas Openmtbmap
Script que nos permite actualizar los mapas de Openmtbmap para QMapShack automáticamente
En el articulo anterior vimos como instalar los mapas de Openmtbmap en la aplicación QMapShack. Estos mapas basados en OpenStreetmap se actualizan con relativa frecuencia (según indica el autor en su página, aproximadamente cada 6 semanas).
En la ayuda de QMapShack encontramos un script que podemos usar para realizar los procesos de descarga, desempaquetado, montado y copia del fichero de forma automática.
Para usar el script necesitamos tener instalados los paquetes 7z, mkgmap y wget. Si hemos seguido los pasos del artículo en el que instalábamos de forma manual los mapas de Openmtbmap ya tendremos los dos primeros. Si no los tenemos podemos instalarlos con:
Para el paquete 7z:
sudo apt-get install p7zip-full
Para mkgmap:
sudo apt-get install mkgmap
Tenemos que tener instalado java para su ejecución, si no lo tenemos lo instalamos:
sudo apt-get install openjdk-11-jre
Por último wget:
sudo apt-get install wget
En el script tenemos que configurar con nuestros datos en el apartado que se encabeza como #configuration
# configuration FILESRC="http://ftp5.gwdg.de/pub/misc/openstreetmap/openmtbmap/odbl/mtbspain.exe" IMGFMT="OpenMTBMap_%Y-%m-%d.img" QMSMAPDIR="${HOME}/GPS/mapas-ber" TYPE="trades.TYP" MKGMAP="mkgmap"
Esta sería la configuración para la descarga del fichero correspondiente a España (FILESRC) y su instalación dentro de la carpeta GPS/mapas-ber dentro de nuestra home de usuario (QMSMAPDIR). Este es el directorio donde tenemos configurado que QMapShack lea los mapas.
Podemos ver los ficheros a descargar de los distintos mapas en: http://ftp5.gwdg.de/pub/misc/openstreetmap/openmtbmap/odbl/
En el script que había en la página de ayuda de QMapShack tenemos que modificar la línea la 61 por: FID=`ls -x 7*.img | cut -c1-4 | head -1`
Pongo aquí el script completo con las modificaciones:
#! /bin/sh # configuration FILESRC="http://ftp5.gwdg.de/pub/misc/openstreetmap/openmtbmap/odbl/mtbspain.exe" IMGFMT="OpenMTBMap_%Y-%m-%d.img" QMSMAPDIR="${HOME}/GPS/mapas-ber" TYPE="trades.TYP" MKGMAP="mkgmap" # code starts here, no changes below here required error_check() { if [ $1 != 0 ]; then echo ${red}ERROR${NC} exit 1 else echo ${green}OK${NC} fi } tool_check() { which $1 2>&1 1>/dev/null if [ $? != 0 ]; then echo ${red}ERROR: $1 missing${NC} exit 1 fi } red="\033[0;31m" green="\033[0;32m" NC="\033[0m" TMP=`mktemp` if [ ! -f "${TMP}" ]; then echo ${red}ERROR: failed to get temp. file${NC} exit 1 fi tool_check "wget" tool_check "7z" ${MKGMAP} >/dev/null 2>&1 if [ $? != 0 ]; then echo ${red}ERROR: mkgmap can\'t be executed${NC} echo ${red}ERROR: make sure MKGMAP is set properly in script configuration${NC} exit 1 fi echo -n " * Downloading... " wget -q -O "$TMP" "$FILESRC" error_check $? echo -n " * Decompressing... " 7z e -o"${TMP}_" ${TMP} >/dev/null error_check $? FILETIME=`stat -c %Y ${TMP}` IMGFILE=`date -d@${FILETIME} +"${IMGFMT}"` echo -n " * Building ${IMGFILE}... " cd "${TMP}_" FID=`ls -x 7*.img | cut -c1-4 | head -1` ${MKGMAP} --show-profiles=1 --product-id=1 --family-id=${FID} --index --gmapsupp 6*.img 7*.img ${TYPE} >/dev/null error_check $? echo -n " * Moving gmapsupp.img to ${QMSMAPDIR}... " mv "${TMP}_/gmapsupp.img" "${QMSMAPDIR}/${IMGFILE}" error_check $? echo -n " * Cleanup... " rm -rf "${TMP}" "${TMP}_" error_check $?
Creamos el script con este contenido, yo lo he llamado updateOpenmtbmap.sh y lo activamos como ejecutable:
chmod +x updateOpenmtbmap.sh
(recordemos modificar el directorio de instalación de los mapas dentro del script en QMSMAPDIR para que coincida donde tenemos configurado que QMapShack busque los mapas)
lo ejecutamos y si todo va bien, tendremos algo como esto:
david@david-desktop:~/Descargas/openmtbmap$ ./updateOpenmtbmap.sh * Downloading... OK * Decompressing... OK * Building OpenMTBMap_2020-04-09.img... OK * Moving gmapsupp.img to /home/david/GPS/mapas-ber... OK * Cleanup... OK david@david-desktop:~/Descargas/openmtbmap$
y claro, el mapa resultante en nuestra carpeta de QMapShack listo para su uso.