FILENAME=$0 osm.utils.edit() { vim $FILENAME } 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 }