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 frede...@remote.org ## N49°00'09" E008°23'33"
_______________________________________________
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de