[Talk-de] JOSM-Geschwindigkeit (was: Re: Betriebssysteme für OSM-Anwender)

Dominik Spies kontakt at dspies.de
Di Dez 23 10:46:25 UTC 2008


2008/12/22 RalfGesellensetter <rgx at gmx.de>:
> Am Samstag 20 Dezember 2008 11:33:35 schrieb Dominik Spies:
>> Ich lass' das hier einfach mal raus, ich entwickle zur Zeit einen
>> Editor in C# .Net 2.0, der JOSM relativ ähnlich ist und einige
>> Konzepte übernimm
>
> Hallo Dominik, das hört sich interessant an. Ich wünsche dir für deine
> Diplomarbeit viel Glück! Vielleicht können nach ihrem Abschluss ja gegenseitig
> von den freien CC-Lizenzen profitieren: Du, indem du die freie API von OSM und
> die freien Daten nutzt - wir, indem wir aus deiner Diplomarbeit unter CC-
> Lizenz und von dem zugehörigen Programm unter GPL (?) lernen. Es sollte mich
> freuen.

MIT bzw BSD Lizenz. Also Non-Copyleft. Ich mag das Copyleft Prinzip
nicht, das ist in meinen Augen nicht frei (genug).

> Rührt die gute Performanz Deiner C#-Implementation von neu entwickelten
> Algorithmen oder Datenstrukturen her, die vielleicht sogar Gegenstand Deiner
> Diplomarbeit sind? Diese könnten natürlich dann auch in JOSM einfließen.
> Wenn die Performanz sich nur daraus ergibt, dass dein Programm nativ unter
> Windows läuft (Portierung auf MONO vorbereitet?), fällt mir ein, dass sich
> auch Java nativ compilieren lässt. Gibt es entsprechende Versuche mit JOSM?

Um ehrlich zu sein habe ich speziell beim Rendern keine besonderen
Algorithmen entwickelt bzw verwendet.
Ich kenne auch JOSM nicht von der Codeseite her (war vielleicht ein Fehler).
Es gab ein paar Dinge an JOSM die mich stark stören und so habe ich
angefangen selbst was in C# zu machen. Auch weil ich das Windows
Look'n'Feel mehr mag als Java und weil ich einen Editor schreiben will
mit dem auch der Anfänger gut umgehen kann. Die kommen oft aus der
Windows Welt und haben ihre Probleme mit JOSM. Mit Java habe ich nicht
viel Erfahrung. Da war C# einfach die schnellere Wahl für mich.

Ich habe einen R*-Baum in C# implementiert um auch mit großen
Datensätzen gut umgehen zu können.
Das führt dazu, dass in niedrigen Zoomstufen, wenn wenig gezeichnet
werden muss alles sehr flüssig läuft.
In großen Zoomstufen wird es dann schon wieder langsamer. Daher habe
ich einen Filter eingebaut, bei dem (konfigurierbar) bestimmte Sachen
nicht gezeichnet werden.
Je nachdem wie der konfiguriert wird geht das auch ganz gut.
Gezeichnet wird über GDI+.
Ganz grob ist der Ablauf so:
Über Größe des Fensters, Zoomstufe und Mittelpunkt wird die BB
errechnet, und aus dem Baum alle Objekte (ways und nodes) geholt. Dann
werden die in einer Schleife gezeichnet.
Mit ein paar Tweaks das z.B. Wege nur da gezeichnet werden wo sie auch
im Bild sind.
Ich habe mit Multi-Threading experimentiert (ich habe einen Quadcore)
da könnte man ja einiges rausholen. Aber das hat nicht so gut
funktioniert. Lag irgendwie an den GDI+, das hat sich gegenseitig
blockiert. Es ist noch deutlich Optmierungspotential gegeben, dass ich
aus Zeitgründen nicht ausschöpfen kann.
Im Endeffekt habe ich ein Grundgerüst geschaffen, das noch deutlich
ausbaufähig ist.


> Neben der vorausschauenden Offenheit für eine Portierung auf andere
> Architekturen könnte für dein Projekt auch die Möglichkeit der
> Internationalisierung/Lokalisierung wichtig sein. Gerade ein Weltkartenprojekt
> wie OSM lebt von einer globalen Nutzergemeinde.

Ich hab .Net 2.0 verwendet, damit sollte es unter Mono lauffähig sein,
evtl sind ein paar Anpassung mit Pfaden oder so notwendig. Aber sollte
nichts großes sein.
Was meinst du mit andere Architektur? Die Algorithmen z.B. in Java übernehmen?
Lokalisierung ist wichtig, ja... Ich hab die Anwendung Englisch
gehalten. Von Lokalisierung hab ich keine Ahnung und dazu war auch
leider keine Zeit mehr sich da vernünftig einzuarbeiten und
umzusetzen.


> Aber vermutlich hast du das alles selbst auch schon bedacht,
> ich wünsche trotz Diplomstress besinnliche Feiertage und einen guten Rutsch!
>
> Viele Grüße
> Ralf
>
> _______________________________________________
> Talk-de mailing list
> Talk-de at openstreetmap.org
> http://lists.openstreetmap.org/listinfo/talk-de
>




Mehr Informationen über die Mailingliste Talk-de