mirror of
https://github.com/lrnselfreliance/wrolpi.git
synced 2026-10-25 18:40:06 -04:00
Storing video settings in session storage to help user start downloads consistently. Applying channel tag name to new channels when download videos or channels. Initializing map tiles when importing and resetting map.
111 lines
3.8 KiB
Bash
Executable file
111 lines
3.8 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
MERGED_TMP_FILE=/tmp/wrolpi-merged.osm.pbf
|
|
|
|
if [ ! -f /opt/openstreetmap-carto/openstreetmap-carto.lua ]; then
|
|
echo "openstreetmap-carto.lua file is missing. Has install been completed?"
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -f /opt/openstreetmap-carto/openstreetmap-carto.style ]; then
|
|
echo "openstreetmap-carto.style file is missing. Has install been completed?"
|
|
exit 2
|
|
fi
|
|
|
|
if [ "${1}" == "" ]; then
|
|
echo "Missing file argument."
|
|
exit 3
|
|
fi
|
|
|
|
set -x
|
|
|
|
HAS_ICE_SHEET=false
|
|
sudo -u postgres psql gis -c '\d' | grep icesheet_polygons && HAS_ICE_SHEET=true
|
|
if [ ${HAS_ICE_SHEET} = false ]; then
|
|
echo "WROLPi: Missing icesheet_polygons. Run reset_map.sh"
|
|
exit 4
|
|
fi
|
|
|
|
# Re-execute this script if it wasn't called with sudo.
|
|
if [ $EUID != 0 ]; then
|
|
sudo "$0" "$@"
|
|
exit $?
|
|
fi
|
|
|
|
function cleanup() {
|
|
if [ -f ${MERGED_TMP_FILE} ]; then
|
|
rm ${MERGED_TMP_FILE}
|
|
fi
|
|
}
|
|
|
|
trap cleanup EXIT
|
|
cleanup
|
|
|
|
systemctl stop renderd
|
|
|
|
if [[ ${1} == *.osm.pbf ]]; then
|
|
# Import PBF files.
|
|
for i in "$@"; do
|
|
if [[ $i != *.osm.pbf ]]; then
|
|
echo "WROLPi: Cannot mix file types"
|
|
exit 5
|
|
fi
|
|
if [ ! -f "${i}" ]; then
|
|
echo "WROLPi: File does not exist! ${i}"
|
|
exit 6
|
|
fi
|
|
done
|
|
|
|
# Use 1/4 of the RAM to import. 1/2 causes crashes on RPi.
|
|
RAM_KB=$(grep MemTotal /proc/meminfo | awk '{print $2}')
|
|
MAX_CACHE=$((RAM_KB / 1024 / 4))
|
|
|
|
pbf_path=${1}
|
|
pbf_paths=($@)
|
|
if [[ ${#pbf_paths[@]} -gt 1 ]]; then
|
|
# More than one PBF, merge them before import.
|
|
nice -n 18 osmium merge $@ -o ${MERGED_TMP_FILE}
|
|
pbf_path=${MERGED_TMP_FILE}
|
|
fi
|
|
|
|
# Import as postgres user, then change ownership to _renderd.
|
|
nice -n 18 sudo -u postgres osm2pgsql -d gis --create --slim -G --hstore \
|
|
--tag-transform-script /opt/openstreetmap-carto/openstreetmap-carto.lua \
|
|
-C ${MAX_CACHE} \
|
|
--number-processes 3 \
|
|
-S /opt/openstreetmap-carto/openstreetmap-carto.style \
|
|
"${pbf_path}"
|
|
# Assign all data to _renderd so the map can be rendered.
|
|
sudo -u postgres psql -d gis -c 'ALTER TABLE external_data OWNER TO _renderd'
|
|
sudo -u postgres psql -d gis -c 'ALTER TABLE geography_columns OWNER TO _renderd'
|
|
sudo -u postgres psql -d gis -c 'ALTER TABLE geometry_columns OWNER TO _renderd'
|
|
sudo -u postgres psql -d gis -c "ALTER TABLE icesheet_outlines OWNER TO _renderd"
|
|
sudo -u postgres psql -d gis -c "ALTER TABLE icesheet_polygons OWNER TO _renderd"
|
|
sudo -u postgres psql -d gis -c "ALTER TABLE ne_100m_admin_0_boundary_lines_land OWNER TO _renderd"
|
|
sudo -u postgres psql -d gis -c "ALTER TABLE planet_osm_line OWNER TO _renderd"
|
|
sudo -u postgres psql -d gis -c "ALTER TABLE planet_osm_nodes OWNER TO _renderd"
|
|
sudo -u postgres psql -d gis -c "ALTER TABLE planet_osm_point OWNER TO _renderd"
|
|
sudo -u postgres psql -d gis -c "ALTER TABLE planet_osm_polygon OWNER TO _renderd"
|
|
sudo -u postgres psql -d gis -c "ALTER TABLE planet_osm_rels OWNER TO _renderd"
|
|
sudo -u postgres psql -d gis -c "ALTER TABLE planet_osm_roads OWNER TO _renderd"
|
|
sudo -u postgres psql -d gis -c "ALTER TABLE planet_osm_ways OWNER TO _renderd"
|
|
sudo -u postgres psql -d gis -c "ALTER TABLE simplified_water_polygons OWNER TO _renderd"
|
|
sudo -u postgres psql -d gis -c "ALTER TABLE spatial_ref_sys OWNER TO _renderd"
|
|
sudo -u postgres psql -d gis -c "ALTER TABLE water_polygons OWNER TO _renderd"
|
|
elif [[ ${1} == *.dump ]]; then
|
|
if [ ! -f "${1}" ]; then
|
|
echo "WROLPi: File does not exist! ${1}"
|
|
exit 7
|
|
fi
|
|
# Import a Postgresql dump.
|
|
nice -n 18 pg_restore -j3 --no-owner -d gis -U _renderd -h 127.0.0.1 "${1}"
|
|
else
|
|
echo "WROLPi: Cannot import unknown file"
|
|
exit 8
|
|
fi
|
|
|
|
# Clear map tile cache only after successful import.
|
|
yes | /bin/bash /opt/wrolpi/scripts/clear_map_cache.sh
|
|
|
|
# Use curl to fetch the first few layers of map tiles so the map is ready to use.
|
|
bash /opt/wrolpi/wrolpi/scripts/initialize_map_tiles.sh
|