diff options
| -rw-r--r-- | alias | 68 | ||||
| -rw-r--r-- | scripts/osm.utils.sh | 71 |
2 files changed, 71 insertions, 68 deletions
| @@ -1,5 +1,4 @@ | |||
| 1 | SETTING_DIR="$HOME/git/settings" | 1 | SETTING_DIR="$HOME/git/settings" |
| 2 | OSM_USER_PASSWD=$(cat $HOME/git/settings/tokens/osm) | ||
| 3 | 2 | ||
| 4 | # settings | 3 | # settings |
| 5 | alias al='vim ~/.bash_aliases && source ~/.bash_aliases' | 4 | alias al='vim ~/.bash_aliases && source ~/.bash_aliases' |
| @@ -210,70 +209,3 @@ alias cdand='cd ~/git/sample' | |||
| 210 | repo='git@github.com' | 209 | repo='git@github.com' |
| 211 | hub='https://github.com' | 210 | hub='https://github.com' |
| 212 | typebrook='git@github.com:typebrook' | 211 | typebrook='git@github.com:typebrook' |
| 213 | |||
| 214 | |||
| 215 | # osm | ||
| 216 | osm='https://api.openstreetmap.org/api/0.6' | ||
| 217 | osm.get() { | ||
| 218 | curl -X GET $osm/$1/$2 | ||
| 219 | } | ||
| 220 | osm.query() { | ||
| 221 | osmium tags-filter $1 $2 --output-format=osm --omit-referenced | ||
| 222 | } | ||
| 223 | osm.extract() { | ||
| 224 | echo "<osm version=\"0.6\">" | ||
| 225 | sed -nr "/^ *<$1 id=\"$2\".*/,/^ *<\/$1>/p" - | ||
| 226 | echo "</osm>" | ||
| 227 | } | ||
| 228 | osm.update() { | ||
| 229 | # remove original tag&value | ||
| 230 | sed "/<tag k=\"$1\"/d" - | \ | ||
| 231 | # insert new tag&value | ||
| 232 | sed -r "/<(node|way|relation)/a \ \ \ \ <tag k=\"$1\" v=\"$2\"\/>" | ||
| 233 | } | ||
| 234 | osm.changeset.add() { | ||
| 235 | element=$(cat -) | ||
| 236 | header=$(echo $element | grep -E "<(node|way|relation)\s") | ||
| 237 | ele_type=$(echo $header | sed -r 's/.*<(node|way|relation).*$/\1/') | ||
| 238 | id=$(echo $header | sed -r 's/.* id=\"([^"]+)\".*$/\1/') | ||
| 239 | |||
| 240 | echo $element | \ | ||
| 241 | sed -r "s/^( *<(node|way|relation).*version[^ ]+ )(.*)$/\1changeset=\"$1\">/" | \ | ||
| 242 | curl -X PUT -u $OSM_USER_PASSWD -i -T - $osm/$ele_type/$id | ||
| 243 | } | ||
| 244 | osm.changeset.update() { | ||
| 245 | echo "<osm><changeset><tag k=\"comment\" v=\"$2\"/></changeset></osm>" | \ | ||
| 246 | curl -X PUT -u $OSM_USER_PASSWD -i -T - $osm/changeset/$1 | ||
| 247 | } | ||
| 248 | osm.changeset.close() { | ||
| 249 | curl -X PUT -u $OSM_USER_PASSWD -i $osm/changeset/$1/close | ||
| 250 | } | ||
| 251 | osm.pbf.update() { | ||
| 252 | PBF_FILE=$1 | ||
| 253 | SERVER=http://download.geofabrik.de/asia/taiwan-updates | ||
| 254 | |||
| 255 | osmium fileinfo $PBF_FILE | \ | ||
| 256 | grep osmosis_replication_sequence_number | \ | ||
| 257 | cut -d'=' -f2 | \ | ||
| 258 | sed 's/$/+1/' | bc | \ | ||
| 259 | read NEW_SEQ | ||
| 260 | |||
| 261 | SEQ_PATH=$(echo $NEW_SEQ | sed -r 's/(.{1})(.{3})/00\1\/\2/') | ||
| 262 | STATE_URL=$SERVER/000/$SEQ_PATH.state.txt | ||
| 263 | |||
| 264 | while [ $(curl.code $STATE_URL) != "404" ] | ||
| 265 | do | ||
| 266 | CHANGE_URL=$SERVER/000/$SEQ_PATH.osc.gz | ||
| 267 | echo $CHANGE_URL | ||
| 268 | curl -o $NEW_SEQ.osc.gz $CHANGE_URL && \ | ||
| 269 | osmium apply-changes $PBF_FILE $NEW_SEQ.osc.gz \ | ||
| 270 | --output-header=osmosis_replication_sequence_number=$NEW_SEQ \ | ||
| 271 | --overwrite \ | ||
| 272 | --output $NEW_SEQ.osm.pbf | ||
| 273 | |||
| 274 | PBF_FILE=$NEW_SEQ.osm.pbf | ||
| 275 | NEW_SEQ=$((NEW_SEQ+1)) | ||
| 276 | SEQ_PATH=$(echo $NEW_SEQ | sed -r 's/(.{1})(.{3})/00\1\/\2/') | ||
| 277 | STATE_URL=$SERVER/000/$SEQ_PATH.state.txt | ||
| 278 | done | ||
| 279 | } | ||
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 @@ | |||
| 1 | |||
| 2 | osm.utils.edit() { | ||
| 3 | vim $HOME/git/settings/scripts/osm.utils.sh | ||
| 4 | } | ||
| 5 | |||
| 6 | OSM_API='https://api.openstreetmap.org/api/0.6' | ||
| 7 | OSM_USER_PASSWD=$(cat $HOME/git/settings/tokens/osm) | ||
| 8 | |||
| 9 | osm.get() { | ||
| 10 | curl -X GET $OSM_API/$1/$2 | ||
| 11 | } | ||
| 12 | osm.file.query() { | ||
| 13 | osmium tags-filter $1 $2 --output-format=osm --omit-referenced | ||
| 14 | } | ||
| 15 | osm.extract() { | ||
| 16 | echo "<osm version=\"0.6\">" | ||
| 17 | sed -nr "/^ *<$1 id=\"$2\".*/,/^ *<\/$1>/p" - | ||
| 18 | echo "</osm>" | ||
| 19 | } | ||
| 20 | osm.update() { | ||
| 21 | # remove original tag&value | ||
| 22 | sed "/<tag k=\"$1\"/d" - | \ | ||
| 23 | # insert new tag&value | ||
| 24 | sed -r "/<(node|way|relation)/a \ \ \ \ <tag k=\"$1\" v=\"$2\"\/>" | ||
| 25 | } | ||
| 26 | osm.changeset.add() { | ||
| 27 | element=$(cat -) | ||
| 28 | header=$(echo $element | grep -E "<(node|way|relation)\s") | ||
| 29 | ele_type=$(echo $header | sed -r 's/.*<(node|way|relation).*$/\1/') | ||
| 30 | id=$(echo $header | sed -r 's/.* id=\"([^"]+)\".*$/\1/') | ||
| 31 | |||
| 32 | echo $element | \ | ||
| 33 | sed -r "s/^( *<(node|way|relation).*version[^ ]+ )(.*)$/\1changeset=\"$1\">/" | \ | ||
| 34 | curl -X PUT -u $OSM_API_USER_PASSWD -i -T - $OSM_API/$ele_type/$id | ||
| 35 | } | ||
| 36 | osm.changeset.update() { | ||
| 37 | echo "<osm><changeset><tag k=\"comment\" v=\"$2\"/></changeset></osm>" | \ | ||
| 38 | curl -X PUT -u $OSM_API_USER_PASSWD -i -T - $OSM_API/changeset/$1 | ||
| 39 | } | ||
| 40 | osm.changeset.close() { | ||
| 41 | curl -X PUT -u $OSM_API_USER_PASSWD -i $OSM_API/changeset/$1/close | ||
| 42 | } | ||
| 43 | osm.pbf.update() { | ||
| 44 | PBF_FILE=$1 | ||
| 45 | SERVER=http://download.geofabrik.de/asia/taiwan-updates | ||
| 46 | |||
| 47 | osmium fileinfo $PBF_FILE | \ | ||
| 48 | grep osmosis_replication_sequence_number | \ | ||
| 49 | cut -d'=' -f2 | \ | ||
| 50 | sed 's/$/+1/' | bc | \ | ||
| 51 | read NEW_SEQ | ||
| 52 | |||
| 53 | SEQ_PATH=$(echo $NEW_SEQ | sed -r 's/(.{1})(.{3})/00\1\/\2/') | ||
| 54 | STATE_URL=$SERVER/000/$SEQ_PATH.state.txt | ||
| 55 | |||
| 56 | while [ $(curl.code $STATE_URL) != "404" ] | ||
| 57 | do | ||
| 58 | CHANGE_URL=$SERVER/000/$SEQ_PATH.osc.gz | ||
| 59 | echo $CHANGE_URL | ||
| 60 | curl -o $NEW_SEQ.osc.gz $CHANGE_URL && \ | ||
| 61 | osmium apply-changes $PBF_FILE $NEW_SEQ.osc.gz \ | ||
| 62 | --output-header=osmosis_replication_sequence_number=$NEW_SEQ \ | ||
| 63 | --overwrite \ | ||
| 64 | --output $NEW_SEQ.osm.pbf | ||
| 65 | |||
| 66 | PBF_FILE=$NEW_SEQ.osm.pbf | ||
| 67 | NEW_SEQ=$((NEW_SEQ+1)) | ||
| 68 | SEQ_PATH=$(echo $NEW_SEQ | sed -r 's/(.{1})(.{3})/00\1\/\2/') | ||
| 69 | STATE_URL=$SERVER/000/$SEQ_PATH.state.txt | ||
| 70 | done | ||
| 71 | } | ||