Hallo, > > will), oder die Datei für jeden Weg immer und immer wieder nach allen > > Nodes durchsuchen (so dass dann die Plattengeschwindigkeit zum > > Flaschenhals wird). > > > > Soweit meine bisherigen "Forschungsergebnisse". > > Ohne gscheite und wohlüberlegte Datenstruktur wird das nix wie Du grad > merkst. Ergo: Du brauchst eine Datenbank und sinnvoll aufgebaute > Suchbäume.
Naja, also mal immer langsam mit den jungen Pferden! Ich mache sowas doch staendig und benutze dazu nur das Planet File, keine Datenbank. Wir haben derzeit ziemlich genau 40 Millionen Nodes; die hoechste verwendete Node-Id ist ungefaehr 60 Millionen. Etwa gleichviele Segmente, und etwa ein Zehntel dieser Zahl an Ways. Die Standard-Vorgehensweise fuer einen einfachen Polygon-Ausschnitt kommt mit einem einzigen Pass durch das Planet-File aus (weil es nodes/segments/ways sortiert ist) Schritt 1 - Planet-File einlesen und alle Nodes flaggen und ausgeben, die im Polygon liegen. Speicherplatzbedarf derzeit 60 Millionen Bits = unter 10 MB. Schritt 2 - Planet-File weiter einlesen, nun alle Segmente flaggen und ausgeben, von denen ein Node geflaggt ist. Speicherbedarf nochmal gleichviel. Schritt 3 - Planet-File weiter einlesen, alle Ways ausgeben, von denen mindestens ein Segment geflaggt ist. Kein zusaetzlicher Speicherbedarf, da die Ways nicht gemerkt werden muessen. Mit unter 20 MB RAM (in einer Programmiersprache, die Bitfelder unterstuetzt, wohlgemerkt!) kommt man also durch das heutige Planet File, und wenn man, was heute ja normal ist, 1 GB RAM zur Verfuegung hat, geht das auch noch nach dem TIGER-Import gut. Wenn man den Anspruch "referenzielle Integritaet" hat, wenn man also auch noch die Segmente und Nodes ausgeben will, die von den Ways zusaetzlich gebraucht werden, obwohl sie nicht urspruenglich selektiert waren, muss man sich waehrend Schritt 3 eine weitere Segmentliste aufbauen, dann diese Segmente noch rausholen (idealerweise mit einem "seek" an die vorher in Schritt 2 gemerkte Position) und danach das gleiche nochmal fuer Nodes machen - das verdoppelt den Speicherbedarf auf 40 MB und verdoppelt die Programmlaufzeit. Aber das ist alles nichts im Vergleich zu der Zeit, die es kostet, das Planetfile in eine Datenbank einzulesen und gescheit zu indizieren. Das mit der Datenbank lohnt sich dann, wenn man sehr viele Exzerpte machen will; will man (wie ich regelmaessig) z.B. nur Deutschland extrahieren, dann geht es viel schneller, mit der o.g. Methode einmal durch das Planet-File durchzurennen. Bye Frederik -- Frederik Ramm ## eMail [EMAIL PROTECTED] ## N49°00.09' E008°23.33' _______________________________________________ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-de