Wolfgang Silbermayr schrieb:
> Frederik Ramm schrieb:
>   
>> Hallo,
>>
>>     
>>> Ich habe mich (obwohl ich schon einige Zeit mappe) vor Kurzem erst
>>> intensiver mit ausgefüllten Polygonen beschäftigt, insbesondere um
>>> Wälder zu mappen. Die aktuelle Version von JOSM wird jedoch immer dann
>>> extrem langsam wenn eine große Fläche eines halbtransparent ausgefüllten
>>> Polygons sichtbar ist
>>>       
>> JOSM mit "Wireframe"-Anzeige ist langsam, JOSM mit "mappaint" ist
>> langsamer und JOSM mit "mappaint" mit ausgefuellten Polygonen ist
>> extremst langsam. Dieser ganze Zeichencode ist ueberhaupt nicht
>> optimiert, da ist viel Spielraum fuer Verbesserungen (wie JOSM-NG
>> schon bewiesen hat). Wenn sich jemand mal gruendlich der Sache
>> annehmen will, das waere allen eine grosse Hilfe.
>>     
>
> Habe da mal reingesehn, und bei dem Code, der das Zeichnen der Polygone
> betrifft, scheint nicht sehr viel Raum für Verbesserungen zu sein.
> Die Funktion g.fillPolygon(polygon); in
> org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java Zeile 228
> im aktuellen SVN benötigt nach meinen Messungen über 1 Sekunde, wenn ich
> ein Polygon so anzeigen lasse, dass es die gesamte Zeichenfläche
> ausfüllt. Sind mehrere übereinander liegende Polygone im Bild, so kann
> es durchaus mal bis zu 5 Sekunden dauern, bis ein Zoomschritt
> durchgeführt wurde.
>
> fillPolygon() ist eine Java-eigene Funktion:
> http://java.sun.com/j2se/1.4.2/docs/api/java/awt/Graphics.html
>
> Wenn da jemand andere Verbesserungsvorschläge hätte als Java abzuändern
> oder eine eigene Alternative zu schreiben (die natürlich auch erstmal
> effizienter werden müsste) würde mich das sehr freuen. Ein Workaround,
> der mir so auf die Schnelle einfällt (aber sicher nicht das Gelbe vom Ei
> ist), wäre zuerst mit Wireframe zu zeichnen, und dann das Befüllen der
> Polygone einem Workerthread zu überlassen.
>
> Lg, Wolfgang.
>   
Ich bin ja bestimmt kein JAVA Spezialist - daher kann das natürlich auch 
Blödsinn sein, den ich schreibe, aber ich meine mich zu erinnern, das 
Eclipse ein eigenes Grafikframework für die GUI geschrieben hat, da die 
normalen JAVA Klassen zu langsam waren. Dieses Eclipse GUI Framework ist 
meines Wissens auf den wichtigsten Plattformen als native Implementation 
verfügbar. Evtl. wäre das ja einen Blick wert.
Eine andere Alternative wäre OpenGL für die Darstellung zu nutzen (Falls 
unter JAVA verfügbar). Das ist auch Plattfromunabhängig, und das 
Zeichnen eines ausgefüllten Polygons mit teilweiser Transparenz ist für 
OpenGL eher eine Sache von Millisekunden als von Sekunden.
Und so als Nebeneffekt wäre es auch möglich eine deutlich ansprechendere 
Darstellung der Karte erreichen, indem auch Linien als texturierte 
Polygone dargestellt würden. (Um z.B. eine Linie noch eine dunkle 
Umrandung zu geben.)

Gruß,
Thomas

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

Antwort per Email an