Letzte Änderung:  
29.03.2010 13:10:12
 
ein Counter...
Anmelden
  Dokumentation - [How-To's] - [Kartenausgestaltung] - [Beipiel: Diagramme]  
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
Bild How-To's
PixelBild ESRI Geodatabase
PixelBild Kartenausgestaltung
PixelBild Beipiel: Diagramme
PixelBild Beispiel: Naturschutz
PixelBild Beispiel: Stopschilder
PixelBild PostGreSQL / PostGIS
PixelBild Oracle Spatial
PixelBild Kartenqualität
PixelBild Rasterdatenoptimierungen
Bild Beispielskripten

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

 

Designlayer zur Darstellung von Diagrammen

Das folgende Beispiel erstellt mit Hilfe eines COM Objekts Diagramme pro Datensatz für die Quellebene "STAT". Als Bezugspunkt wird die Mitte der umschließenden Box jeder Geometrie ausgewählt. (theBasePoint:"EXTEND:CC"). Die Ausrichtung des Bildes erfolgt zentriert an diesem Punkt (theAlign:"CC")

Die Anweisungen werden pro Aufruf der Ebenendarstellung aus einer separaten Datei gelesen, d.h. dass alle Änderungen an der Datei "diag.iws.desing" sofort sichtbar werden.

In Variante 2 wird der Inhalt der Datei einmalig eingelesen und geparst. Änderungen erfordern das Neuladen der Ebene, die Abarbeitung ist dagegen etwas schneller.

Hinweis: Dieses Beispiel verwendete die Komponente ChartDirector. Dabei handelt es sich um ein Produkt der Firma ASE. Diese Komponente muss auf dem Server installiert sein. Natürlich ist auch jede andere Komponente möglich, aber mit dem ChartDirector haben wir im Bereich Diagrammdarstellungen sehr gute Erfahrungen gemacht. 

Hauptdatei, Variante 1

Go;

   srcLayer="STATE";

   ret=ExecOld("AddTheDesignLayer",

                   theLayer:srcLayer,

                   theFile:"diag.iws.design",

                   theSymbol:"302",

                   theAngleField:"0",

                   theXOffset:0,

                   theYOffset:0,

                   theBasePoint:"EXTEND:CC",

                   theSizeField:"200",

                   theScriptMakeImage:true,

                   theAlign:"CC");

   if(not(ret));

       WriteTrace(GetLastError());

       EndScript;

   EndIf;

End;

Hauptdatei, Variante 2

Go;

   srcLayer="STAT";

   ret=LoadTextFile(txt,"diag.iws.design");

   if(not(ret));WriteTrace("Laden ... schlug fehl");EndScript;EndIf;

   txt="EXPRESSION:"+txt;

   ret=ExecOld("AddTheDesignLayer",

                   theLayer:srcLayer,

                   theTextField:txt,

                   theSymbol:"302",

                   theAngleField:"0",

                   theXOffset:0,

                   theYOffset:0,

                   theBasePoint:"EXTEND:CC",

                   theSizeField:"200",

                   theScriptMakeImage:true,

                   theAlign:"CC");

   if(not(ret));

       WriteTrace(GetLastError());

       EndScript;

   EndIf;

End;

Datei "Diag.iws.design"

//StartPerfTimer();

call "Diag";

//WriteTrace(printF(">>>>> DIAG: %.2f ms",StopPerfTimer()));

//----------------------

routine "Diag";

//----------------------

   if(not(firstCall));

       firstCall=true;

       // ChartDirector erzeugen

       ret=CreateObjectOnce(cd,"ChartDirector.API");

       // Breite / Höhe festlegen

       // Ich gehe mal davon aus, dass alle gleich groß sind

       height=MathDiv($CURR_SIZE,$CURR_MAPSCALE)*1000;

       width=height;

       //the tilt angle of the pie

       angle=60;

       ret=CreateObject(data,"ARRAY");

       ret=CreateObject(labels,"ARRAY");

       //the Lables

       labels.Add("Fr.");

       labels.Add("Mr.");

       labels.Add("Jug.");

       labels.Add("Beh.");

       labels.Add("Lang.");

       pieWidth=height*0.5;

       pieHeight=height*0.5;

       pieRadius=width*0.2;

       depth=height/30;

       fntSize=depth*1;

   else;

       ret=data.Empty();

   endif; 

   c=cd.PieChart(int(width),int(height));

   ret=c.setLabelStyle("",fntSize);

   //Create a PieChart object

   //Set the center of the pie and the radius

   ret=c.setPieSize(pieWidth,pieHeight,pieRadius);

   //Set the depth and tilt angle of the 3D pie (-1 means auto depth)

   ret=c.set3D(depth,angle);

   ret=c.setTransparentColor(16777215);

   //Daten aus den Spaltenwerten festlegen

   ret=data.Add($FRAUEN);

   ret=data.Add($MAENNER);

   ret=data.Add($JUG_UNTER25J);

   ret=data.Add($SCHWERBEHINDERT);

   ret=data.Add($LANGZEIT);      

   ret=c.setData(data,labels);

   // zeichnen und als binär ausgeben

   DrawImage(c.makeChart2(0),0,0);

EndRoutine();

 

Druckersymbol Druckversion dieser Seite 

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