summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--alias68
-rw-r--r--scripts/osm.utils.sh71
2 files changed, 71 insertions, 68 deletions
diff --git a/alias b/alias
index 5c71098..e297c72 100644
--- a/alias
+++ b/alias
@@ -1,5 +1,4 @@
1SETTING_DIR="$HOME/git/settings" 1SETTING_DIR="$HOME/git/settings"
2OSM_USER_PASSWD=$(cat $HOME/git/settings/tokens/osm)
3 2
4# settings 3# settings
5alias al='vim ~/.bash_aliases && source ~/.bash_aliases' 4alias al='vim ~/.bash_aliases && source ~/.bash_aliases'
@@ -210,70 +209,3 @@ alias cdand='cd ~/git/sample'
210repo='git@github.com' 209repo='git@github.com'
211hub='https://github.com' 210hub='https://github.com'
212typebrook='git@github.com:typebrook' 211typebrook='git@github.com:typebrook'
213
214
215# osm
216osm='https://api.openstreetmap.org/api/0.6'
217osm.get() {
218 curl -X GET $osm/$1/$2
219}
220osm.query() {
221 osmium tags-filter $1 $2 --output-format=osm --omit-referenced
222}
223osm.extract() {
224 echo "<osm version=\"0.6\">"
225 sed -nr "/^ *<$1 id=\"$2\".*/,/^ *<\/$1>/p" -
226 echo "</osm>"
227}
228osm.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}
234osm.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}
244osm.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}
248osm.changeset.close() {
249 curl -X PUT -u $OSM_USER_PASSWD -i $osm/changeset/$1/close
250}
251osm.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
2osm.utils.edit() {
3 vim $HOME/git/settings/scripts/osm.utils.sh
4}
5
6OSM_API='https://api.openstreetmap.org/api/0.6'
7OSM_USER_PASSWD=$(cat $HOME/git/settings/tokens/osm)
8
9osm.get() {
10 curl -X GET $OSM_API/$1/$2
11}
12osm.file.query() {
13 osmium tags-filter $1 $2 --output-format=osm --omit-referenced
14}
15osm.extract() {
16 echo "<osm version=\"0.6\">"
17 sed -nr "/^ *<$1 id=\"$2\".*/,/^ *<\/$1>/p" -
18 echo "</osm>"
19}
20osm.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}
26osm.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}
36osm.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}
40osm.changeset.close() {
41 curl -X PUT -u $OSM_API_USER_PASSWD -i $OSM_API/changeset/$1/close
42}
43osm.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}