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

Antwort per Email an