[Talk-de] Werte in OSM besser ohne Einheit (war: BHKW)
Frederik Ramm
frederik at remote.org
So Feb 13 11:21:24 UTC 2011
Hallo,
M∡rtin Koppenhoefer wrote:
> Ich komme leider nicht aus dem Informatik-Umfeld und selbst "triviale"
> Aufgaben erfordern für mich einiges an Recherche bzw. riskiere ich,
> die Probleme suboptimal zu lösen. Ich nutze derzeit Osmosis, hole mir
> damit einige Elemente aus dem Planet und kombiniere das Ergebnis mit
> einem Italy-Extrakt zu einem komprimierten osm-xml, den ich mit
> osm2pgsql in eine Renderdatenbank einlese. Die Werte übernehme ich
> dabei derzeit einfach so, wie sie aus der db kommen.
>
> Das Präprocessing wäre also wohl an dieser Stelle sinnvoll (vor dem
> Import in die db).
Ja - obwohl man es durchaus auch spaeter noch in der Datenbank machen
koennte, wenn einem das lieber ist.
> Aber welches
> Programm/Vorgehen/Programmier-/Scriptsprache bietet sich dafür an? (Da
> ich das sowieso neu lernen muss, habe ich die Qual der Wahl). Oder
> sowas wie sed / awk? Wie macht Ihr das normalerweise?
Normalerweise muesste man dafuer einen XML-Parser nehmen. Das ist auch
nicht superkompliziert. Aber - und dafuer kriege ich regelmaessig
Schelte von "echten Programmierern" - da Du es hier it dem immer
gleichen Datenproduzenten zu tun hast, kannst Du auch die Annahme
treffen, dass die Daten immer gleich formuliert sind, d.h., Du bekommst
immer eine Zeile der Form
<tag k="population" v="..." />
fuer die Bevoelkerung. Das wiederum heisst, dass Du in einer beliebigen
primitiven Sprache, u.U. sogar sed/awk, arbeiten kannst. Ein einfaches
Perl-Skript, das die Bevoelkerung trimmt, saehe z.B. so aus:
#!/usr/bin/perl
while(<>)
{
if (/<tag k="population" v="(.*)"/)
{
printf("<tag k=\"population\" v=\"%d\" />\n", $1);
}
else
{
print;
}
}
Nach diesem Muster waere es auch trivial, z.B. noch Leerzeichen zu
entfernen, oder ein "123.000" zu einem "123000" zu machen:
...
if (/<tag k="population" v="(.*)"/)
{
$p=$1:
$p =~ tr/. //d;
printf("<tag k=\"population\" v=\"%d\" />\n", $p);
}
...
oder ein "MW" in "W" umzurechnen, usw.usw.
Bye
Frederik
--
Frederik Ramm ## eMail frederik at remote.org ## N49°00'09" E008°23'33"
Mehr Informationen über die Mailingliste Talk-de