Letzte Änderung:  
29.03.2010 13:10:12
 
ein Counter...
Anmelden
  Dokumentation - [Symbole und Klassifikation] - [Maßstabsab. Darstellung]  
Bild Über IWAN
Bild Das Produkt
Bild ein wenig Technik
Bild Referenzen
Bild Open GIS
Bild History
Bild Aktuelle Änderungen

Bild Dokumentation
Bild Datenzugriff
Bild IwanScript
Bild Symbole und Klassifikation
PixelBild Maßstabsab. Darstellung
PixelBild Symbole
PixelBild Klassifikationen
PixelBild Kartenqualität
PixelBild Beispielsymbole
Bild How-To's
Bild Beispielskripten

Bild Kontakt/Impressum
Bild Kontakt
Bild Impressum
Bild Haftungsausschluss
Bild Copyright
Bild Weitere Links

 

Maßstabsabhängige Darstellung

Iwan bietet verschiedene Möglichkeiten Symbole in Abhängigkeit vom aktuellen Kartenmaßstab darzustellen. Dabei kann es entweder um Optimierung der Darstellungsqualität gehen, oder auch um die Performance zu optimieren.

Beispiel

Im Folgenden soll anhand eines Punktsymboles die verschiedenen Möglichkeiten demonstriert werden.

Wie eindeutig zu erkennen ist, ist die Darstellung mit einem Vektormarker ca. 2x so schnell, wie die Darstellung mit einem TrueType Marker (jeweils ein Symbollayer). Die angegebenen Zeiten beziehen sich auf die Darstellung einer ungefilterten Punktmenge aus einer Shape Datei. Dabei wurde alle ~23.000 Punkte zur Anzeige gebracht. 

TrueType - Marker mit 2 Layern

Zeichendauer: 1450 ms

Bereich: 1:0 ... 1:2000

TrueType - Marker mit 1 Layer

Zeichendauer: 1079 ms

Bereich: 1:2001 ... 1:5000

Vektormaker, 1 Element

Zeichendauer: 520 ms

Bereich: 1:5001 ...

Die Symbolpalette (ipalx)

Go;

   SetNewSymbolCount(20,false,false);

  

   /////////////////////////////////////////////////////////////7

   //1. Defintion des Standardsymboles

   // Diese bietet die detailierteste Darstellung

   /////////////////////////////////////////////////////////////7

   SetTrueTypeMarker(10,

                   "Webdings", //Name der Schriftart

                   10,         //Größe in Karteneinheiten

                   "None",     //Keine Hintergrundfarbe

                   "Red",110,  //Marker-Layer 1: Roter Kreis

                   "Yellow",120);//Marker-Layer 2: Weißes Kreis mit Diagonale

   /////////////////////////////////////////////////////////////7

   //Skalierung begrenzen. Symbol ist hier mit 10 Karteneinheiten

   //als Größe definiert

   //Nie kleiner als 10 Pixel, nie größer als 15 Pixel

   /////////////////////////////////////////////////////////////7

   SetMinMaxWidth(10,10,50);  

   /////////////////////////////////////////////////////////////7

   //Einfacherer Darstellung des Objektes

   /////////////////////////////////////////////////////////////7

   SetTrueTypeMarker(11,

                   "Wingdings 2",  //Name der Schriftart

                   20,         //Größe in Karteneinheiten

                   "None",     //Keine Hintergrundfarbe

                   "Red",156); //Marker-Layer 1: Roter Kreis mit "Loch"

   /////////////////////////////////////////////////////////////7

   //Wenn der Maßstab von 0-1000 ist, dann Symbol 10 verwenden.

   //Außerhalb diese Maßstabes Symbol Nr. 11 verwenden

   /////////////////////////////////////////////////////////////7

   SetSymbolRule(10,   //Diese Regel für Symbol Nr. 10 definieren

                   11, //Alternatives Symbol, falls diese Regel *nicht* zutrifft

                   0,  //Symbol 10 trifft zu, wenn MinScale >= 0

                   1000/*  bis MaxScale <= 1000 gegeben ist,

                           ansonsten verwende Symbol Nr. 11*/);

   /////////////////////////////////////////////////////////////7

   //Bis hier ist die Darstellung optisch gelungen, aber die Performance

   //lässt zu wünschen übrige. Die Datenmenge ist i.d.R. vom

   //Maßstab abhängig. Ein TrueType Marker ist immer etwas "langsamer"

   //als ein Vektor-Marker, also noch ein Symbol und eine Regel dazu definieren

   /////////////////////////////////////////////////////////////7

   BeginVectorMarker(12,

                   10, //Größe in Karteneinheiten

                   "Yellow", //Rahmenfarbe

                   "Red"); //Hintergrundfarbe

           VMBox(0,0,100,100);/*Rechteck in den log. Koordinate

                   0,0 bis 100%,100%  */

   EndVectorMarker();

   //Skalierung "aushebeln", immer mit 10px darstellen

   SetMinMaxWidth(12,10,10);  

   /////////////////////////////////////////////////////////////7

   //Wenn der Maßstab von 1000 - 5000 ist, dann Symbol 11 verwenden.

   //Außerhalb diese Maßstabs Symbol Nr. 12 verwende

   /////////////////////////////////////////////////////////////7

   SetSymbolRule(11,   //Diese Regel für Symbol Nr. 11 definieren

                   12, //Alternatives Symbol, falls diese Regel *nicht* zutrifft

                   1000,  //Symbol 10 trifft zu, wenn MinScale >= 0

                   5000/*  bis MaxScale <= 5000 gegeben ist,

                           ansonsten verwende Symbol Nr. 12*/);

End;

Ebenendefinition
Bei der Definition der Ebene ist lediglich darauf zu achten, dass hier Symbol 10 zugewiesen werden muss. Dieses wird durch die Symbolregeln abhängig vom Maßstab während des Zeichenvorgangs durch das entsprechend definierte Symbol ersetzt. In der Legende wird immer Symbol Nr. 10 dargestellt.
Druckersymbol Druckversion dieser Seite 

Zuletzt geändert am 27.12.07 (rn)
   Sitemap | IDU Homepage: [http://www.idu.de] cardo Homepage: [http://www.cardogis.com] GDDB Homepage: [http://www.gddb.de]