#!/bin/bash # Mapsforge map creation (with coastlines) - Modified by Mikael # Osmosis folder OSMOSIS=$(pwd)/../bin/osmosis # Input folder INPUTS=$(pwd) # Input PBF inpbf=$1 if [ -z "${inpbf}" ]; then echo "Usage: $0: PBF_FILE" exit 1 fi region_dir=$(dirname $(realpath ${inpbf})) region_name=$(basename ${inpbf} .pbf) region_name=$(basename ${region_name} .osm) poly_file=${region_dir}/${region_name}.poly if [ ! -e "${inpbf}" ]; then echo "${inpbf} does not exist, you may want to download it from https://download.geofabrik.de/index.html." exit 1 fi if [ ! -e "${poly_file}" ]; then poly_file=${INPUTS}/bbox/${region_name}.poly fi if [ ! -e "${poly_file}" ]; then echo "Unable to find polygon file, you may want to download it from https://download.geofabrik.de/index.html." exit 1 fi if [ ! -e "$INPUTS/land-polygons-split-4326/land_polygons.shp" ]; then echo "Land polygons shapefile does not exist, did you forget to run init.sh?" exit 1 fi # Bounds olddir=$(pwd) cd ${INPUTS}/mapsforge-creator BBOX=$(perl poly2bb.pl "${poly_file}") echo "$BBOX" > ${INPUTS}/bbox/${region_name}.bbox BBOX=(${BBOX//,/ }) BOTTOM=${BBOX[0]} LEFT=${BBOX[1]} TOP=${BBOX[2]} RIGHT=${BBOX[3]} # Start position CENTER=$(perl poly2center.pl "${poly_file}") CENTER=(${CENTER//,/ }) LAT=${CENTER[0]} LON=${CENTER[1]} # Land ogr2ogr -overwrite -progress -skipfailures -clipsrc $LEFT $BOTTOM $RIGHT $TOP "${region_dir}/${region_name}_land.shp" "$INPUTS/land-polygons-split-4326/land_polygons.shp" python shape2osm.py -l "${region_dir}/${region_name}_land" "${region_dir}/${region_name}_land.shp" # Sea sea_file="${region_dir}/${region_name}_sea.osm" cp sea.osm "${sea_file}" sed -i "s/\$BOTTOM/$BOTTOM/g" "${sea_file}" sed -i "s/\$LEFT/$LEFT/g" "${sea_file}" sed -i "s/\$TOP/$TOP/g" "${sea_file}" sed -i "s/\$RIGHT/$RIGHT/g" "${sea_file}" cd ${olddir} CMD="$OSMOSIS --rb file=${inpbf} \ --rx file=${sea_file} --s --m" for f in ${region_dir}/${region_name}_land*.osm; do CMD="$CMD --rx file=$f --s --m" done CMD="$CMD --wb file=${region_dir}/${region_name}_merge.pbf omitmetadata=true" echo $CMD $CMD exit 0 # Map if [ "$SKIP_MAP_CREATION" != "true" ]; then CMD="$OSMOSIS_HOME/bin/osmosis --rb file=$WORK_PATH/merge.pbf" [ $MAP_TRANSFORM_FILE ] && CMD="$CMD --tt file=$MAP_TRANSFORM_FILE" CMD="$CMD --mw file=$WORK_PATH/$NAME.map \ type=$2 \ bbox=$BOTTOM,$LEFT,$TOP,$RIGHT \ map-start-position=$LAT,$LON \ map-start-zoom=8 \ tag-values=$TAG_VALUES \ threads=$THREADS" [ $3 ] && CMD="$CMD preferred-languages=$3" [ $MAP_TAG_CONF_FILE ] && CMD="$CMD tag-conf-file=$MAP_TAG_CONF_FILE" echo $CMD $CMD || exit 1 # Check map size if [ -f "$MAPS_PATH/$NAME.map" ]; then OLD_SIZE=$(wc -c < "$MAPS_PATH/$NAME.map") NEW_SIZE=$(wc -c < "$WORK_PATH/$NAME.map") if [ $NEW_SIZE -lt $(($OLD_SIZE * 70 / 100)) ]; then echo "$WORK_PATH/$NAME.map creation is significantly smaller." exit 1 fi fi mv "$WORK_PATH/$NAME.map" "$MAPS_PATH/$NAME.map" fi # POI if [ "$SKIP_POI_CREATION" != "true" ]; then CMD="$OSMOSIS_HOME/bin/osmosis --rb file=$WORK_PATH/$NAME-latest.osm.pbf \ --pw file=$WORK_PATH/$NAME.poi" [ $POI_TAG_CONF_FILE ] && CMD="$CMD tag-conf-file=$POI_TAG_CONF_FILE" echo $CMD $CMD || exit 1 mv "$WORK_PATH/$NAME.poi" "$POIS_PATH/$NAME.poi" fi # Post-process rm -rf "$WORK_PATH"