diff options
Diffstat (limited to 'scripts/osm.utils.sh')
-rw-r--r-- | scripts/osm.utils.sh | 71 |
1 files changed, 71 insertions, 0 deletions
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 | } | ||