From 16d4934a3d378929207d947434a564f2052cdc4e Mon Sep 17 00:00:00 2001 From: Ilya Zverev Date: Wed, 17 Jun 2015 17:00:25 +0300 Subject: [PATCH] [generator] Add coastline processing to generate_mwm and fix one in generate_planet --- tools/unix/generate_mwm.sh | 24 +++++++++++++++++++++--- tools/unix/generate_planet.sh | 6 +++--- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/tools/unix/generate_mwm.sh b/tools/unix/generate_mwm.sh index b10cec158d..5173016872 100755 --- a/tools/unix/generate_mwm.sh +++ b/tools/unix/generate_mwm.sh @@ -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 diff --git a/tools/unix/generate_planet.sh b/tools/unix/generate_planet.sh index d696d200a9..2e0ae19ddd 100755 --- a/tools/unix/generate_planet.sh +++ b/tools/unix/generate_planet.sh @@ -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"