From 24ebc07c6c3841713fd3f136985fa2d6e76e2d58 Mon Sep 17 00:00:00 2001 From: typebrook Date: Thu, 7 Nov 2019 17:37:31 +0800 Subject: update --- scripts/osm.utils.sh | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 scripts/osm.utils.sh (limited to 'scripts/osm.utils.sh') diff --git a/scripts/osm.utils.sh b/scripts/osm.utils.sh new file mode 100644 index 0000000..5a1fd91 --- /dev/null +++ b/scripts/osm.utils.sh @@ -0,0 +1,71 @@ + +osm.utils.edit() { + vim $HOME/git/settings/scripts/osm.utils.sh +} + +OSM_API='https://api.openstreetmap.org/api/0.6' +OSM_USER_PASSWD=$(cat $HOME/git/settings/tokens/osm) + +osm.get() { + curl -X GET $OSM_API/$1/$2 +} +osm.file.query() { + osmium tags-filter $1 $2 --output-format=osm --omit-referenced +} +osm.extract() { + echo "" + sed -nr "/^ *<$1 id=\"$2\".*/,/^ *<\/$1>/p" - + echo "" +} +osm.update() { + # remove original tag&value + sed "/" +} +osm.changeset.add() { + element=$(cat -) + header=$(echo $element | grep -E "<(node|way|relation)\s") + ele_type=$(echo $header | sed -r 's/.*<(node|way|relation).*$/\1/') + id=$(echo $header | sed -r 's/.* id=\"([^"]+)\".*$/\1/') + + echo $element | \ + sed -r "s/^( *<(node|way|relation).*version[^ ]+ )(.*)$/\1changeset=\"$1\">/" | \ + curl -X PUT -u $OSM_API_USER_PASSWD -i -T - $OSM_API/$ele_type/$id +} +osm.changeset.update() { + echo "" | \ + curl -X PUT -u $OSM_API_USER_PASSWD -i -T - $OSM_API/changeset/$1 +} +osm.changeset.close() { + curl -X PUT -u $OSM_API_USER_PASSWD -i $OSM_API/changeset/$1/close +} +osm.pbf.update() { + PBF_FILE=$1 + SERVER=http://download.geofabrik.de/asia/taiwan-updates + + osmium fileinfo $PBF_FILE | \ + grep osmosis_replication_sequence_number | \ + cut -d'=' -f2 | \ + sed 's/$/+1/' | bc | \ + read NEW_SEQ + + SEQ_PATH=$(echo $NEW_SEQ | sed -r 's/(.{1})(.{3})/00\1\/\2/') + STATE_URL=$SERVER/000/$SEQ_PATH.state.txt + + while [ $(curl.code $STATE_URL) != "404" ] + do + CHANGE_URL=$SERVER/000/$SEQ_PATH.osc.gz + echo $CHANGE_URL + curl -o $NEW_SEQ.osc.gz $CHANGE_URL && \ + osmium apply-changes $PBF_FILE $NEW_SEQ.osc.gz \ + --output-header=osmosis_replication_sequence_number=$NEW_SEQ \ + --overwrite \ + --output $NEW_SEQ.osm.pbf + + PBF_FILE=$NEW_SEQ.osm.pbf + NEW_SEQ=$((NEW_SEQ+1)) + SEQ_PATH=$(echo $NEW_SEQ | sed -r 's/(.{1})(.{3})/00\1\/\2/') + STATE_URL=$SERVER/000/$SEQ_PATH.state.txt + done +} -- cgit v1.2.3-70-g09d2