aboutsummaryrefslogtreecommitdiffhomepage
path: root/utils/osm.utils.sh
diff options
context:
space:
mode:
authortypebrook <typebrook@gmail.com>2019-11-07 17:42:32 +0800
committertypebrook <typebrook@gmail.com>2019-11-07 17:42:32 +0800
commit84267ec5be4a864a97d5ee25ed9e89a9d401bd29 (patch)
tree001df1e148e7ba837d257abb6d128c3b7a39c908 /utils/osm.utils.sh
parent24ebc07c6c3841713fd3f136985fa2d6e76e2d58 (diff)
update
Diffstat (limited to 'utils/osm.utils.sh')
-rw-r--r--utils/osm.utils.sh72
1 files changed, 72 insertions, 0 deletions
diff --git a/utils/osm.utils.sh b/utils/osm.utils.sh
new file mode 100644
index 0000000..928310d
--- /dev/null
+++ b/utils/osm.utils.sh
@@ -0,0 +1,72 @@
1FILENAME=$0
2
3osm.utils.edit() {
4 vim $FILENAME
5}
6
7OSM_API='https://api.openstreetmap.org/api/0.6'
8OSM_USER_PASSWD=$(cat $HOME/git/settings/tokens/osm)
9
10osm.get() {
11 curl -X GET $OSM_API/$1/$2
12}
13osm.file.query() {
14 osmium tags-filter $1 $2 --output-format=osm --omit-referenced
15}
16osm.extract() {
17 echo "<osm version=\"0.6\">"
18 sed -nr "/^ *<$1 id=\"$2\".*/,/^ *<\/$1>/p" -
19 echo "</osm>"
20}
21osm.update() {
22 # remove original tag&value
23 sed "/<tag k=\"$1\"/d" - | \
24 # insert new tag&value
25 sed -r "/<(node|way|relation)/a \ \ \ \ <tag k=\"$1\" v=\"$2\"\/>"
26}
27osm.changeset.add() {
28 element=$(cat -)
29 header=$(echo $element | grep -E "<(node|way|relation)\s")
30 ele_type=$(echo $header | sed -r 's/.*<(node|way|relation).*$/\1/')
31 id=$(echo $header | sed -r 's/.* id=\"([^"]+)\".*$/\1/')
32
33 echo $element | \
34 sed -r "s/^( *<(node|way|relation).*version[^ ]+ )(.*)$/\1changeset=\"$1\">/" | \
35 curl -X PUT -u $OSM_API_USER_PASSWD -i -T - $OSM_API/$ele_type/$id
36}
37osm.changeset.update() {
38 echo "<osm><changeset><tag k=\"comment\" v=\"$2\"/></changeset></osm>" | \
39 curl -X PUT -u $OSM_API_USER_PASSWD -i -T - $OSM_API/changeset/$1
40}
41osm.changeset.close() {
42 curl -X PUT -u $OSM_API_USER_PASSWD -i $OSM_API/changeset/$1/close
43}
44osm.pbf.update() {
45 PBF_FILE=$1
46 SERVER=http://download.geofabrik.de/asia/taiwan-updates
47
48 osmium fileinfo $PBF_FILE | \
49 grep osmosis_replication_sequence_number | \
50 cut -d'=' -f2 | \
51 sed 's/$/+1/' | bc | \
52 read NEW_SEQ
53
54 SEQ_PATH=$(echo $NEW_SEQ | sed -r 's/(.{1})(.{3})/00\1\/\2/')
55 STATE_URL=$SERVER/000/$SEQ_PATH.state.txt
56
57 while [ $(curl.code $STATE_URL) != "404" ]
58 do
59 CHANGE_URL=$SERVER/000/$SEQ_PATH.osc.gz
60 echo $CHANGE_URL
61 curl -o $NEW_SEQ.osc.gz $CHANGE_URL && \
62 osmium apply-changes $PBF_FILE $NEW_SEQ.osc.gz \
63 --output-header=osmosis_replication_sequence_number=$NEW_SEQ \
64 --overwrite \
65 --output $NEW_SEQ.osm.pbf
66
67 PBF_FILE=$NEW_SEQ.osm.pbf
68 NEW_SEQ=$((NEW_SEQ+1))
69 SEQ_PATH=$(echo $NEW_SEQ | sed -r 's/(.{1})(.{3})/00\1\/\2/')
70 STATE_URL=$SERVER/000/$SEQ_PATH.state.txt
71 done
72}