Die Originaldaten enthalten leider doch einige Fehler, so sind z.B. jeweils die Koordinaten der folgenden Adressen genau gleich:
-
Dekan Hintner-Straße 1, 3, 5, 7, 9, 11 und Defreggerstraße 16, 18
-
Einfangstraße 12, 14, 14a, 14b, 14c, 16
-
Josef Meng-Straße 1, 3, 5, 7, 9, 11
-
Gilmstraße 14, 14a, 16, 16a und Jahnstraße 9, 11, 13, 15
-
Krankenhausgasse 13, 15, 17, 19, 21, 23
Hier die angepasste Anleitung:
Ein Auszug aus der CSV-Datei “Adressen_Kufstein.csv”, welche ich aus der Excel-Datei erzeugt habe:
Endach:6330:Defreggerstraße:9:::-88809,50:271010,43
Kufstein:6330:Carl Wagner-Straße:3:a::-86942,03:272679,16
Zell:6330:Dr. Prem-Straße:15:a::-88153,24:272734,16
Das passende Skript “generate_osm.sh” sieht wie folgt aus:
#!/bin/bash
in_file=${1}
base_name=$(basename $in_file .csv)
header="<?xml version='1.0' encoding='UTF-8'?>
<osm version='0.6' generator='JOSM'>"
node=" <node id='%s' action='modify' visible='true' lat='%s' lon='%s'>
<tag k='addr:city' v='%s' />
<tag k='addr:country' v='AT' />
<tag k='addr:housenumber' v='%s%s' />
<tag k='addr:postcode' v='%s' />
<tag k='addr:street' v='%s' />
</node>
"
footer="</osm>"
id=0
IFS=':'
{
printf "%s\n" "$header"
while read city postcode street housenumber housenumber2 vulgoname y x
do
id=$((id-1))
cs2cs_input=$(echo "$y $x" | tr ',' '.')
co=$(echo $cs2cs_input | cs2cs +proj=tmerc +ellps=bessel +lon_0=13.33333333333333 +x_0=0 +y_0=-5000000 +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +to +proj=longlat +ellps=WGS84 +datum=WGS84 -f '%.8f' -s)
co=$(echo "$co" | tr '\t' ' ')
lat=$(echo $co | cut -d" " -f1)
lon=$(echo $co | cut -d" " -f2)
printf "$node" "$id" "$lat" "$lon" "$city" "$housenumber" "$housenumber2" "$postcode" "$street"
done < "$in_file"
printf "%s\n" "$footer"
} > $base_name.osm
Aufruf:
sh ./generate_osm.sh Adressen_Kufstein.csv
Die Ausgabe “Adressen_Kufstein.osm”:
<?xml version='1.0' encoding='UTF-8'?>
<osm version='0.6' generator='JOSM'>
<node id='-1' action='modify' visible='true' lat='47.57172711' lon='12.15225177'>
<tag k='addr:city' v='Endach' />
<tag k='addr:country' v='AT' />
<tag k='addr:housenumber' v='9' />
<tag k='addr:postcode' v='6330' />
<tag k='addr:street' v='Defreggerstraße' />
</node>
<node id='-2' action='modify' visible='true' lat='47.58698642' lon='12.17673512'>
<tag k='addr:city' v='Kufstein' />
<tag k='addr:country' v='AT' />
<tag k='addr:housenumber' v='3a' />
<tag k='addr:postcode' v='6330' />
<tag k='addr:street' v='Carl Wagner-Straße' />
</node>
<node id='-3' action='modify' visible='true' lat='47.58731712' lon='12.16062505'>
<tag k='addr:city' v='Zell' />
<tag k='addr:country' v='AT' />
<tag k='addr:housenumber' v='15a' />
<tag k='addr:postcode' v='6330' />
<tag k='addr:street' v='Dr. Prem-Straße' />
</node>
</osm>
Vielleicht ist das für jemanden hilfreich.
Gruß,
Mondschein