diff options
| author | typebrook <typebrook@gmail.com> | 2019-11-18 14:47:11 +0800 |
|---|---|---|
| committer | typebrook <typebrook@gmail.com> | 2019-11-18 14:47:11 +0800 |
| commit | 877ae178585263ef966b67d251665fbc48739e97 (patch) | |
| tree | c5c0977f9fe7fa4afe8e4312fadec3face7356c5 /scripts/osm | |
| parent | f22bbf1ed606adb6140f1c8cc0b723cbb476fa82 (diff) | |
update
Diffstat (limited to 'scripts/osm')
| -rwxr-xr-x | scripts/osm/osm.osc.create | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/scripts/osm/osm.osc.create b/scripts/osm/osm.osc.create index 93a6640..cc92c1d 100755 --- a/scripts/osm/osm.osc.create +++ b/scripts/osm/osm.osc.create | |||
| @@ -1,25 +1,32 @@ | |||
| 1 | #!/bin/bash | 1 | #!/bin/bash |
| 2 | 2 | ||
| 3 | # create new tags from input line, for example: | 3 | # create new tags from input line, for example: |
| 4 | # [element type] [element ID] key1_added "value1" key2_added "value2" key3_removed key4_removed | 4 | # field1 field2 field3 field4 field5 field6 field7 field8... |
| 5 | # [element type] [element ID] key1_added "value1" key2_added "value2" key3_removed key4_removed... | ||
| 5 | 6 | ||
| 6 | # key should not quoted, value must be quoted | 7 | # key should not quoted, value must be quoted |
| 7 | # And keys which need to be removed must be placed at the end | 8 | # And keys which need to be removed must be placed at the end |
| 8 | while read -r line | 9 | while read -r line |
| 9 | do | 10 | do |
| 10 | TYPE=$(echo $line | cut -d ' ' -f1) | 11 | TYPE=$(echo $line | cut -d ' ' -f1) # field1 is type |
| 11 | ID=$(echo $line | cut -d ' ' -f2) | 12 | ID=$(echo $line | cut -d ' ' -f2) # field2 is ID |
| 12 | 13 | ||
| 14 | # transform key-value pair into tag format: | ||
| 15 | # <tag k="[key]" v="[value]"/> | ||
| 16 | # keys without values are omitted | ||
| 13 | NEW_TAGS=$(echo $line |\ | 17 | NEW_TAGS=$(echo $line |\ |
| 14 | cut -d' ' -f3- |\ | 18 | cut -d' ' -f3- |\ |
| 15 | sed -r 's/([^ "]+) (\"[^"]+\")/<tag k=\"\1\" v=\2\/>/g; s/>[^"]*$/>/') | 19 | sed -r 's/([^ "]+) (\"[^"]+\")/<tag k=\"\1\" v=\2\/>/g; s/>[^"]*$/>/') |
| 16 | 20 | ||
| 21 | # get regex pattern need to removed from original osm element: | ||
| 22 | # key1|key2|key3|key4 | ||
| 17 | TAG_PATTERN=$(echo $line |\ | 23 | TAG_PATTERN=$(echo $line |\ |
| 18 | cut -d' ' -f3- | xargs -n2 echo |\ | 24 | cut -d' ' -f3- | xargs -n2 echo |\ |
| 19 | cut -d' ' -f1 | paste -s -d'|') | 25 | cut -d' ' -f1 | paste -s -d'|') |
| 20 | 26 | ||
| 21 | echo $NEW_TAGS > /dev/tty | 27 | echo $NEW_TAGS > /dev/tty |
| 22 | 28 | ||
| 29 | # print matched element with new tags to .osc file | ||
| 23 | cat $1 |\ | 30 | cat $1 |\ |
| 24 | sed -nr "/<$TYPE id=\"$ID\"/,/<\/$TYPE/ { | 31 | sed -nr "/<$TYPE id=\"$ID\"/,/<\/$TYPE/ { |
| 25 | /<$TYPE id=\"$ID\"/ { | 32 | /<$TYPE id=\"$ID\"/ { |
| @@ -31,6 +38,7 @@ do | |||
| 31 | }" >> $1.osc | 38 | }" >> $1.osc |
| 32 | done | 39 | done |
| 33 | 40 | ||
| 41 | # Add .osc structure for output | ||
| 34 | sed -ir '1 i <osmChange version="0.6" generator="bash script"> | 42 | sed -ir '1 i <osmChange version="0.6" generator="bash script"> |
| 35 | 1 i <modify> | 43 | 1 i <modify> |
| 36 | $ a </modify> | 44 | $ a </modify> |