OpenStreetMap (OSM) es un mapa mundial gratuito creado en colaboración por personas de todo el mundo: gratuito, abierto e independiente. Si bien Google Maps, como líder del mercado, suele ser la primera opción para mapas digitales, OSM se basa en un principio completamente diferente: una comunidad colaborativa que recopila, mejora y pone a disposición datos geográficos de forma gratuita.
¿Por qué es esto importante? Porque los mapas son conocimiento, y el conocimiento debe ser gratuito. Para aplicaciones individuales, puede ser útil alojar usted mismo los datos de OSM para desarrollar soluciones de mapas personalizadas y conservar el control sobre los datos y su presentación. El alojamiento propio de OSM ofrece varias ventajas:
- Independencia: No depende de servicios externos y tiene control total sobre los datos de la tarjeta.
- Adaptabilidad: Puede personalizar el estilo del mapa y los datos mostrados según sus propias necesidades.
- Protección de Datos: Todos los datos están alojados localmente. No se llaman API externas.
Hay dos métodos principales para visualizar mapas:
- Mosaicos de cuadrícula: Archivos de imágenes prediseñados para diferentes niveles de zoom. Son fáciles de implementar pero ofrecen menos flexibilidad para personalizar el estilo del mapa.
- Azulejos vectoriales: Contiene datos geográficos en forma de vectores (puntos, líneas, polígonos) que se representan en el lado del cliente. Esto permite ajustes flexibles del diseño del mapa y una visualización nítida en todos los niveles de zoom. Sin embargo, la renderización requiere más potencia informática en el dispositivo cliente.
Los mosaicos vectoriales son especialmente adecuados para el autohospedaje, ya que ofrecen más opciones de personalización y son más eficientes. Para mapas regionales con áreas más pequeñas, aproximadamente 1 GB de espacio en el disco duro suele ser suficiente. Tiene sentido utilizar SSD porque ofrecen ventajas de velocidad al cargar mosaicos. Los mosaicos vectoriales estáticos no requieren un servidor de mapas en ejecución (por ejemplo, TileServer GL o Mapnik), tienen menores requisitos de mantenimiento y menos carga de servidor: son ideales para proyectos más pequeños con secciones de mapas fijas.
Mi pequeño paquete ayudante de osm facilita el proceso de creación y despliegue de mosaicos vectoriales desde .osm.pbf
Archivos. Los cuadros delimitadores personalizados permiten a los desarrolladores extraer áreas geográficas específicas y generar archivos repetitivos correspondientes que se pueden cargar directamente a un servidor. Esto hace que la integración de datos de OSM en proyectos web sea mucho más fácil. Para utilizar osmhelper, es necesaria cierta preparación. La biblioteca se basa en herramientas como osmio, Mbutil y fabricante de azulejos que debe estar instalado.
Instalación de osmio
El osmio es una herramienta poderosa para procesar datos OSM.
mkdir osmium
cd osmium
wget https://github.com/osmcode/osmium-tool/archive/refs/tags/v1.16.0.tar.gz
tar -xzf v1.16.0.tar.gz
cd osmium-tool-1.16.0
apt-get install libosmium2-dev libprotozero-dev nlohmann-json3-dev libboost-program-options-dev libbz2-dev zlib1g-dev liblz4-dev libexpat1-dev cmake pandoc
mkdir build
cd build
cmake ..
make
make install
cd ..
cd ..
rm -rf ./osmium
exec env -i HOME=$HOME bash -l
osmium --version
Instalación de mbutil
mbutil es una herramienta basada en Python para trabajar con MBTiles.
git clone https://github.com/mapbox/mbutil.git
cd mbutil
python setup.py install
cd ..
rm -rf ./mbutil
exec env -i HOME=$HOME bash -l
mb-util --version
Instalación de máquina para hacer azulejos
tilemaker es una herramienta de código abierto que convierte datos OSM directamente en mosaicos vectoriales.
apt install build-essential libboost-dev libboost-filesystem-dev libboost-program-options-dev libboost-system-dev lua5.1 liblua5.1-0-dev libshp-dev libsqlite3-dev rapidjson-dev
git clone https://github.com/systemed/tilemaker.git
cd tilemaker
make
make install
cd ..
rm -rf ./tilemaker
exec env -i HOME=$HOME bash -l
tilemaker --help
Descargar el script de conversión
mkdir openstreetmap
cd openstreetmap
wget -O ./convert.sh https://raw.githubusercontent.com/vielhuber/osmhelper/refs/heads/master/convert.sh
chmod +x convert.sh
Usando osmhelper
Después de instalar las herramientas necesarias, se puede utilizar osmhelper para generar mosaicos vectoriales y prepararlos para su alojamiento.:
./convert.sh \
--url https://download.geofabrik.de/europe/germany-latest.osm.pbf \
--lat-min 47.27 \
--lon-min 8.97 \
--lat-max 50.57 \
--lon-max 13.84 \
--compress
Este proceso permite entregar secciones de mapas personalizadas de manera eficiente y sin necesidad de un servidor de mapas dinámico. Integrar datos de OpenStreetMap en sus propios proyectos puede ser complejo, especialmente cuando se trata de alojamiento e implementación. Dado que Google Maps tiene el monopolio de las soluciones de mapas, muchos desarrolladores están buscando alternativas. osmhelper hace que sea más fácil comenzar a alojar sus propios datos de OpenStreetMap. Esto le brinda control total sobre sus mapas, sin restricciones de API y la posibilidad de agregar sus propias capas de datos.
La mayoría de la gente conoce Google Maps como la solución estándar para mapas digitales. Pero pocas personas saben que OpenStreetMap es una gran alternativa, sin restricciones comerciales ni costos ocultos. Mientras que Google Maps cobra tarifas por el uso de la API y recopila datos de los usuarios, OSM es gratuito, abierto y cuenta con el respaldo de una comunidad global. OSM es la Wikipedia del mundo de los mapas: cualquiera puede contribuir, añadir carreteras, rutas de senderismo o POI (puntos de interés) y así mejorar el mapa mundial gratuito.