aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authortypebrook <typebrook@gmail.com>2019-11-11 16:43:53 +0800
committertypebrook <typebrook@gmail.com>2019-11-11 16:43:53 +0800
commit5644da89ef2161985aabcaff719b5e2424509069 (patch)
tree166405445ebb4247115bc8a6dabcb4269ca85955
parent69e3a3ff1d2126fc82fb963942f9238b601bfa4a (diff)
update
-rw-r--r--utils/osm53
1 files changed, 30 insertions, 23 deletions
diff --git a/utils/osm b/utils/osm
index 7ddae17..8eb2ba2 100644
--- a/utils/osm
+++ b/utils/osm
@@ -35,36 +35,42 @@ OSM_API=$SERVER/api/0.6
35OSM_USER_PASSWD=$(cat $SETTING_DIR/tokens/osm) 35OSM_USER_PASSWD=$(cat $SETTING_DIR/tokens/osm)
36 36
37# get .osm format data 37# get .osm format data
38osm.fetch() { 38osm.api.fetch() {
39 curl -X GET $OSM_API/$1/$2 |\ 39 curl -X GET $OSM_API/$1/$2 |\
40 tee /tmp/osm &&\ 40 tee /tmp/osm &&\
41 echo content of $1 $2 is copied into /tmp/osm > /dev/tty 41 echo content of $1 $2 is copied into /tmp/osm > /dev/tty
42} 42}
43osm.fetch.full() { 43osm.api.fetch.full() {
44 curl -X GET $OSM_API/$1/$2/full |\ 44 curl -X GET $OSM_API/$1/$2/full |\
45 tee /tmp/osm &&\ 45 tee /tmp/osm &&\
46 echo content of $1 $2 and its members are copied into /tmp/osm > /dev/tty 46 echo content of $1 $2 and its members are copied into /tmp/osm > /dev/tty
47} 47}
48osm.fetch.history() { 48osm.api.fetch.history() {
49 curl -X GET $OSM_API/$1/$2/history |\ 49 curl -X GET $OSM_API/$1/$2/history |\
50 tee /tmp/osm &&\ 50 tee /tmp/osm &&\
51 echo history of $1 $2 are copied into /tmp/osm > /dev/tty 51 echo history of $1 $2 are copied into /tmp/osm > /dev/tty
52} 52}
53osm.in_relations() { 53osm.api.in_relations() {
54 curl -X GET $OSM_API/$1/$2/relations |\ 54 curl -X GET $OSM_API/$1/$2/relations |\
55 tee /tmp/osm &&\ 55 tee /tmp/osm &&\
56 echo relations contain $1 $2 are copied into /tmp/osm > /dev/tty 56 echo relations contain $1 $2 are copied into /tmp/osm > /dev/tty
57} 57}
58osm.in_relations_as() { 58osm.member.relation() {
59 ele_pattern="(node|way|relation)" 59 sed -nr "/<relation/,/<\/relation/ {
60 60 /<relation/ {s/.* id=\"([^\"]+)\".*/\1/;h}
61 osm.in_relations $1 $2 |\ 61 /<member type=\"$1\" ref=\"$2\" role=\"$3\"/ {g;p;q}
62 sed -nr "/<$ele_pattern/,/<\/$ele_pattern/ { 62 }
63 /<$ele_pattern/ {s/.* id=\"([^\"]+)\".*/\1/;h} 63 $ {s/.*//;P}
64 /<member type=\"$1\" ref=\"$2\" role=\"$3\"/ {g;p} 64 " | head -1
65 }"
66} 65}
67osm.in_ways() { 66osm.file.cat() {
67 osmium cat $1 --output-format=osm -t $2
68}
69osm.api.member.relation() {
70 osm.api.in_relations $1 $2 |\
71 osm.member.relation $1 $2 $3
72}
73osm.api.in_ways() {
68 curl -X GET $OSM_API/node/$1/ways |\ 74 curl -X GET $OSM_API/node/$1/ways |\
69 tee /tmp/osm &&\ 75 tee /tmp/osm &&\
70 echo ways contain node $1 are copied into /tmp/osm > /dev/tty 76 echo ways contain node $1 are copied into /tmp/osm > /dev/tty
@@ -86,11 +92,12 @@ osm.list.tags() {
86 for tag in "$@" 92 for tag in "$@"
87 do 93 do
88 echo $content |\ 94 echo $content |\
89 osm.list.tag $tag > /tmp/osm.tag.$tag 95 osm.list.tag $tag |\
96 paste -d',' /tmp/osm - > /tmp/osm.new &&\
97 mv /tmp/osm.new /tmp/osm
90 done 98 done
91 99
92 paste -d',' /tmp/osm /tmp/osm.tag.* 100 cat /tmp/osm
93 rm /tmp/osm.tag.*
94} 101}
95# extract an element from .osm format STDIN 102# extract an element from .osm format STDIN
96# $1 as [node|way|relation], $2 as id 103# $1 as [node|way|relation], $2 as id
@@ -105,12 +112,12 @@ osm.list.ids() {
105} 112}
106# upload .osm format STDIN to a given changeset 113# upload .osm format STDIN to a given changeset
107# allows multiple elements in osm body 114# allows multiple elements in osm body
108osm.upload.to() { 115osm.api.upload.to() {
109 116
110 tee /tmp/osm |\ 117 tee /tmp/osm |\
111 osm.extract.ids |\ 118 osm.extract.ids |\
112 sed 's#.*#osm.extract \0 < /tmp/osm#g' |\ 119 sed 's#.*#osm.extract \0 < /tmp/osm#g' |\
113 sed "s/.*/\0 \| osm.changeset.add $1/g" |\ 120 sed "s/.*/\0 \| osm.api.changeset.add $1/g" |\
114 while read -r command 121 while read -r command
115 do 122 do
116 echo $command 123 echo $command
@@ -148,7 +155,7 @@ osm.update() {
148 fi 155 fi
149} 156}
150# create a new changeset 157# create a new changeset
151osm.changeset.create() { 158osm.api.changeset.create() {
152 159
153 echo -n "type comment: " 160 echo -n "type comment: "
154 read comment 161 read comment
@@ -167,7 +174,7 @@ osm.changeset.create() {
167 xsel -ib 174 xsel -ib
168} 175}
169# add a new element into changeset 176# add a new element into changeset
170osm.changeset.add() { 177osm.api.changeset.add() {
171 element=$(cat) 178 element=$(cat)
172 header=$(echo $element | grep -E "<(node|way|relation)\s") 179 header=$(echo $element | grep -E "<(node|way|relation)\s")
173 ele_type=$(echo $header | sed -r 's/.*<(node|way|relation).*$/\1/') 180 ele_type=$(echo $header | sed -r 's/.*<(node|way|relation).*$/\1/')
@@ -178,7 +185,7 @@ osm.changeset.add() {
178 curl -X PUT -u $OSM_USER_PASSWD -i -T - $OSM_API/$ele_type/$id 185 curl -X PUT -u $OSM_USER_PASSWD -i -T - $OSM_API/$ele_type/$id
179} 186}
180# update changeset with a new comment 187# update changeset with a new comment
181osm.changeset.update() { 188osm.api.changeset.update() {
182 echo -n 'type comment: ' 189 echo -n 'type comment: '
183 read -r comment 190 read -r comment
184 191
@@ -186,7 +193,7 @@ osm.changeset.update() {
186 curl -X PUT -u $OSM_USER_PASSWD -i -T - $OSM_API/changeset/$1 193 curl -X PUT -u $OSM_USER_PASSWD -i -T - $OSM_API/changeset/$1
187} 194}
188# close a changeset 195# close a changeset
189osm.changeset.close() { 196osm.api.changeset.close() {
190 curl -X PUT -u $OSM_USER_PASSWD -i $OSM_API/changeset/$1/close 197 curl -X PUT -u $OSM_USER_PASSWD -i $OSM_API/changeset/$1/close
191} 198}
192# update an .osm.pbf file 199# update an .osm.pbf file