diff options
author | typebrook <typebrook@gmail.com> | 2019-11-07 17:59:54 +0800 |
---|---|---|
committer | typebrook <typebrook@gmail.com> | 2019-11-07 17:59:54 +0800 |
commit | d6acc3452d42160117e67bf37107e4664034f5ba (patch) | |
tree | 8683b430480ab145e44ff807a0946f20e213f225 | |
parent | 84267ec5be4a864a97d5ee25ed9e89a9d401bd29 (diff) |
update
-rw-r--r-- | utils/osm.utils.sh | 49 |
1 files changed, 45 insertions, 4 deletions
diff --git a/utils/osm.utils.sh b/utils/osm.utils.sh index 928310d..872e755 100644 --- a/utils/osm.utils.sh +++ b/utils/osm.utils.sh | |||
@@ -1,29 +1,67 @@ | |||
1 | FILENAME=$0 | 1 | FILENAME=$0 |
2 | 2 | ||
3 | osm.utils.edit() { | 3 | osm.utils.edit() { |
4 | vim $FILENAME | 4 | vim $FILENAME && source $FILENAME |
5 | } | 5 | } |
6 | 6 | ||
7 | OSM_API='https://api.openstreetmap.org/api/0.6' | 7 | OSM_API='https://api.openstreetmap.org/api/0.6' |
8 | OSM_USER_PASSWD=$(cat $HOME/git/settings/tokens/osm) | 8 | OSM_USER_PASSWD=$(cat $HOME/git/settings/tokens/osm) |
9 | 9 | ||
10 | # get .osm format data | ||
10 | osm.get() { | 11 | osm.get() { |
11 | curl -X GET $OSM_API/$1/$2 | 12 | curl -X GET $OSM_API/$1/$2 |
12 | } | 13 | } |
14 | # query osm-related file with .osm format output | ||
13 | osm.file.query() { | 15 | osm.file.query() { |
14 | osmium tags-filter $1 $2 --output-format=osm --omit-referenced | 16 | osmium tags-filter $1 $2 --output-format=osm --omit-referenced |
15 | } | 17 | } |
18 | # extract an element from .osm format STDIN | ||
16 | osm.extract() { | 19 | osm.extract() { |
17 | echo "<osm version=\"0.6\">" | 20 | echo "<osm version=\"0.6\">" |
18 | sed -nr "/^ *<$1 id=\"$2\".*/,/^ *<\/$1>/p" - | 21 | sed -nr "/^ *<$1 id=\"$2\".*/,/^ *<\/$1>/p" - |
19 | echo "</osm>" | 22 | echo "</osm>" |
20 | } | 23 | } |
24 | # update .osm format STDIN with key-value | ||
21 | osm.update() { | 25 | osm.update() { |
22 | # remove original tag&value | 26 | # remove original tag&value |
23 | sed "/<tag k=\"$1\"/d" - | \ | 27 | sed "/<tag k=\"$1\"/d" - | \ |
24 | # insert new tag&value | 28 | # insert new tag&value |
25 | sed -r "/<(node|way|relation)/a \ \ \ \ <tag k=\"$1\" v=\"$2\"\/>" | 29 | sed -r "/<(node|way|relation)/a \ \ \ \ <tag k=\"$1\" v=\"$2\"\/>" |
26 | } | 30 | } |
31 | # create a new changeset | ||
32 | osm.changeset.create() { | ||
33 | |||
34 | #server=https://master.apis.dev.openstreetmap.org | ||
35 | server=https://api.openstreetmap.org | ||
36 | comment="change is_in format" | ||
37 | |||
38 | for i in "$@" | ||
39 | do | ||
40 | case $i in | ||
41 | -s) | ||
42 | lon_col=0; lat_col=1 | ||
43 | shift;; | ||
44 | |||
45 | *) | ||
46 | csv=$i | ||
47 | shift;; | ||
48 | esac | ||
49 | done | ||
50 | |||
51 | info="<osm> | ||
52 | <changeset> | ||
53 | <tag k='comment' v='$comment'/> | ||
54 | </changeset> | ||
55 | </osm> | ||
56 | " | ||
57 | |||
58 | echo $info |\ | ||
59 | curl -u $OSM_USER_PASSWD -i --upload-file - $server/api/0.6/changeset/create |\ | ||
60 | tee /dev/tty |\ | ||
61 | tail -1 |\ | ||
62 | xsel -ib | ||
63 | } | ||
64 | # add a new element into changeset | ||
27 | osm.changeset.add() { | 65 | osm.changeset.add() { |
28 | element=$(cat -) | 66 | element=$(cat -) |
29 | header=$(echo $element | grep -E "<(node|way|relation)\s") | 67 | header=$(echo $element | grep -E "<(node|way|relation)\s") |
@@ -32,15 +70,18 @@ osm.changeset.add() { | |||
32 | 70 | ||
33 | echo $element | \ | 71 | echo $element | \ |
34 | sed -r "s/^( *<(node|way|relation).*version[^ ]+ )(.*)$/\1changeset=\"$1\">/" | \ | 72 | 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 | 73 | curl -X PUT -u $OSM_USER_PASSWD -i -T - $OSM_API/$ele_type/$id |
36 | } | 74 | } |
75 | # update changeset with a new comment | ||
37 | osm.changeset.update() { | 76 | osm.changeset.update() { |
38 | echo "<osm><changeset><tag k=\"comment\" v=\"$2\"/></changeset></osm>" | \ | 77 | 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 | 78 | curl -X PUT -u $OSM_USER_PASSWD -i -T - $OSM_API/changeset/$1 |
40 | } | 79 | } |
80 | # close a changeset | ||
41 | osm.changeset.close() { | 81 | osm.changeset.close() { |
42 | curl -X PUT -u $OSM_API_USER_PASSWD -i $OSM_API/changeset/$1/close | 82 | curl -X PUT -u $OSM_USER_PASSWD -i $OSM_API/changeset/$1/close |
43 | } | 83 | } |
84 | # update an .osm.pbf file | ||
44 | osm.pbf.update() { | 85 | osm.pbf.update() { |
45 | PBF_FILE=$1 | 86 | PBF_FILE=$1 |
46 | SERVER=http://download.geofabrik.de/asia/taiwan-updates | 87 | SERVER=http://download.geofabrik.de/asia/taiwan-updates |