GeomarketingForum.com
September 05, 2010, 11:14:26 *
Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?

Einloggen mit Benutzername, Passwort und Sitzungslänge
News: Jetzt beim GeoMarketingforum.com registrieren ...
Denn nur wer mitmacht, ist "eigentlich" INFORMIERT !
 
   Übersicht   Hilfe Suche Kalender Login Registrieren  
Seiten: [1]
  Drucken  
Autor Thema: c#: Eine bestehende Karte suchen und updaten  (Gelesen 1497 mal)
josef.schnuerer
Newbie
*
Beiträge: 2


Profil anzeigen
« am: September 07, 2007, 01:04:14 »

Ich habe ein fertiges Layout in dem eine Karte mit 2 Tabellen enthalten ist. Auf der Karte möchte ich eine Analyse mittels "Flächen und Linien nach Klassen" durchführen. Dabei möchte ich die Klassengranzen über ein C# Programm setzen.

Beiliegend meine Testfunktion, bei der ich das Layout geöffnet habe und mir dann das LayoutElement für die Karte gesucht habe. Dann komme ich aber nicht weiter, wie ich zu einem Objekt (vermutlich MapLayer) komme auf der ich die Methode für "Flächen und Linien nach Klassen" durchführen kann.

public static void Test()
{
int i;
int index_map;
Layout my_layout;
LayoutElement element;

bool closeLayout = false;
string Layername = "F2.2 %SPÖ";
Layer Wahltabelle;

Wahltabelle = SampleControl._Plugin.MyApplication.Project.SearchLayer("Austria Gemeinden 01/98");

my_layout = SampleControl._Plugin.MyApplication.Project.SearchLayout(Layername);
if (my_layout != null)
{
   if (!my_layout.IsLocalOpen)
   {
   my_layout.Project.LoadResource(my_layout);
   closeLayout = true;
}

index_map = 0;
for (i=0;i<my_layout.ElementCount;i++)
{
   element = my_layout.Element(i);
   if (element.Type == GfK.GeoMarketing.Api.RgLayoutElementType.Map)
   {
      index_map = i;
   }
}

}


Was ist schon gelöst habe ist, dass wenn die Karte selektiert ist, dass ich dann die Klassengrenzen verändern kann. Auch den Legendentext kann ich schon anpassen. Es fehlt nur noch wie ich mir die händische selektion der Karte sparen kann.
Gespeichert
soeren
Newbie
*
Beiträge: 9


Profil anzeigen
« Antwort #1 am: September 11, 2007, 02:47:29 »

Hallo Josef,

vermutlich willst du folgendes machen (statt der letzten Schleife zur index_map-Bestimmung):

Code:
GfK.GeoMarketing.Api.Map map = null;
for (i=0;i<my_layout.ElementCount;i++)
{
   element = my_layout.Element(i);
   if (element.Type == GfK.GeoMarketing.Api.RgLayoutElementType.Map)
   {
      map = (GfK.GeoMarketing.Api.Map) element;
      break;
   }
}

if (map == null) {
  // die Karte wurde nicht gefunden
  // TODO: Fehlerbehandlung
}

GfK.GeoMarketing.Api.MapLayer mapLayer = null;
for (i=0; i<map.MapLayers.Count; i++) {
  GfK.GeoMarketing.Api.MapLayer ml = map.MapLayers[i];
  if (ml.Layer == Wahltabelle) {
    // Maplayer zum gewünschten Layer gefunden
    mapLayer = ml;
    break;
  }
}

if (mapLayer == null) {
  // MapLayer nicht gefunden
  // TODO: Fehlerbehandlung
}

GfK.GeoMarketing.Api.SimplePresentation presentation = mapLayer.Presentations.Simple;

...und jetzt kannst du auf dem presentation-Objekt alle notwendigen Einstellungen treffen. Das auf den ersten Blick komplizierte Durchhangeln durch Layoutelemente und Maplayer ist notwendig, weil auf einem Arbeitsblatt mehrere Karten und in einer Karte der gleiche Layer mehrmals vorhanden sein können. Daher muss RegioGraph wissen, auf welchem Maplayer du die Einstellungen vornehmen willst.

Hope this helps.

Sören
Gespeichert
josef.schnuerer
Newbie
*
Beiträge: 2


Profil anzeigen
« Antwort #2 am: September 17, 2007, 06:38:40 »

Besten Dank. Cheesy
Der Code hat auf Anhieb funktioniert.
45 Karten werden nun auf Knopfdruck aktualisiert.
Dies erspart einiges an händischer Arbeit.
lg
Josef
Gespeichert
Seiten: [1]
  Drucken  
 
Gehe zu:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006-2007, Simple Machines LLC Prüfe XHTML 1.0 Prüfe CSS