On 06.01.2011 23:37, fla...@googlemail.com wrote:
Klar, derzeit ist es nur bedingt brauchbar. Aber der komplette Code der
benötigt wird, ist hier online:
http://sourceforge.net/projects/cgpsmapper/

Da dies Sourcecode erst seit gut zwei Wochen online ist, wurde er bisher
noch nicht genutzt um es in mkgmap zu implementieren. Steve hat dies
angekündigt. Primär scheinen in mkgmap einige Indexes im mdr falsch
sortiert, bzw fehlen noch.
Da cgpsmapper einen korrekt funktionierenden Index schreiben kann, wird es
wohl bei mkgmap nicht mehr lange dauern. Entweder Steve oder jemand anders
wird es schon schaffen noch die Änderungen zu implementieren.

(damit steht dann primär noch das kaputte Intertilerouting zu korrigieren in
mgkmap, sowie eine bessere transliteration von Sonderzeichen / anderen
Alphabeten).


alles bekannt, aber jetzt werde dich bitte mal konkret was du mit dem
vielem Ram für einen Index
rechnen wilst ? Bitte um Codebeispiele was du machst.

Dirk



Ich mach damit gar nichts, aber soweit ich erkennen kann, lädt mkgmap zur Indexerstellung alle Tiles auf einmal in den RAM.
Siehe: uk\me\parabola\mkgmap\combiners\mdrbuilder.java

Wahrscheinlich müsste man hier nur umprogrammieren, dass ein temporärer Speicher auf der Festplatte erstellt wird, statt alles im RAM zu machen. Das Problem ist halt, dass die Straßen zu den Cities gematcht werden müssen, da wir ja blöderweise bei OSM nicht dazuschreiben (wie in jeder professionellen Geodatenbank) zu welcher Stadt/Gemeinde/Land eine Straße gehört. Also muss mkgmap den Cityrecord durchgehen, und die nächste Stadt ist eben nicht zwingend in derselben Kachel, wo die Straße sich befindet. Also müsste man, wenn man nicht alle Kacheln auf einmal laden will, halt Etappenweise vorgehen mit Überschneidungen - was halt komplizierter ist, als alles in eine Datenbank vor der Indexerstellung zu schmeißen.

Oder in Etappe 1, eine Datenbank der Cities erstellen und hier Kachel für Kachel in den Ram laden, und dann in einer zweiten Etappe die Straßen dagegen Matchen, dabei aber die Kacheln neu in den Ram laden, statt aus Step 1 noch drinnenzubehalten. Am einfachsten wäre wohl, wenn der User angibt wieviel RAM zur Verfügung steht, dann durch 20 geteilt wird, und dass die maximale Anzahl der Kacheln ist, die in einem Rutsch geladen wird. Wenn nicht müsste man den Index in zwei statt in einem Schritt erstellen (also etwa doppelte Erstellungszeit, wenn genug Ram frei gewesen wäre).

Oder anders: Ich will nicht soviel RAM, aber da eben alle Kacheln auf einmal eingelesen werden, wird zurzeit halt etwa Kachelgröße mal 1.2 an verfügbarem Ram benötigt. Und wenn der Rechner hier zu swappen anfängt, dann braucht es derzeit ewig. Ich bin kein Programmierer, daher kann ich das nicht ändern. Bin eh schon froh wenn ich solche Files halbwegs lesen kann.


_______________________________________________
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de

Antwort per Email an