[Talk-de] AIO fehlt völlig
Felix Hartmann
extremecarver at gmail.com
Fr Jan 7 01:00:03 UTC 2011
On 06.01.2011 23:37, flabot at 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.
Mehr Informationen über die Mailingliste Talk-de