#!/bin/bash # scripts/06_build_offline_packages.sh PG_CONN="postgresql://maps:maps@postgres:5432/maps" PACKAGES_DIR="/data/offline_packages" REGION_ID="amsterdam" BBOX="4.7288,52.2783,5.0796,52.4311" # minLon,minLat,maxLon,maxLat mkdir -p "${PACKAGES_DIR}/${REGION_ID}" # --- Tiles: extract MBTiles for the bounding box --- # Use martin-cp (Martin's CLI tool) to export tiles from PostGIS to MBTiles martin-cp \ --output-file "${PACKAGES_DIR}/${REGION_ID}/tiles.mbtiles" \ --mbtiles-type flat \ --bbox "$BBOX" \ --min-zoom 0 \ --max-zoom 16 \ --source openmaptiles \ --connect "$PG_CONN" # --- POIs: export to SQLite with FTS5 index --- # Custom Rust tool or Python script that queries PostGIS and writes SQLite /app/tools/export_pois_sqlite \ --bbox "$BBOX" \ --pg-conn "$PG_CONN" \ --output "${PACKAGES_DIR}/${REGION_ID}/pois.db" # --- Routing: tar the OSRM files per profile --- for PROFILE in car foot bicycle; do tar -cf "${PACKAGES_DIR}/${REGION_ID}/routing-${PROFILE}.tar" \ -C "/data/osrm/${PROFILE}" \ region.osrm region.osrm.cell_metrics region.osrm.cells \ region.osrm.datasource_names region.osrm.ebg region.osrm.ebg_nodes \ region.osrm.edges region.osrm.fileIndex region.osrm.geometry \ region.osrm.icd region.osrm.maneuver_overrides \ region.osrm.mldgr region.osrm.names region.osrm.nbg_nodes \ region.osrm.partition region.osrm.properties \ region.osrm.ramIndex region.osrm.timestamp \ region.osrm.tld region.osrm.tls region.osrm.turn_duration_penalties \ region.osrm.turn_penalties_index region.osrm.turn_weight_penalties done # --- Update offline_regions table with file sizes --- TILES_SIZE=$(stat -f%z "${PACKAGES_DIR}/${REGION_ID}/tiles.mbtiles" 2>/dev/null || stat -c%s "${PACKAGES_DIR}/${REGION_ID}/tiles.mbtiles") ROUTING_SIZE=0 for PROFILE in car foot bicycle; do SIZE=$(stat -f%z "${PACKAGES_DIR}/${REGION_ID}/routing-${PROFILE}.tar" 2>/dev/null || stat -c%s "${PACKAGES_DIR}/${REGION_ID}/routing-${PROFILE}.tar") ROUTING_SIZE=$((ROUTING_SIZE + SIZE)) done POIS_SIZE=$(stat -f%z "${PACKAGES_DIR}/${REGION_ID}/pois.db" 2>/dev/null || stat -c%s "${PACKAGES_DIR}/${REGION_ID}/pois.db") psql "$PG_CONN" <