[generator] Add coastline processing to generate_mwm and fix one in generate_planet

This commit is contained in:
Ilya Zverev 2015-06-17 17:00:25 +03:00 committed by Alex Zolotarev
parent 71b31b6428
commit 16d4934a3d
2 changed files with 24 additions and 6 deletions

View file

@ -35,6 +35,7 @@ BASE_NAME="$(basename "$SOURCE_FILE")"
BASE_NAME="${BASE_NAME%%.*}"
TARGET="${TARGET:-$(dirname "$SOURCE_FILE")}"
[ ! -d "$TARGET" ] && fail "$TARGET should be a writable folder"
TBORDERS="$TARGET/borders"
OMIM_PATH="${OMIM_PATH:-$(cd "$(dirname "$0")/../.."; pwd)}"
DATA_PATH="$OMIM_PATH/data/"
[ ! -r "${DATA_PATH}types.txt" ] && fail "Cannot find classificators in $DATA_PATH, please set correct OMIM_PATH"
@ -51,6 +52,19 @@ trap "rm -rf \"${INTDIR}\"" EXIT SIGINT SIGTERM
# Create MWM file
INTDIR_FLAG="--intermediate_data_path=$INTDIR/ --node_storage=map"
GENERATE_EVERYTHING='--generate_features=true --generate_geometry=true --generate_index=true --generate_search_index=true'
COASTS="${COASTS-WorldCoasts.mwm.tmp}"
if [ -f "$COASTS" ]; then
if [ ! -f "$TBORDERS/$BASE_NAME.poly" ]; then
BORDER="${BORDER:-${BORDERS_PATH:-.}/$BASE_NAME.poly}"
[ ! -f "$BORDER" ] && fail "Please specify polygon file in BORDER for coastline generation"
[ ! -d "$TBORDERS" ] && CLEAN_BORDERS=1 && mkdir "$TBORDERS"
CLEAN_POLY=1
cp "$BORDER" "$TBORDERS/$BASE_NAME.poly"
fi
cp "$COASTS" "$INTDIR"
[ ! -f "$TARGET/WorldCoasts.mwm.tmp" ] && CLEAN_COASTS_TMP=1
GENERATE_EVERYTHING="$GENERATE_EVERYTHING --emit_coasts=true --split_by_polygons=true"
fi
if [ "$SOURCE_TYPE" == "o5m" ]; then
INTDIR_FLAG="$INTDIR_FLAG --osm_file_type=o5m --osm_file_name=$SOURCE_FILE"
$GENERATOR_TOOL $INTDIR_FLAG --preprocess=true || fail "Preprocessing failed"
@ -62,6 +76,10 @@ else
fail "Unsupported source type: $SOURCE_TYPE"
fi
[ -n "${CLEAN_COASTS_TMP-}" ] && rm "$TARGET/WorldCoasts.mwm.tmp"
[ -n "${CLEAN_POLY-}" ] && rm "$TBORDERS/$BASE_NAME.poly"
[ -n "${CLEAN_BORDERS-}" ] && rm -r "$TBORDERS"
if [ $# -gt 1 ]; then
# Create .mwm.routing file
OSRM_PATH="${OSRM_PATH:-$OMIM_PATH/3party/osrm/osrm-backend}"
@ -105,11 +123,11 @@ if [ $# -gt 1 ]; then
if [ -n "${BORDERS_PATH-}" -a ! -d "$TARGET/borders" ]; then
[ ! -e "$BORDERS_PATH/$BASE_NAME.poly" ] && fail "You should have a polygon for processed file: $BORDERS_PATH/$BASE_NAME.poly"
CROSS_MWM="--make_cross_section"
mkdir "$TARGET/borders"
cp "$BORDERS_PATH"/*.poly "$TARGET/borders/"
mkdir "$TBORDERS"
cp "$BORDERS_PATH"/*.poly "$TBORDERS"
fi
$GENERATOR_TOOL --make_routing=true ${CROSS_MWM-} --osrm_file_name="$OSRM" --data_path="$TARGET" --user_resource_path="$DATA_PATH" --output="$BASE_NAME"
[ -n "${CROSS_MWM-}" ] && rm -r "$TARGET/borders"
[ -n "${CROSS_MWM-}" ] && rm -r "$TBORDERS"
fi
# This file is needed only for routing generation

View file

@ -289,10 +289,10 @@ fi
if [ "$MODE" == "features" ]; then
putmode "Step 4: Generating features of everything into $TARGET"
# Checking for coastlines, can't build proper mwms without them
[ ! -s "$INTDIR/WorldCoasts.mwm.tmp" ] && fail "Please prepare coastlines"
[ ! -s "$INTDIR/WorldCoasts.mwm.tmp" ] && fail "Please prepare coastlines and put WorldCoasts.mwm.tmp to $INTDIR"
# 2nd pass - paralleled in the code
PARAMS_SPLIT="-split_by_polygons -generate_features"
[ -n "$OPT_WORLD" ] && PARAMS_SPLIT="$PARAMS_SPLIT -generate_world -emit_coasts"
PARAMS_SPLIT="-split_by_polygons -generate_features -emit_coasts"
[ -n "$OPT_WORLD" ] && PARAMS_SPLIT="$PARAMS_SPLIT -generate_world"
[ -n "$OPT_WORLD" -a "$NODE_STORAGE" == "map" ] && log "WARNING: generating world files with NODE_STORAGE=map may lead to an out of memory error. Try NODE_STORAGE=mem if it fails."
"$GENERATOR_TOOL" --intermediate_data_path="$INTDIR/" --node_storage=$NODE_STORAGE --osm_file_type=o5m --osm_file_name="$PLANET" \
--data_path="$TARGET" --user_resource_path="$DATA_PATH/" $PARAMS_SPLIT 2>> "$GENERATOR_LOG"