Compare commits

...
5 Commits
Author SHA1 Message Date
konggd 2ff9f4e293 Merge a couple of highway elements 2026-06-26 12:16:53 +02:00
konggd d218ac85d3 Fix exclude 2026-06-26 02:12:19 +02:00
konggd 75464e896c Fix pbf discovery 2026-06-26 02:11:47 +02:00
konggd ef97b26f07 Only create root poly folder in single planet generation 2026-06-26 01:56:00 +02:00
konggd 10b4bf51d9 Use custom delimiter internally
Prevents breakage on regions that use '/' as a part of their name
2026-06-26 01:51:45 +02:00
2 changed files with 38 additions and 29 deletions
+31 -26
View File
@@ -107,6 +107,11 @@ fi
echo "Processing path '$PATH_ARG' in $MODE mode with $MEMORY memory allocated..."
# Define functions
system_path() {
local input="$1"
echo "${input//\/\//\/}"
}
should_skip() {
local path="$1"
@@ -129,7 +134,7 @@ single_planet() {
wget "https://planet.openstreetmap.org/pbf/planet-latest.osm.pbf" -O "./data/osm/planet.osm.pbf"
while IFS= read -r REG; do
mkdir -p "./work/poly/europe"
mkdir -p "./work/poly"
wget "https://download.geofabrik.de/$REG.poly" -O "./work/poly/$REG.poly"
mkdir -p "./work/contours/$REG"
@@ -167,61 +172,61 @@ generate_region() {
local PATH_ARG="$1"
local MEMORY="$2"
PATH_ARG="${PATH_ARG%/}"
PATH_ARG="${PATH_ARG%//}"
if should_skip "$PATH_ARG"; then
echo "Skipping excluded region: $PATH_ARG"
if should_skip "$(system_path "${PATH_ARG}")"; then
echo "Skipping excluded region: $(system_path "${PATH_ARG}")"
return 0
fi
echo "Generating region: $PATH_ARG"
echo "Generating region: $(system_path "${PATH_ARG}")"
if [[ "$TEST" == "1" ]]; then
return 0
fi
mkdir -p "./work/poly/${PATH_ARG%/*}"
wget "https://download.geofabrik.de/$PATH_ARG.poly" -O "./work/poly/$PATH_ARG.poly"
mkdir -p "./work/poly/$(system_path "${PATH_ARG%//*}")"
wget "https://download.geofabrik.de/$(system_path "${PATH_ARG}").poly" -O "./work/poly/$(system_path "${PATH_ARG}").poly"
mkdir -p "./work/contours/${PATH_ARG}"
mkdir -p "./work/contours/$(system_path "${PATH_ARG}")"
pyhgtmap \
--polygon="./work/poly/$PATH_ARG.poly" \
--polygon="./work/poly/$(system_path "${PATH_ARG}").poly" \
--step=100 \
--hgtdir=work/hgt \
--sources=view1,view3 \
--simplifyContoursEpsilon=0.001 \
-j16 \
--max-nodes-per-tile=0 \
--output-prefix="./work/contours/$PATH_ARG/con"
--output-prefix="./work/contours/$(system_path "${PATH_ARG}")/con"
mkdir -p "./data/contours/osm/${PATH_ARG%/*}"
mkdir -p "./data/contours/osm/$(system_path "${PATH_ARG%//*}")"
# max-nodes-per-tile=0 SHOULD generate only one file
# still very much wonky though
mv "./work/contours/$PATH_ARG"/con* "./data/contours/osm/$PATH_ARG.osm"
mv "./work/contours/$(system_path "${PATH_ARG}")"/con* "./data/contours/osm/$(system_path "${PATH_ARG}").osm"
mkdir -p "./data/contours/geojson/${PATH_ARG%/*}"
osmium export ./data/contours/osm/${PATH_ARG}.osm \
-o ./data/contours/geojson/${PATH_ARG}.geojson \
mkdir -p "./data/contours/geojson/$(system_path "${PATH_ARG%//*}")"
osmium export ./data/contours/osm/$(system_path "${PATH_ARG}").osm \
-o ./data/contours/geojson/$(system_path "${PATH_ARG}").geojson \
--overwrite
mkdir -p "./out/${PATH_ARG%/*}"
mkdir -p "./out/$(system_path "${PATH_ARG%//*}")"
mkdir -p "./data/osm/${PATH_ARG%/*}"
mkdir -p "./data/osm/$(system_path "${PATH_ARG%//*}")"
wget "$(
curl -s https://download.geofabrik.de/index-v1-nogeom.json |
jq -r --arg pid "${PATH_ARG##*/}" --arg parent "$(awk -F/ '{print $(NF-1)}' <<< "$PATH_ARG")" '
jq -r --arg pid "${PATH_ARG##*//}" --arg parent "$(awk -F/ '{print $(NF-1)}' <<< "$(system_path "${PATH_ARG}")")" '
.. | objects
| select(.id? == $pid and .parent? == $parent)
| .urls.pbf
'
)" -O "./data/osm/${PATH_ARG}.osm.pbf"
)" -O "./data/osm/$(system_path "${PATH_ARG}").osm.pbf"
java -Xmx"$MEMORY" \
-jar ./bin/planetiler.jar schema.yml \
--download \
--osm_file="./data/osm/${PATH_ARG}.osm.pbf" \
--contour_file="./data/contours/geojson/${PATH_ARG}.geojson" \
--output="./out/${PATH_ARG}.mbtiles" \
--osm_file="./data/osm/$(system_path "${PATH_ARG}").osm.pbf" \
--contour_file="./data/contours/geojson/$(system_path "${PATH_ARG}").geojson" \
--output="./out/$(system_path "${PATH_ARG}").mbtiles" \
--no-simplify \
--simplify-tolerance-at-max-zoom=0 \
--no-feature-merge \
@@ -230,7 +235,7 @@ generate_region() {
fetch_path() {
local PATH_ARG="$1"
curl -s https://download.geofabrik.de/index-v1-nogeom.json | jq -r --arg pid "${PATH_ARG##*/}" '
curl -s https://download.geofabrik.de/index-v1-nogeom.json | jq -r --arg pid "${PATH_ARG##*//}" '
.features[]
| select(
if ($pid == "" or $pid == "planet") then
@@ -262,7 +267,7 @@ all_path() {
else
while IFS= read -r REG; do
if [[ -n "$PATH_ARG" ]]; then
all_path "$PATH_ARG/$REG" "$((DEPTH + 1))"
all_path "$PATH_ARG//$REG" "$((DEPTH + 1))"
else
all_path "$REG" "$((DEPTH + 1))"
fi
@@ -293,8 +298,8 @@ if [ "$MODE" == "single" ]; then
single_planet
exit 0
fi
generate_region "$PATH_ARG" "$MEMORY"
generate_region "${PATH_ARG//\//\/\/}" "$MEMORY"
exit 0
elif [[ "$MODE" == "recursive" ]]; then
all_path "$PATH_ARG"
all_path "${PATH_ARG//\//\/\/}"
fi
+5 -1
View File
@@ -200,7 +200,7 @@ layers:
landcover: __any__
leisure: [garden, park, pitch, dog_park, fishing, marina, nature_reserve, playground, stadium, track, playground, sports_centre]
natural: [fell, grassland, heath, scrub, wood, tundra, bay, beach, blowhole, crevasse, shingle, shoal, bare_rock, hill, sand, scree, tree]
highway: [service, pedestrian]
highway: [rest_area, service, pedestrian]
attributes:
- key: class
type: match_key
@@ -225,6 +225,10 @@ layers:
aeroway: [runway, stopway, taxiway]
railway: [abandoned, construction, disused, funicular, light_rail, miniature, monorail, narrow_gauge, rail, subway, tram]
man_made: [goods_conveyor]
- source: osm
geometry: point
include_when:
highway: [motorway_junction, passing_place, mini_roundabout, speed_camera, speed_display, toll_ganty, turning_circle, turning_loop]
attributes:
- key: class
type: match_key