Mehr

Wie listet man ActiveView SelectionChanged-Ereignisdelegaten in ArcObjects .NET auf?

Wie listet man ActiveView SelectionChanged-Ereignisdelegaten in ArcObjects .NET auf?


Ich habe derzeit ein Problem in einem ArcObjects ArcMap-Add-In, bei dem meine Ereignishandler scheinbar zufällig von dem Ereignis, das ich abfangen möchte, ausgehängt werden. Ich habe einige Zeit damit verbracht, nach einer Möglichkeit zu suchen, alle derzeit für das Ereignis zugewiesenen Delegaten aufzulisten, finde jedoch keine Möglichkeit, Delegate.GetInvocationList() über die Ereignisschnittstelle aufzurufen.

Wenn mein Add-In erstellt wird, führe ich Folgendes aus, um auf das ActiveView SelectionChanged-Ereignis zu reagieren:

IActiveViewEvents_Event activeViewEvent = (IActiveViewEvents_Event)ArcMap.Document.FocusMap; activeViewEvent.SelectionChanged += new IActiveViewEvents_SelectionChangedEventHandler(this.onSelectionChanged);

Jetzt weiß ich, dass dieser Ereignishandler verloren geht, wenn sich die aktive Ansicht ändert, also habe ich auch Folgendes:

IDocumentEvents_Event documentEvent = (IDocumentEvents_Event)ArcMap.Document; documentEvent.ActiveViewChanged += new IDocumentEvents_ActiveViewChangedEventHandler(this.onActiveViewChanged);

wodurch der vorherige Code aufgerufen wird, um den SelectionChanged-Ereignishandler erneut hinzuzufügen.

In scheinbar zufälligen Abständen reagiert meine Anwendung nicht mehr auf das SelectionChanged-Ereignis. Ich halte bei allen CLR-Fehlern an, daher bin ich sicher, dass es sich nicht um eine stille Ausnahme handelt, die mein Add-In deaktiviert.

Was ich wirklich gerne hätte, ist in der Lage zu sein, die dem SelectionChanged-Ereignis zugewiesenen Delegierten zu inspizieren und zu sehen, ob meiner neu hinzugefügt werden muss, aber bisher keine Freude.

Alle Vorschläge, was schief gehen könnte oder wie man die zugewiesenen Event-Handler inspizieren kann, wären SEHR dankbar!

BEARBEITEN:

Ich habe seitdem ein Muster für den Wahnsinn herausgefunden. Mein Werkzeug wird nur innerhalb einer Bearbeitungssitzung ausgeführt, wenn Funktionen ausgewählt sind. Eine Möglichkeit, dieses Verhalten zu replizieren, besteht darin, 1) eine Bearbeitungssitzung zu starten 2) einige Features auszuwählen 3) mein Werkzeug auszuführen - ausgewählte Features von einem Layer in einen anderen kopiert 4) die Bearbeitung zu beenden (es spielt keine Rolle, ob ich meine Änderungen speichere oder nicht) 5) Jetzt wird das Ereignis "Auswahl geändert" nicht mehr behandelt

Kann mir jemand sagen, warum das Starten und anschließende Beenden der Bearbeitung die geänderten Ereignishandler meiner Auswahl trennen würde?


Danke für das Interesse an dieser Frage. Am Ende habe ich einen anderen Ansatz gewählt, der in meiner Situation tatsächlich besser funktioniert und zuverlässiger ist.

Anstatt zu verwendenIActiveViewEvents::SelectionChangedich ging mitIEditEvents::SelectionChangedda ich eigentlich nur wissen musste, ob sich die Auswahl während der Bearbeitung geändert hat. Da sich das Editor-Objekt nie ändert, geht der Event-Handler nie verloren, so dass der Handler nicht neu zugewiesen werden muss.

Ich habe eine Weile damit verbracht, das ursprüngliche Problem zu testen, und ich bin ziemlich zuversichtlich, dass es sich um ein ArcObjects-Problem handelt, da ich es nicht jedes Mal mit genau derselben Ereignisfolge replizieren konnte.

Ich würde immer noch gerne wissen, ob die Liste der Delegierten für ein ArcObjects-Ereignis abgerufen werden kann, aber im Moment ist mein ursprüngliches Problem gelöst.


Ich hatte vor kurzem das gleiche Problem mit einem andockbaren WPF-Fenster. Dies wurde durch Verwendung von benutzerdefiniertem ArcMap-Erweiterungscode aus einem Auswahlbeispiel-Add-In von Esri behoben.


Sie müssen einen Ereignishandler für das Benutzersteuerelement erstellen, das ausgelöst wird, wenn ein Ereignis innerhalb des Benutzersteuerelements ausgelöst wird. Auf diese Weise können Sie das Ereignis in der Kette nach oben blasen, damit Sie das Ereignis über das Formular bearbeiten können.

Wenn ich auf Button1 im UserControl klicke, feuere ich Button1_Click ab, was UserControl_ButtonClick im Formular auslöst:

Neuere Visual Studio-Versionen schlagen vor, dass Sie anstelle von if (this.ButtonClick!= null) this.ButtonClick(this, e) ButtonClick?.Invoke(this, e) verwenden können, das im Wesentlichen dasselbe tut, aber kürzer ist.

Das Browsable-Attribut macht das Ereignis im Designer von Visual Studio (Ereignisansicht) sichtbar, Kategorie zeigt es in der Kategorie "Aktion" an und Beschreibung bietet eine Beschreibung dafür. Sie können diese Attribute vollständig weglassen, aber es ist viel bequemer, sie dem Designer zur Verfügung zu stellen, da VS sie für Sie übernimmt.


Wie wandele ich einen Ereignishandler-Delegaten in einen mit einer anderen Signatur um?

Der Code, den ich schreibe, ist eigentlich ein WPF-Verhalten, um die ausgewählten Elemente aus einem Rastersteuerelement abzurufen (SelectedItems ist, wie wir wissen, keine bindbare Eigenschaft). Ich verwende eigentlich ein Telerik RadGridView, aber ich möchte, dass das Verhalten für alles mit einem SelectionChanged-Ereignis allgemein ist. Unterschiedliche Steuerelemente haben jedoch unterschiedliche Signaturen für die SelectionChanged-Ereignishandler (RadGridView verwendet Telerik.Windows.Controls.SelectionChangeEventArgs, während ein Standard-GridView System.Windows.Controls.SelectionChangedEventArgs verwendet). Wir können sicher sein, dass die Ereignisargumente von EventArgs abgeleitet werden (tatsächlich können wir sicher sein, dass sie von RoutedEventArgs abgeleitet werden).

Ich kann zwar einen allgemeinen Ereignishandler schreiben, der als zweiten Parameter ein RoutedEventArgs verwendet, und ich kann Reflektion verwenden, um die EventInfo für das SelectionChangedEvent abzurufen, aber ich kann den Handler nicht mit dem Ereignis verknüpfen, ohne die genaue Signatur für das Ereignis zu verwenden Handler - in diesem Fall der RadGridView-Handler.

Hier ist mein Code. Ich habe alles aufgenommen, aber das wichtige Bit ist SelectItemPropertyChanged, das DependencyObject PropertyChangedCallback, das versucht, den Ereignishandler SelectionChangedHandler mit SelectionChangedEvent zu verbinden. (Der Code in SelectionChangedHandler ist für die Frage irrelevant, aber ich habe ihn belassen, damit klar ist, was ich tue).

Ich habe alle möglichen Möglichkeiten ausprobiert, Reflektion zu verwenden, um die richtige Signatur für den Handler zu erhalten und dadurch einen Delegaten für den richtigen Typ zu erstellen, aber ich kann es einfach nicht zum Laufen bringen - AddEventHandler (und RemoveEventHandler) löst eine InvalidArgumentException aus. voller Stack-Trace wie folgt:


7 Antworten 7

Der Controller steuert den Aktivitätsfluss. Der Benutzer führt diese Aktion aus, der Controller übergibt die Ansichtsdaten an die Domäne, die alles Notwendige tut. Basierend auf den Antworten teilt der Controller dem Framework mit, welche Ansicht als nächstes angezeigt werden soll (und gibt ihm genügend Daten zu tun so).

Der Controller muss also gewissermaßen an das Domänenmodell angekoppelt werden. dh. Sie könnten eine Serviceschicht dazwischen setzen, die jedoch per strikter Definition Teil der Domäne wird.

Es ist auch an die Ansichtsdaten gekoppelt, jedoch nicht an die Ansicht selbst. dh. es heißt einfach "zeigen Sie die Kundenansicht mit diesem Kundendetail". Das Framework entscheidet dann, wo es diese Ansicht finden soll.

Dies sollte es Ihnen nun ermöglichen, das Domänenmodell von der Ansicht zu entkoppeln, indem Sie ein Ansichtsmodell mit den gleichen Daten verwenden. Einige Entwickler tun dies, andere nicht, und ich denke, es ist hauptsächlich eine Frage der persönlichen Vorlieben.

In Rails wird Ihnen dringend empfohlen, die Domänenobjekte (ActiveRecord) in die Ansicht zu verschieben und darauf zu vertrauen, dass die Ansicht diesen Zugriff nicht nutzt (z. B. sollten Sie customer.save nicht aus der Ansicht aufrufen, obwohl dies wäre vorhanden).

In der .NET-Welt neigen wir dazu, das Risiko zu reduzieren, indem wir Dinge nicht zulassen, die nicht passieren sollten, und möglicherweise aus diesem Grund scheint mir das Modell der distanzierten Ansicht beliebter zu sein.

Anmerkung: Robert C. Martin (alias Uncle Bob) erklärt dies in seiner Keynote Architecture the Lost Years viel besser und humorvoller. Ein bisschen lang, aber lehrt viele gute Konzepte.

tldr: Denken und planen Sie Ihre App nicht in Bezug auf MVC. Das MVC-Framework ist nur ein Implementierungsdetail.

Das Verwirrendste an MVC ist, dass Entwickler versuchen, alle zusammengeklebten Komponenten zu verwenden.

Versuchen Sie, in den Begriffen eines Programms zu denken, nicht in den Begriffen des Rahmens.

Ihr Programm hat einen Zweck. Es nimmt einige Daten an, macht Dinge mit Daten und gibt einige Daten zurück.

Auf diese Weise ist der Controller der Auslieferungsmechanismus Ihres Programms.

  1. Ein Benutzer sendet eine Anfrage an Ihr Programm (sagen wir, ein Produkt in den Warenkorb legen).
  2. Der Controller nimmt diese Anfrage (Produktinfo und Benutzerinfo) entgegen und ruft den notwendigen Teil Ihres Programms auf, der diese Anfrage bearbeitet $user->addToCart($product)
  3. Ihr Programm (in diesem Fall die addToCart-Funktion des Benutzerobjekts) führt die Arbeit aus, die es tun soll, und gibt eine Antwort zurück (sagen wir erfolgreich).
  4. Der Controller bereitet die Antwort mit der entsprechenden Ansicht vor: z. im Controller-Objekt $this->render($cartView('success')

Auf diese Weise werden die Controller vom Programm entkoppelt und als Liefermechanismus verwendet. Sie wissen nicht, wie Ihr Programm funktioniert, sie wissen nur, welcher Teil des Programms für die Anforderungen aufgerufen werden muss.

Wenn Sie ein anderes Framework verwenden möchten, muss Ihre App nicht geändert werden, Sie müssen nur relevante Controller schreiben, um Ihr Programm für Anfragen aufzurufen.

Oder wenn Sie eine Desktop-Version erstellen möchten, bleibt Ihre App gleich, Sie müssen nur einen Bereitstellungsmechanismus vorbereiten.

Und das Modell. Betrachten Sie es als einen Persistenzmechanismus.

Auf die OO-Art gibt es Objekte in Ihrem Programm, die die Daten enthalten.

Wenn Sie ein Produkt in den Warenkorb legen, können Sie die product::id dem user::shoppingCart hinzufügen.

Und wenn Sie die Daten persistieren möchten, können Sie den Modellteil des Frameworks, der in der Regel aus einem ORM besteht, verwenden, um die Klassen auf die Datenbanktabellen abzubilden.

Wenn Sie das von Ihnen verwendete ORM ändern möchten, bleibt Ihr Programm gleich, nur die Zuordnungsinformationen ändern sich. Oder wenn Sie alle Datenbanken vermeiden möchten, können Sie die Daten einfach in reine Textdateien schreiben, und Ihre App bleibt gleich.

Schreiben Sie also zuerst Ihr Programm. Wenn Sie mit der 'OO'-Methode programmieren, verwenden Sie einfache alte Objekte der Sprache. Denken Sie zunächst nicht an MVC.

Martin Fowler beschreibt das MVC-Paradigma sehr gut. Hier ist ein Link zu seinem Artikel dazu http://martinfowler.com/eaaDev/uiArchs.html

Beachten Sie sein Zitat über Separated Presentation "Die Idee hinter Separated Presentation besteht darin, eine klare Trennung zwischen Domänenobjekten vorzunehmen, die unsere Wahrnehmung der realen Welt modellieren, und Präsentationsobjekten, die die GUI-Elemente sind, die wir auf dem Bildschirm sehen."

Hier ist ein einfaches Beispiel dafür, wie MVC in einer typischen Java Swing-Anwendung verwendet werden kann.

Nehmen wir an, Sie haben ein Panel mit einem Button und einem TextField. Wenn der Button gedrückt wird, wird ein Ereignis ausgelöst, das zu einer Statusänderung in der Anwendung führt. Sobald die Zustandsänderung registriert ist, wird das TextField deaktiviert.

Dies wäre dann der typische Ansatz einer einfachen MVC-Anwendung.

Der Controller registriert sich selbst als Listener der Ereignisse der Ansicht. Wenn auf die Schaltfläche geklickt wird, verarbeitet die Ansicht selbst das Ereignis des Controllers nicht. Der Controller ist Swing-spezifisch, da er mit Swing-bezogenen Ereignissen umgehen muss.

Der Controller erhält diese Benachrichtigung und muss entscheiden, wer sie bearbeiten muss (The View oder das Model). Da dieses Ereignis den Status der Anwendung ändert, beschließt es, die Informationen an das Model weiterzuleiten, das für die Daten- und Programmlogik verantwortlich ist. Einige machen den Fehler, Programmlogik in den Controller zu legen, aber in OOP repräsentieren Modelle sowohl Daten als auch Verhalten. Lesen Sie Martin Fowler über seine Einstellung dazu.

Die Nachricht wird vom Modell im richtigen Kontext empfangen. Das heißt, es enthält keinerlei Verweise auf Swing oder andere GUI-spezifische Verweise. Diese Nachricht spricht das Modell und NUR das Modell an. Wenn Sie javax.swing-Anweisungen in das Modell importieren, codieren Sie das Modell nicht richtig.

Das Modell setzt dann seinen Status auf „deaktiviert“ und fährt fort, alle interessierten Parteien über diese Modelländerung zu informieren. The View, interessiert an dieser Veranstaltung, hat sich bereits als Beobachter von Modelländerungen registriert. Sobald das Modellstatusänderungsereignis von der Ansicht aufgenommen wurde, fährt sie mit der Deaktivierung ihres TextFelds fort. Es ist auch zulässig, dass die Ansicht schreibgeschützte Informationen direkt von ihrem Modell erhält, ohne den Controller durchlaufen zu müssen (normalerweise über eine bestimmte Schnittstelle, die vom Modell für solche Aktivitäten bereitgestellt wird).

Durch die Förderung einer solchen losen Kopplung zwischen Präsentations- und Geschäftslogik und Datenschichten werden Sie feststellen, dass Ihr Code viel wartungsfreundlicher ist. Wenn die Systeme wachsen, wird auch Ihr Ansatz für MVC wachsen. Hierarchical MVC ist beispielsweise eine Erweiterung, die häufig verwendet wird, um MVC-Triaden miteinander zu verbinden, um große unternehmensweite Systeme zu bilden, ohne Subsysteme miteinander zu koppeln


Generische EventArgs für generische EventHandler?

Ab .NET 2.0 gibt es einen generischen EventHandler-Delegatentyp, der verwendet werden kann, um ein Ereignis in Bezug auf den EventArgs-Typ zu definieren, den Sie verwenden möchten, ohne dass ein redundanter Delegattyp für die Verwendung in der Ereignisdeklaration erstellt werden muss.

Nun, was ist mit den EventArgs ? Ich muss oft von EventArgs abgeleitete Einzelstücke erstellen, um zusätzliche Daten zu kapseln, die ich senden möchte. Warum kann das nicht auch generisch deklariert werden? Wenn alles, was ich übergeben muss, eine Zeichenfolge oder eine ganze Zahl oder ein Point ist, warum muss ich dann eine StringEventArgs , IntEventArgs und/oder PointEventArgs Klasse erstellen?

Ich habe zwei sehr grundlegende generische EventArgs-Typen als Proof-of-Concept zusammengefasst:

Der offensichtliche Unterschied besteht darin, ob Ereignishandler in der Lage sein sollen, Ihre Argumente zu ändern. Manchmal ist es eine gute Idee, meistens nicht so gut. Die Nutzung würde einfach so aussehen:

Nun, natürlich sind diese für einfachere Situationen gedacht, aber ich habe festgestellt, dass die meisten Situationen des Event-Raising ziemlich einfach sind. Das einzig mögliche, was ich hinzufügen würde, wären zwei weitere Klassen, die von CancelEventArgs abgeleitet sind, um diese zusätzliche Funktionalität hinzuzufügen. Die Tatsache, dass der Parameter alles sein kann, einschließlich einer Klasse, macht ihn flexibel genug, um komplexe Daten zu übergeben, und die Tupel von .NET 4 kümmern sich um die verbleibenden Situationen, in denen Sie möglicherweise keinen eigenen komplexen Typ definieren möchten. Der einzige Nachteil, der mir einfällt, ist, dass Sie Ihren Parameter nicht beschreibend benennen können, er ist generisch.


Wie listet man ActiveView SelectionChanged-Ereignisdelegaten in ArcObjects .NET auf? - Geografisches Informationssystem

Ich habe Probleme mit dem Tabellenbereich Werkzeug.

Die Polygone in meinem Shapefile überlappen und aus diesem Grund berechnet ArcMap nicht die richtigen Werte.

Ich versuche, dies mit ModelBuilder zu lösen, wo dies möglich ist Tabellenbereich für jedes Polygon separat, aber am Ende möchte ich Zeilen wieder zu einer Tabelle zusammenfassen.

Ich dachte, dass die Lösung das nur Modell genannte Tool sein könnte Werte sammeln?

Kann mir jemand helfen, Zeilen zu einer Tabelle hinzuzufügen oder jede zu speichern? Tabellenbereich Ergebnis unter anderen Namen?

Ich hoffe die Frage ist verständlich. Wenn nicht, werde ich versuchen, es umzuschreiben.

Hier ist das Ergebnis, das für mich funktioniert hat. Trotzdem musste ich später R verwenden, um die dbf-Dateien zu einer einzigen langen Datei zu kombinieren.

Srtm - Höhe aus .HGT-Datei extrahieren?

Ich möchte der Höhe aus SRTM3-Datendateien eine bestimmte Long-/Lat-Position auf einer Karte zuweisen, habe aber keine Ahnung, wie ich den bestimmten Wert finden kann. Also möchte ich ein Beispiel dafür, wie ich in N50E14.hgt die Höhe bis 50䓘'58.888"N, 14䓷'11.377"E finden kann.

Ich nehme es als eine kleine Übung zum Programmieren eines Datenlesers. Schauen Sie sich die Dokumentation an:

SRTM-Daten werden auf zwei Ebenen verteilt: SRTM1 (für die USA und ihre Territorien und Besitzungen) mit Daten, die in Abständen von einer Bogensekunde in Breiten- und Längengraden abgetastet werden, und SRTM3 (für die Welt), die in drei Bogensekunden abgetastet werden.


Die Daten werden in einer "geographischen" Projektion, dh einer Rasterdarstellung mit gleichen Breiten- und Längenintervallen in keiner Projektion, aber leicht zu manipulieren und mosaikartig, in eins nach einem Grad Breiten- und Längenkacheln unterteilt.


Dateinamen beziehen sich auf den Breiten- und Längengrad der unteren linken Ecke der Kachel - z.B. N37W105 hat seine untere linke Ecke auf 37 Grad nördlicher Breite und 105 Grad westlicher Länge. Genauer gesagt beziehen sich diese Koordinaten auf den geometrischen Mittelpunkt des unteren linken Pixels, der bei SRTM3-Daten etwa 90 Meter lang ist.


Height-Dateien haben die Erweiterung .HGT und sind zwei Byte-Ganzzahlen mit Vorzeichen. Die Bytes sind in Motorola-"Big-Endian"-Reihenfolge mit dem höchstwertigen Byte zuerst, direkt lesbar von Systemen wie Sun SPARC, Silicon Graphics und Macintosh-Computern, die Power PC-Prozessoren verwenden. DEC Alpha, die meisten PCs und Macintosh-Computer, die nach 2006 gebaut wurden, verwenden die Intel-Reihenfolge ("Little-Endian"), daher kann ein Byte-Swapping erforderlich sein. Die Höhen sind in Metern bezogen auf das Geoid WGS84/EGM96. Datenlücken wird der Wert -32768 zugewiesen.


Für Ihre Position 50䓘'58.888"N 14䓷'11.377"E haben Sie bereits die richtige Kachel gefunden, N50E14.hgt. Lassen Sie uns herausfinden, an welchem ​​Pixel Sie interessiert sind. Erster Breitengrad, 50䓘'58.888"N:

Bogensekunden. Durch drei geteilt und auf die nächste ganze Zahl gerundet, ergibt sich eine Rasterzeile von 500. Dieselbe Berechnung für den Längengrad ergibt die Rasterspalte 1104.

In der Quickstart-Dokumentation fehlen Informationen darüber, wie Zeilen und Spalten in der Datei organisiert sind, aber in der vollständigen Dokumentation wird angegeben, dass


Die Daten werden in der Hauptreihenfolge der Zeilen gespeichert (alle Daten für Zeile 1, gefolgt von allen Daten für Zeile 2 usw.)


Die erste Zeile in der Datei ist sehr wahrscheinlich die nördlichste, d.h. wenn wir an Zeile 500 interessiert sind vom unteren Rand, wir müssen uns die Reihe eigentlich ansehen

von Anfang an, wenn die Datei. Unsere Rasterzelle ist Zahl

vom Anfang der Datei (d. h. 700 Zeilen überspringen und in der 701. Probe 1104) nehmen. Zwei Bytes pro Sample bedeuten, dass wir die ersten 1683606 Bytes in der Datei überspringen und dann zwei Bytes lesen müssen, um unsere Rasterzelle zu erhalten. Die Daten sind Big-Endian, was bedeutet, dass Sie die beiden Bytes z.B. Intel-Plattformen.

Ein einfaches Python-Programm zum Abrufen der richtigen Daten würde so aussehen (siehe die Dokumentation zur Verwendung des struct-Moduls):

Beachten Sie, dass ein effizienter Datenabruf etwas anspruchsvoller aussehen müsste (z. B. die Datei nicht für jede einzelne Probe öffnen).

Sie können auch ein Programm verwenden, das die .hgt-Dateien sofort lesen kann. Aber das ist langweilig.

Fehler beim Importieren von Shapefile in PostGIS mit der Importer-GUI

Ich versuche, ein Shapefile mit dem grafischen Importer in eine PostGIS-Datenbank zu importieren. Ich habe gerade POSTGRESQL und PostGIS installiert. Die GUI sieht so aus:

Nachdem ich getestet hatte, dass meine Datenbank funktionierte, wählte ich das Shapefile aus, das ich hochladen wollte, und erhielt dann eine Nachricht, dass der Import fehlgeschlagen war. Ich habe versucht, ein paar Parameter zu optimieren, aber ich bin mir nicht sicher, was ich tue.

Gibt es gute Tutorials oder Anleitungen dazu? Ich verwende Windows 7 64bit.

Ich füge nur ein wenig mehr meiner Fehlermeldung hinzu.


Shapefile-Import fehlgeschlagen.Verbindung: host=localhost port=5432 user=postgres password='******' Ziel: public.Area Quelldatei: D:filesArea Shapefile-Typ: Polygon Postgis-Typ: MULTIPOLYGON[2] Fehlgeschlagener SQL-Start: "SET CLIENT_ENCODING TO UTF8 SET STANDARD_CONFORMING_STRINGS TO ON BEGIN CREATE TABLE "public"."Area" (gid serial PRIMARY KEY, "fid_1" int4, "area" numerisch, "dtm" float8, "dsm" float8, "hgt" float8, "nat_area" numerisch, "nat_peri" numerisch, "nat_vol" num" Fehler in pgui_exec(): FEHLER: Typ "geography" existiert nicht ZEILE 14: "the_geom" geography(MULTIPOLYGON,4326)) ^


Shapefile-Import fehlgeschlagen.


Ich habe versucht, den Vorschlag von @ MerseyViking auszuführen und dann erneut zu importieren. In der Geometriespalte: habe ich MULTIPOLYGON gewählt und dann versucht, das projizierte Shapefile zu importieren. Folgende Fehler traten auf:

Dann habe ich versucht, in den Optionen das Kontrollkästchen In GEOGRAPHY-Spalte laden zu aktivieren, und habe die folgende Fehlermeldung erhalten:

Beide Fehlermeldungen sind identisch und ich verstehe sie nicht ganz.

Die Meldung, die Sie erhalten, ist, dass "type Geography nicht existiert". Dies bedeutet entweder, dass Sie Postgis nicht richtig installiert haben oder eine ältere Version verwenden? Geografie-Datentyp wurde in Version 1.5 eingeführt

Arcpy - Auswählen von Features nach Attribut, wenn in der Python-Liste?

Ich versuche, eine Auswahl nach Attribut in Python abzuschließen, basiert jedoch auf der Abfrage, ob ein Attribut in einer Liste vorhanden ist.

Eine solche Abfrage sollte im einfachsten etwa so aussehen:

aber dieser Ansatz gibt einen ungültigen Ausdrucksfehler zurück.

In der Vergangenheit musste ich für diese Art von Abfrage kompliziertere sytax verwenden, wie zum Beispiel:

aber eine Adaption dieses Snippets scheint bei mir auch nicht zu funktionieren, d.h.:

Ihre ursprüngliche Abfrage könnte für eine Liste von Ganzzahlen geändert worden sein:

Wenn also oid_list = [7, 9, 4, 8] ist, dann ist das Ergebnis:

Beachten Sie, dass dieser "Trick" funktioniert, wenn oid_list immer zwei oder mehr Elemente enthält, da andere gültige Tupel wie () oder (7,) zu einem SQL-Syntaxfehler führen.

Ein allgemeinerer Ausdruck, der auch null oder ein oid_list-Element behandeln würde, wäre:

Point - Finden Sie den nächsten Linienscheitelpunkt aus der Linienfolge mit PostGIS

Wie finde ich den nächsten Linienscheitelpunkt aus einer Linienfolge? ST_ClosestPoint gibt einen Punkt zurück, der nicht aus der Linienfolge stammt.

Arcgis desktop - Zeigen Sie zwei Standorte in der Karte näher beieinander an, als sie tatsächlich ArcMap verwenden?

Ich arbeite an ArcMap 10.2.2.

Ich muss zwei Karten für drei Gemeinden drucken, eine Stadt (Florenz, Italien) und zwei kleinere Städte (Signa und Impruneta) in der Nähe. Eine Karte mit der Stadt und die andere mit den beiden Städten (es lohnt sich nicht, für jede dieser beiden Städte eine Karte zu haben).

Ich möchte, dass die Karten den gleichen Maßstab haben und auf das Papier passen, und sie müssen ein Grenzpolygon, eine Grundkarte (nur innerhalb der Grenzen der Gemeinden angezeigt, der Rest des Papiers leer bleiben) und Punktmerkmale enthalten, die meine Daten darstellen. Der Weg ist zu auf Ebene zoomen in der Kartenansicht und stellen Sie dann das Layout so ein, wie ich es möchte, indem Sie die Karte an die Papierränder anpassen. Ich habe auch den Datenrahmen auf die Rahmenform zugeschnitten, damit die Grundkarte nur innerhalb der Rahmen angezeigt wird.

Das Problem ist, dass sich die beiden Städte an unterschiedlichen Positionen in der Stadt befinden, was dazu führt, dass die Stadt auf der zweiten Karte (Zwei-Städte-Karte) eine große Leerstelle hinterlässt. Da ich außerdem möchte, dass der Maßstab der beiden Karten gleich ist, fallen die beiden Städte teilweise außerhalb des Papierumfangs. Daher habe ich beschlossen, die Punkte und die Grenze einer Stadt nahe an die andere zu verschieben und eine gestrichelte Linie zwischen ihnen zu ziehen, um deutlich zu machen, dass dies nicht ihre relative Position ist (ich habe auch eine kleinere Karte eingefügt, um ihre tatsächlichen Positionen anzuzeigen).

Ich weiß, dass dies bedeutet, die Daten der Stadt, in die ich umgezogen bin, zu ändern (die Koordinaten der Punkte usw. zu ändern), und dies ist möglicherweise nicht der beste Weg (ich hätte gerne Ratschläge dazu), aber ich habe das Ergebnis erhalten, das ich gesucht habe . Ausser für. die Grundkarte!

Durch das Beschneiden des Datenrahmens wird kein neues beschnittenes Feature erstellt, sondern nur das ausgeblendet, was außerhalb des Beschneidungsbereichs liegt. Während ich also Punkte und Rahmen verschieben konnte, ist die innerhalb des Rahmens angezeigte Grundkarte einfach der falsche Bereich. Und das ist natürlich, da ich vermute, dass es keine Möglichkeit gibt, Teile der Grundkarte zu verschieben, es sei denn, es gibt eine Möglichkeit, das gewünschte Teil der Basiskarte als Grafik oder Raster zu exportieren (?!).

Ich hoffe, ich habe es verständlich genug erklärt, aber die drei Bilder unten könnten helfen, eine bessere Vorstellung zu haben: Erstes Bild zeigt Karte mit Florenz, zweites Bild zeigt Karte mit den beiden kleineren Städten (die Grenze von Signa umschließt die Grundkarte eines falschen Gebiets) und Die dritte Karte zeigt die relativen Positionen der drei Gemeinden in der Realität.


Wie listet man ActiveView SelectionChanged-Ereignisdelegaten in ArcObjects .NET auf? - Geografisches Informationssystem

Ein Map-Objekt ist ein Container für Kartendaten. Ein Map-Objekt enthält Layer mit Feature- und Grafikdaten.

Folgendes gilt für das ArcMap-Anwendungsmodell. Entwickler, die ihre eigene Anwendung erstellen, können einige Dinge anders feststellen.

Jedes Kartendokument enthält mindestens ein Kartenobjekt. Es kann jeweils nur eine Karte den Fokus haben und diese Karte wird als Fokus-Map bezeichnet. Eine FocusMap-Eigenschaft wird bequem auf der IMxDocument-Schnittstelle platziert. IMxDocument verfügt auch über eine Maps-Eigenschaft, die einen Verweis ( IMaps ) auf die gesamte Maps-Sammlung zurückgibt. Mit IMaps können Sie Karten erstellen oder löschen oder einen Verweis auf eine vorhandene Karte abrufen.

Alle Layer in einer Karte haben denselben Raumbezug. Der Raumbezug der Karte wird automatisch auf den Raumbezug des ersten geladenen Layers gesetzt. Neue Layer, die in eine Karte geladen werden, werden auf den Raumbezug der Karte projiziert, wenn sich ihr Raumbezug unterscheidet.

Maps sind in MapFrames enthalten - das PageLayout-Objekt hat einen MapFrame und ein MapFrame hat eine Map. Jede Karte hat wiederum eine Sammlung von Ebenen und MapSurrounds. Jedem MapSurround ist auch ein MapSurroundFrame zugeordnet. Es gibt verschiedene Arten von Layern, einschließlich FeatureLayers, FDOGraphicsLayers und GroupLayers. MapSurrounds umfassen Legends, NorthArrows und ScaleBars.

Jede Karte hat eine Basisgrafikebene, in der alle Grafiken einschließlich Beschriftungen standardmäßig gezeichnet werden. Benutzer können zusätzliche Grafikebenen erstellen, die als Gruppen oder Annotation Target Layers bezeichnet werden und alle von CompositeGraphicsLayer verwaltet werden.

Produktverfügbarkeit

Unterstützte Plattformen

Siehe auch: com.esri.arcgis.carto.IMxDocument , Serialisiertes Formular

Konstrukteur-Zusammenfassung
Karte ()
Erstellt eine Karte mit ArcGIS Engine.
Karte (Objektobjekt)
Veraltet. Ab ArcGIS 9.2 durch normale Java-Casts ersetzt.
Map theMap = (Map) obj
Zusammenfassung der Methode
Leere aktivieren (int hWnd)
Gibt dieser Ansicht die Kontrolle über das angegebene Fenster.
Leere addBookmark (ISpatialBookmark-Lesezeichen)
Fügt der Sammlung ein Lesezeichen hinzu.
Leere addElement (IElement-Element, int zorder)
Fügen Sie der Ebene ein neues Grafikelement hinzu.
Leere addElements (IElementCollection-Elemente, int zorder)
Fügen Sie der Ebene neue Grafikelemente hinzu.
Leere addIActiveViewEventsListener (IActiveViewEvents theListener)
addIActiveViewEventsListener.
Leere addIDynamicMapEventsListener (IDynamicMapEvents theListener)
addIDynamicMapEventsListener.
Leere addIMapEventsListener (IMapEvents theListener)
addIMapEventsListener.
Leere addLayer (ILayer-Ebene)
Fügt der Karte einen Layer hinzu.
Leere addLayers (IEnumLayer-Ebenen, boolesches autoArrange)
Fügt der Karte mehrere Ebenen hinzu und ordnet sie, falls angegeben, gut an.
Leere addMapSurround (IMapSurround mapSurround)
Fügt der Karte eine Kartenumgebung hinzu.
Leere addStandaloneTable (IStandaloneTable-Tabelle)
Fügt der Sammlung eine eigenständige Tabelle hinzu.
Leere addTable (ITable-Tabelle)
Fügt der Auflistung eine Tabelle hinzu.
Leere animationRefresh (int-Phase, Objektdaten, IEnvelope-Hüllkurve)
Verwenden Sie diese Option, um schnell eine Phase neu zu zeichnen, die über einen eigenen Cache, d. h. eine Tracking-Ebene, verfügt.
Leere animationRefreshShape (int-Phase, Objektdaten, IGeometry-Geometrie, doppelte symbolSizePoints)
Verwenden Sie diese Option, um schnell eine Phase neu zu zeichnen, die über einen eigenen Cache, d. h. eine Tracking-Ebene, verfügt.
Leere boundsUpdated (ITransformEventsBoundsUpdatedEvent theEvent)
Benachrichtigt Clients, wenn die Grenzen aktualisiert werden.
Leere bringForward (IEnumElement-Elemente)
Verschieben Sie die angegebenen Elemente einen Schritt näher an die Spitze des Elementstapels.
Leere bringToFront (IEnumElement-Elemente)
Lassen Sie die angegebenen Elemente vor allen anderen Elementen zeichnen.
Leere buildCache()
Erstellen Sie den räumlichen Cache.
Leere klar ()
Leert den Inhalt der Ansicht.
Leere clearLayer ()
Entfernt alle Layer aus der Karte.
Leere clearMapSurrounds ()
Entfernt alle Kartenumgebungen von der Karte.
Leere clearMasking (ILayer-Ebene)
Maskierungsebenen auf einer Ebene löschen.
Leere Auswahl löschen ()
Löscht die Kartenauswahl.
boolesch completeRedrawNeeded ()
Prüfen Sie, ob eine vollständige Neuzeichnung erforderlich ist.
doppelt computeDistance (IPunkt p1, IPunkt p2)
Berechnet die Entfernung zwischen zwei Punkten auf der Karte und gibt das Ergebnis zurück.
ITimeExtent computeFullTimeExtent()
Gibt die vollständige Zeitausdehnung der zeitaktivierten Layer in der Karte zurück.
Leere InhaltGeändert ()
Wird von Clients aufgerufen, wenn Ansichtsobjekte geändert werden.
IMapSurround createMapSurround (IUID clsid, IMapSurround optionalStyle)
Erstellen und initialisieren Sie eine Kartenumgebung.
Leere deaktivieren ()
Eine andere Ansicht übernimmt das zugehörige Fenster.
Leere delayDrawing (boolesche Verzögerung)
Unterbricht das Zeichnen.
Leere delayEvents (boolesche Verzögerung)
Wird verwendet, um Vorgänge zusammenzufassen, um Benachrichtigungen zu minimieren.
Leere deleteAllElements()
Löschen Sie alle Elemente.
Leere deleteElement (IElement-Element)
Löschen Sie das angegebene Element.
Leere deleteLayer (ILayer-Ebene)
Löscht einen Layer aus der Karte.
Leere deleteMapSurround (IMapSurround mapSurround)
Löscht einen Map-Surround aus der Map.
Leere deviceFrameUpdated (ITransformEventsDeviceFrameUpdatedEvent theEvent)
Benachrichtigt Clients, wenn der Geräterahmen aktualisiert wird.
Leere displayFinished (IDisplayEventsDisplayFinishedEvent theEvent)
Benachrichtigt Kunden, wenn das Zeichnen abgeschlossen ist.
Leere displayInvalidated (IDisplayEventsDisplayInvalidatedEvent theEvent)
Benachrichtigt Clients, wenn die Anzeige ungültig gemacht wird.
Leere displayScrolled (IDisplayEventsDisplayScrolledEvent theEvent)
Benachrichtigt Clients, wenn die Anzeige gescrollt wird.
Leere displayStarted (IDisplayEventsDisplayStartedEvent theEvent)
Benachrichtigt Clients, wenn das Zeichnen beginnt.
Leere draw (int hDC, ITrackCancel trackCancel)
Zeichnet die Ansicht in den angegebenen Gerätekontext.
boolesch elementSelected (IElement-Element)
Zeigt an, ob das Element ausgewählt ist.
Leere leerCache()
Leeren Sie den Kartencache.
Leere enumConnectionPoints (IEnumConnectionPoints[] ppEnum)
enumConnectionPoints
boolesch gleich (Objekt o)
Vergleichen Sie dieses Objekt mit einem anderen
Leere findConnectionPoint (GUID riid, IConnectionPoint[] ppCP)
findConnectionPoint
IFrameElement findFrame (Objekt frameObject)
Suchen Sie den Frame, der das angegebene Objekt enthält.
IEnumRelationshipClass findRelationshipClasses (IObjectClass objectClass, int-Rolle)
Sucht alle Beziehungsklassen in der Auflistung, die auf die angegebene Objektklasse in der angegebenen Rolle verweisen.
Leere fireAfterDraw (int hDC)
Fire AfterDraw(esriViewForeground)-Ereignis.
Leere fireChangeFeatureClass (IFeatureClass oldClass, IFeatureClass newClass)
Benachrichtigt Listener, dass sich die Klasse einer Schicht geändert hat.
Leere fireChangeTable (ITable oldTable, ITable newTable)
Benachrichtigt Listener, dass sich die Klasse einer Schicht geändert hat.
Leere fireChangeVersion (IVersion alteVersion, IVersion neueVersion)
Benachrichtigt Listener, dass sich eine Version in der Map geändert hat.
Leere fireLayerAdded (ILayer-Ebene)
Benachrichtigt Listener, dass der Karte ein Layer hinzugefügt wurde.
Leere fireLayerDeleted (ILayer-Ebene)
Benachrichtigt Listener, dass ein Layer aus der Karte entfernt wurde.
Leere fireLayerReordered (ILayer-Ebene, int toIndex)
Benachrichtigt Listener, dass ein Layer in der Karte neu angeordnet wurde.
Leere forceGraphicSelectionDraw ()
Rufen Sie vor der Verwendung von Output auf, damit die Grafikauswahl gezeichnet wird.
ILayer getActiveGraphicsLayer ()
Die aktive Grafikebene.
IActiveView getActiveView()
Das Map-Objekt.
IAnnotateMap getAnnotationEngine ()
Die Annotation (Label) Engine, die die Karte verwendet.
IUmschlag getAutoExtentBounds()
Die vom Rahmen angezeigten Grenzen der Karte.
IFeatureLayer getAutoExtentLayer()
Automatische Erweiterungsfunktionen.
IMap getAutoExtentMap()
Karte mit automatischer Ausdehnung.
doppelt getAutoExtentMargin()
Rand automatisch erweitern.
int getAutoExtentMarginUnits()
Randeinheiten automatisch erweitern.
doppelt getAutoExtentScale()
Der Maßstab, in dem die Karte angezeigt werden soll.
int getAutoExtentType()
Die Art und Weise, in der die Kartenausdehnung des Rahmens angegeben wird.
IBarrierCollection getBarriers (IEnvelope pExtent)
Die Liste der Barrieren und deren Gewicht für die Kennzeichnung.
IBarrierCollection getBarriers2 (IEnvelope pExtent, ITrackCancel pTrackCancel)
Die Liste der Barrieren und deren Gewicht für die Kennzeichnung.
IBarrierCollection getBarriers3 (IEnvelope pExtent, Doppelskala, ITrackCancel pTrackCancel)
Die Liste der Barrieren und deren Gewicht für die Kennzeichnung.
IGraphicsLayer getBasicGraphicsLayer ()
Die grundlegende Grafikebene.
IEnumSpatialBookmark getBookmarks ()
Die Lesezeichen.
IUmschlag getCacheExtent()
Aktuelle Cache-Ausdehnung.
Leere getClassID (GUID[] pClassID)
getClassID
IAuftrag getClipBorder()
Ein optionaler Rahmen, der um ClipGeometry gezeichnet wird.
Objekt getClipData()
Legt erweiterte Cliptypdaten fest oder gibt diese zurück, d. h. andere Map, wenn der Typ esriMapClipMapExtent ist.
Ich setze getClipFilter()
Legt den Satz von Ebenen fest, der vom Clipping ausgeschlossen wird, oder gibt ihn zurück.
IGeometrie getClipGeometry ()
Eine Form, auf die Layer in der Karte zugeschnitten werden.
int getClipType()
Methode zum Ausschneiden von Ebenen in der Karte.
statischer String getClsid()
getClsid.
Leere getContextMenu (double x, double y, IUID[] clsidMenu)
Wird aufgerufen, wenn ein Kontextmenü an der angegebenen xy-Position angezeigt werden soll.
Zeichenfolge getCopyrightText()
Mit der Karte verbundene Copyright-Informationen.
ITimeExtent getCurrentTimeExtent()
Die aktuelle Zeitausdehnung der Karte.
doppelt getDefaultTimeInterval()
Das Zeitintervall, das vom Zeitschieberegler verwendet wird, um die Karte zu animieren.
int getDefaultTimeIntervalUnits()
Die zum Animieren der Karte zu verwendenden Zeitintervalleinheiten.
doppelt getDefaultTimeWindow()
Das Zeitfenster, das verwendet wird, um die Daten in der Karte anzuzeigen.
Zeichenfolge getDescription ()
Beschreibung der Karte.
Zeichenfolge getDisplayDateFormat()
Das Format des Datums, das auf dem Zeitschieberegler angezeigt wird.
int getDisplaySpeed ​​()
Die Geschwindigkeit des Schiebereglers auf einer Skala von 1 bis 10, wobei 10 die schnellste ist.
Zeichenfolge getDisplayTimeFormat()
Das Format der Zeit, die auf dem Zeitschieberegler angezeigt wird.
int getDistanceUnits ()
Die Entfernungseinheiten für die Karte.
ILayer getDomainDefiningLayer ()
Gibt den Layer zurück, der die Kartendomäne definiert, 0, wenn Domäne die Vereinigung aller Layer ist.
IElement getDominantElement()
Dominantes Element.
int getDynamicDrawRate ()
Die dynamische Zeichenrate in Millisekunden.
Objekt getElementOrder (IEnumElement-Elemente)
Privates Auftragsobjekt.
IAuswahl getElementSelection()
Objekt, das für die Elementauswahl verwendet werden soll.
int getElementSelectionCount ()
Die Anzahl der ausgewählten Elemente.
tagRECT getExportFrame()
Das zu exportierende Geräterechteck.
IUmschlag getExtent()
Das sichtbare Ausdehnungsrechteck.
IExtentStack getExtentStack()
Der Ausdehnungsstapel.
IAuswahl getFeatureSelection ()
Die Feature-Auswahl für die Karte.
IMap getFocusMap ()
Die Karte, auf die Tools und Steuerelemente wirken.
IUmschlag getFullExtent()
Das Rechteck mit voller Ausdehnung.
ITimeExtent getFullTimeExtent()
Gibt die vollständige Zeitausdehnung der zeitaktivierten Layer in der Karte zurück.
IGeoTransformationOperationSet getGeographicTransformations ()
Geographische Transformationen im Handumdrehen.
IGGrafikContainer getGraphicsContainer ()
Der aktive Grafikcontainer.
ILayer getLayer (int-Index)
Die Ebene am angegebenen Index.
int getLayerCount()
Anzahl der Ebenen in der Karte.
IEnumLayer getLayers (IUID-UID, boolesche Rekursion)
Die Layer in der Karte des in der uid angegebenen Typs.
Zeichenfolge getLevelMasking (ILayer maskedLayer, ILayer maskingLayer)
Die Symbolebenen, für die die Maskierung gilt.
Leere getLockedPan (boolesches[] Flag)
Prüfen Sie, ob die Karte geschwenkt werden kann.
Leere getLockedZoom (boolesches[] Flag)
Prüfen Sie, ob die Karte gezoomt werden kann.
IMap getMap()
Das Map-Objekt.
doppelt getMapScale()
Der Maßstab der Karte als repräsentativer Bruchteil.
IMapSurround getMapSurround (int-Index)
Die Kartenumrandung am angegebenen Index.
int getMapSurroundCount()
Anzahl der mit der Karte verknüpften Kartenumgebungen.
int getMapUnits()
Die Einheiten für die Karte.
Ich setze getMaskedLayers ()
Der Satz von Ebenen, die maskiert werden.
Ich setze getMaskingLayers (ILayer-Ebene)
Die Masken für eine Ebene.
doppelt getMaxScale ()
Der maximale Maßstab für den zu erstellenden Cache.
Zeichenfolge getName()
Name der Karte.
IHintergrund getNonFrameBackground ()
Geben Sie den Hintergrund an, der verwendet werden soll, wenn andere Ziele als ein Rahmen gezeichnet werden.
int getOutputBandSize()
Größe, die jedem Band beim Banding-Ausgang zugewiesen wird.
Ioverposter-Eigenschaften getOverposterProperties ()
Das Overposter, das die Karte zur Beschriftung verwendet.
IPageLayout getPageLayout()
Das PageLayout-Objekt.
Leere getPageSize (double[] widthInches, double[] heightInches)
Ruft die Seitengröße für die Karte ab.
int getPlayOption()
Die Abspieloption (Stop, Reverse, Repeat), die vom Schieberegler verwendet wird, nachdem die Zeitvisualisierung einmal abgespielt wurde.
doppelt getReferenceScale ()
Der Bezugsmaßstab der Karte als repräsentativer Anteil.
IEnumRelationshipClass getRelationshipClasses ()
Die Gedächtnisbeziehungsklassen.
kurz getScreenCacheID (int-Phase, Objektdaten)
Die Bildschirmcache-ID, die zum Zeichnen der angegebenen Phase verwendet wird.
IScreenDisplay getScreenDisplay ()
Die von der Ansicht verwendete Bildschirmanzeige.
IEnumElement getSelectedElements()
Die ausgewählten Elemente.
IAuswahl getSelection()
Die Auswahl.
IUmschlag getSelectionBounds (IDisplay-Anzeige)
Die Grenzen der Auswahl.
int getSelectionCount ()
Anzahl der ausgewählten Funktionen.
Zeichenfolge getServiceLayerCreditsText (String-Trennzeichen)
Rufen Sie den Service-Layer-Credits-Text ab.
Leere getSizeMax (_ULARGE_INTEGER[] pcbSize)
getSizeMax
ISpatialReferenz getSpatialReference ()
Der Raumbezug der Karte.
IStandaloneTable getStandaloneTable (int-Index)
Die eigenständige Tabelle am angegebenen Index.
int getStandaloneTableCount ()
Anzahl der eigenständigen Tabellen.
ITable getTable (int-Index)
Die Tabelle am angegebenen Index.
int getTableCount()
Anzahl Tische.
ILayer getTimeExtentDefinitionLayer()
Der zeitaktivierte Layer, der die zeitliche Ausdehnung der Karte definiert.
int getTimeExtentOption()
Gibt an, wie die zeitliche Ausdehnung der Karte definiert ist.
ITimeReferenz getTimeReference()
Die mit der Karte verknüpfte Zeitreferenz (Zeitzoneninformationen, Sommerzeit usw.).
int getTimeRelation()
Zeitrelation, die mit dem Zeitfenster für die Karte verwendet wird.
ITimeValue getTimeValue ()
Der Zeitraum, für den die Daten in der Karte angezeigt werden.
Zeichenfolge getTipText (doppeltes x, doppeltes y)
Der Tipptext, der an der angegebenen Position angezeigt werden soll.
int getTopFilterIndex()
Phasenindex, der TopFilterPhase ergänzt.
int getTopFilterPhase()
Die höchste Phase in der Zeichnungsreihenfolge, die einen Anzeigefilter verwendet.
int Hash-Code ()
der Hashcode für dieses Objekt
boolesch hasTimeData()
Gibt an, ob die Karte über einen zeitaktivierten Layer verfügt.
IMap hitTestMap (IPoint-Standort)
Gibt alle Karten zurück, die in der Ansicht an der angegebenen Position vorhanden sind.
Leere insertLayer (ILayer pLayer, boolesches autoArrange, int-Position)
Fügt eine Ebene an der angegebenen Position ein.
Leere insertLayerInGroup (IGroupLayer pGroup, ILayer pLayer, boolesches autoArrange, int-Position)
Fügt einen Layer an einem bestimmten Index des Gruppenlayers der Karte ein.
Leere insertLayers (IEnumLayer pLayers, boolesches autoArrange, int-Position)
Fügt Ebenen an der angegebenen Position ein.
Leere insertLayersInGroup (IGroupLayer pGroup, IEnumLayer pLayer, boolesches autoArrange, int-Position)
Fügt Layer an einem bestimmten Index des Gruppen-Layers der Karte ein.
boolesch ist aktiv ()
Zeigt an, ob die Ansicht aktiv ist oder nicht.
boolesch isAutoCacheActive()
Zeigt an, ob der Autocache aktiv ist.
boolesch isCacheable ()
Gibt an, ob ein Kartencache erstellt werden kann.
boolesch isClipGridAndGraticules ()
Gitter und Gitter auf Datenausmaß zuschneiden
boolesch isConserveMemory ()
Gibt an, ob beim Zuweisen von Ressourcen konservativ vorgegangen werden soll.
boolesch isDelayBackgroundDraw ()
Gibt an, ob der Hintergrund sofort gezeichnet werden soll.
Leere ist dreckig ()
ist dreckig
boolesch isDisplayEachTimestamp ()
Gibt an, ob beim Abspielen der Zeitvisualisierung Daten für jeden Zeitstempel gezeichnet werden.
boolesch zeichnet ()
Gibt an, ob die Ansicht gerade gezeichnet wird oder nicht.
boolesch isDynamicMapEnabled ()
Zeigt an, ob die dynamische Karte ein- oder ausgeschaltet ist.
boolesch isDynamicTimeRefresh ()
Gibt an, ob die Daten in der Karte aktualisiert werden, wenn der Zeitschieberegler dynamisch verschoben wird.
boolesch isExpanded ()
Zeigt an, ob die Karte erweitert ist.
boolesch isExternalDrawing (int-Phase)
Gibt an, ob externe Clients als Reaktion auf die angegebene Phase zeichnen.
boolesch isFramed ()
Gibt an, ob die Karte in einem Rahmen und nicht im gesamten Fenster gezeichnet wird.
boolesch isHasLiveData()
Gibt an, ob die Karte über einen zeitaktivierten Layer verfügt, der häufig mit neuen Daten aktualisiert wird.
boolesch isLayerVisible (ILayer-Ebene)
Überprüfen Sie, ob die Ebene sichtbar ist.
Leere isLayerVisibleEx (ILayer-Ebene, boolean[] isLayerVisible, boolean[] isParentLayerVisible)
Überprüfen Sie, ob die Ebene sichtbar ist.
boolesch isMapActivated ()
Zeigt an, ob die Fokuskarte aktiviert ist.
boolesch isProgressiveDrawing ()
Gibt an, ob die Ansicht das Fenster während des Zeichnens nach und nach aktualisieren soll.
boolesch isScaleLimit ()
Zeigt an, ob es eine Skalierungsgrenze gibt.
boolesch isShowRulers ()
Zeigt an, ob Lineale sichtbar sind.
boolesch isShowScrollBars ()
Zeigt an, ob Bildlaufleisten sichtbar sind.
boolesch isShowSelection ()
Zeigt an, ob die Auswahl sichtbar ist.
boolesch isShowTime ()
Zeigt an, ob die Zeit auf der Karte aktiviert ist.
boolesch isShowTimeOnDisplay ()
Zeigt an, ob die Zeit auf der Karte angezeigt wird.
boolesch isSimulateLayerEffectsInLegends ()
Gibt an, ob Transparenz und andere Effekte in Legenden simuliert werden sollen.
boolesch isSpatialReferenceLocked ()
Gibt an, ob eine Änderung des Raumbezugs verhindert wird.
boolesch isUseMasking ()
Gibt an, ob Maskierung verwendet werden soll.
boolesch isUsesFilter()
Gibt an, ob das aktuelle Objekt mithilfe eines Filters gezeichnet wird.
boolesch isUsesPageCoordinates ()
Gibt an, ob die Ansicht Seitenkoordinaten verwendet.
boolesch isUseSubPixelRendering ()
Gibt an, ob die dynamische Karte in Subpixeln oder Vollpixeln gerendert wird (ausrichten am nächsten diskreten Pixel).
boolesch isUseSymbolLevels()
Gibt an, ob die Karte mit Symbolebenen gezeichnet wird.
boolesch isVerboseEvents()
Gibt an, ob die Anzahl der ausgelösten Ereignisse erweitert oder begrenzt werden soll.
Leere laden (IStream-pstm)
Belastung
IEnumElement locateElements (IPoint-Punkt, doppelte Toleranz)
Gibt die Elemente an der angegebenen Koordinate zurück.
IEnumElement locateElementsByEnvelope (IEnvelope-Hüllkurve)
Gibt die Elemente innerhalb des angegebenen Umschlags zurück.
Leere moveBookmarkTo (ISpatialBookmark-Lesezeichen, int-Index)
Verschiebt ein Lesezeichen in der Sammlung.
Leere moveElementFromGroup (IGroupElement-Gruppe, IElement-Element, int zorder)
Verschieben Sie das Element aus der Gruppe in den Container.
Leere moveElementToGroup (IElement-Element, IGroupElement-Gruppe)
Verschieben Sie das Element aus dem Container in die Gruppe.
Leere moveLayer (ILayer-Ebene, int toIndex)
Verschiebt eine Ebene an eine andere Position.
Leere moveLayerEx (IGroupLayer pFromGroup, IGroupLayer pToGroup, ILayer pLayer, int newPosition)
Verschiebt den Layer mit in der Karte.
IElement nächste ()
Gibt die nächste Grafik im Container zurück.
Leere onMessage (int msg, int wParam, int lParam)
Rufen Sie aus der Nachrichtenschleife Ihrer Anwendung auf, um die automatische Größenänderung und Tastaturkürzel zu aktivieren.
Leere Ausgabe (int hDC, int dpi, tagRECT pixelBounds, IEnvelope visibleBounds, ITrackCancel trackCancel)
Rendert die Ansicht an den angegebenen DC.
Leere partielle Aktualisierung (int-Phase, Objektdaten, IEnvelope-Hüllkurve)
Zeichnet die angegebene Ansichtsphase.
Leere teilweiseRefreshShape (int-Phase, Objektdaten, IGeometry-Geometrie, doppelte symbolSizePoints)
Aktualisiert die angegebene Form in der angegebenen Ansichtsphase.
Leere printerChanged (IPrinter-Drucker)
Wird von der Anwendung aufgerufen, wenn sich der Drucker ändert.
Leere putElementOrder (Objektreihenfolge)
Privates Auftragsobjekt.
Leere readExternal (ObjectInput in)
Leere recalcFullExtent ()
Erzwingt die Neuberechnung des gesamten Umfangs.
Leere Aktualisierung ()
Bewirkt, dass die gesamte Ansicht gezeichnet wird.
Leere refreshAutoCache()
Aktualisieren Sie den Autocache.
Leere RefreshCaches()
Ordnen Sie die Anzeige-Caches neu zu.
Leere refreshItem (Objektdaten)
Verwenden Sie diese Option, um ein bestimmtes Element und den darüber liegenden Inhalt neu zu zeichnen.
Leere AlleLesezeichen entfernen ()
Entfernt alle Lesezeichen.
Leere removeAllStandaloneTables ()
Entfernt alle eigenständigen Tabellen aus der Auflistung.
Leere AlleTabellen entfernen ()
Entfernt alle Tabellen aus der Auflistung.
Leere removeBookmark (ISpatialBookmark-Lesezeichen)
Entfernt ein Lesezeichen aus der Sammlung.
Leere removeIActiveViewEventsListener (IActiveViewEvents theListener)
removeIActiveViewEventsListener.
Leere removeIDynamicMapEventsListener (IDynamicMapEvents theListener)
removeIDynamicMapEventsListener.
Leere removeIMapEventsListener (IMapEvents theListener)
removeIMapEventsListener.
Leere removeStandaloneTable (IStandaloneTable-Tabelle)
Entfernt die eigenständige Tabelle aus der Auflistung.
Leere removeTable (ITable-Tabelle)
Entfernt eine Tabelle aus der Auflistung.
Leere zurücksetzen ()
Setzen Sie den internen Cursor zurück, sodass Next das erste Element zurückgibt.
Leere ResolutionUpdated (ITransformEventsResolutionUpdatedEvent theEvent)
Benachrichtigt Clients, wenn die Auflösung aktualisiert wird.
Leere rotationUpdated (ITransformEventsRotationUpdatedEvent theEvent)
Benachrichtigt Clients, wenn der Drehwinkel aktualisiert wird.
Leere speichern (IStream pstm, int fClearDirty)
speichern
Leere selectAllElements ()
Wählt alle Elemente aus.
Leere selectByShape (IGeometry shape, ISelectionEnvironment env, boolescher justOne)
Wählt Features in der Karte mit einer Form und einer Auswahlumgebung aus (optional).
IElement selectedElement (int-Index)
Gibt das n-te ausgewählte Element zurück.
Leere selectElement (IElement-Element)
Wählt das angegebene Element aus.
Leere selectElements (IEnumElement-Elemente)
Wählt die angegebenen Elemente aus.
Leere selectFeature (ILayer-Layer, IFeature-Feature)
Wählt eine Funktion aus.
Leere selectionChanged (ISelectionEventsSelectionChangedEvent theEvent)
Rufen Sie diese Funktion auf, um das Ereignis "Auswahl geändert" auszulösen.
ISelectionTracker selectionTracker (int-Index)
Gibt den Tracker für das n-te ausgewählte Element zurück.
Leere sendBackward (IEnumElement-Elemente)
Verschieben Sie die angegebenen Elemente einen Schritt näher an das untere Ende des Elementstapels.
Leere sendToBack (IEnumElement-Elemente)
Lassen Sie die angegebenen Elemente hinter allen anderen Elementen zeichnen.
Leere setActiveGraphicsLayerByRef (ILayer graphicsLayer)
Die aktive Grafikebene.
Leere setAnnotationEngineByRef (IAnnotateMap annotateMap)
Die Annotation (Label) Engine, die die Karte verwendet.
Leere setAreaOfInterest (IEvelope rhs1)
Interessengebiet für die Karte.
Leere setAutoCacheActive (boolean aktiv)
Zeigt an, ob der Autocache aktiv ist.
Leere setAutoExtentBounds (IEnvelope-Grenzen)
Die vom Rahmen angezeigten Grenzen der Karte.
Leere setAutoExtentLayerByRef (IFeatureLayer-Layer)
Automatische Erweiterungsfunktionen.
Leere setAutoExtentMapByRef (IMap-Karte)
Karte mit automatischer Ausdehnung.
Leere setAutoExtentMargin (doppelter Rand)
Rand automatisch erweitern.
Leere setAutoExtentMarginUnits (int-Einheiten)
Randeinheiten automatisch erweitern.
Leere setAutoExtentScale (doppelte Skalierung)
Der Maßstab, in dem die Karte angezeigt werden soll.
Leere setAutoExtentType (int-Typ)
Die Art und Weise, in der die Kartenausdehnung des Rahmens angegeben wird.
Leere setClipBorder (IBorder-Rahmen)
Ein optionaler Rahmen, der um ClipGeometry gezeichnet wird.
Leere setClipBounds (IGeometry rhs1)
Geben Sie eine Grenze an, auf die geclippt werden soll.
Leere setClipData (Objektdaten)
Legt erweiterte Cliptypdaten fest oder gibt diese zurück, d. h. andere Map, wenn der Typ esriMapClipMapExtent ist.
Leere setClipFilter (ISet-Ebenen)
Legt den Satz von Ebenen fest, der vom Clipping ausgeschlossen wird, oder gibt ihn zurück.
Leere setClipGeometry (IGeometry clipGeometry)
Eine Form, auf die Layer in der Karte zugeschnitten werden.
Leere setClipGridAndGraticules (boolescher pClipGridAndGraticules)
Gitter und Gitter auf Datenausmaß zuschneiden
Leere setClipType (int-Typ)
Methode zum Ausschneiden von Ebenen in der Karte.
Leere setConserveMemory (boolesches Flag)
Gibt an, ob beim Zuweisen von Ressourcen konservativ vorgegangen werden soll.
Leere setCopyrightText (Zeichenfolgen-Copyright)
Mit der Karte verbundene Copyright-Informationen.
Leere setCurrentTimeExtentByRef (ITimeExtent timeExtent)
Die aktuelle Zeitausdehnung der Karte.
Leere setDefaultTimeInterval (doppeltes Intervall)
Das Zeitintervall, das vom Zeitschieberegler verwendet wird, um die Karte zu animieren.
Leere setDefaultTimeIntervalUnits (int-Einheiten)
Die zum Animieren der Karte zu verwendenden Zeitintervalleinheiten.
Leere setDefaultTimeWindow (doppelte Dauer)
Das Zeitfenster, das verwendet wird, um die Daten in der Karte anzuzeigen.
Leere setDelayBackgroundDraw (boolesches Flag)
Gibt an, ob der Hintergrund sofort gezeichnet werden soll.
Leere setDescription (String descr)
Beschreibung der Karte.
Leere setDisplayDateFormat (String dateFormat)
Das Format des Datums, das auf dem Zeitschieberegler angezeigt wird.
Leere setDisplayEachTimestamp (boolescher Wert)
Gibt an, ob beim Abspielen der Zeitvisualisierung Daten für jeden Zeitstempel gezeichnet werden.
Leere setDisplaySpeed ​​(int-Geschwindigkeit)
Die Geschwindigkeit des Schiebereglers auf einer Skala von 1 bis 10, wobei 10 die schnellste ist.
Leere setDisplayTimeFormat (String timeFormat)
Das Format der Zeit, die auf dem Zeitschieberegler angezeigt wird.
Leere setDistanceUnits (int unitsCode)
Die Entfernungseinheiten für die Karte.
Leere setDomainDefiningLayer (ILayer-Ebene)
Gibt den Layer zurück, der die Kartendomäne definiert, 0, wenn Domäne die Vereinigung aller Layer ist.
Leere setDominantElementByRef (IElement dominantItem)
Dominantes Element.
Leere setDynamicDrawRate (int dynamicDrawRateMS)
Die dynamische Zeichenrate in Millisekunden.
Leere setDynamicMapEnabled (boolescher isEnable)
Zeigt an, ob die dynamische Karte ein- oder ausgeschaltet ist.
Leere setDynamicTimeRefresh (boolesches Flag)
Gibt an, ob die Daten in der Karte aktualisiert werden, wenn der Zeitschieberegler dynamisch verschoben wird.
Leere setElementSelectionByRef (ISelection selectionObject)
Objekt, das für die Elementauswahl verwendet werden soll.
Leere setExpanded (boolescher erweitert)
Zeigt an, ob die Karte erweitert ist.
Leere setExtent (IEvelope-Ausdehnung)
Das sichtbare Ausdehnungsrechteck.
Leere setExternalDrawing (int-Phase, boolesches externalDrawing)
Gibt an, ob externe Clients als Reaktion auf die angegebene Phase zeichnen.
Leere setFeatureSelectionByRef (ISelection-Auswahl)
Die Feature-Auswahl für die Karte.
Leere setFocusMapByRef (IMap activeMap)
Die Karte, auf die Tools und Steuerelemente wirken.
Leere setFullExtent (IEvelope-Ausdehnung)
Das Rechteck mit voller Ausdehnung.
Leere setFullTimeExtentByRef (ITimeExtent timeExtent)
Gibt die vollständige Zeitausdehnung der zeitaktivierten Layer in der Karte zurück.
Leere setHasLiveData (boolesches Flag)
Gibt an, ob die Karte über einen zeitaktivierten Layer verfügt, der häufig mit neuen Daten aktualisiert wird.
Leere setIsFramed (boolesches Flag)
Gibt an, ob die Karte in einem Rahmen und nicht im gesamten Fenster gezeichnet wird.
Leere setIsMapActivated (boolescher isMapActivated)
Zeigt an, ob die Fokuskarte aktiviert ist.
Leere setLevelMasking (ILayer maskedLayer, ILayer maskingLayer, String pLevels)
Die Symbolebenen, für die die Maskierung gilt.
Leere setMapScale (DoppelskalaRF)
Der Maßstab der Karte als repräsentativer Bruchteil.
Leere setMapUnits (int unitsCode)
Die Einheiten für die Karte.
Leere setMaskingLayers (ILayer-Ebene, ISet maskingLayers)
Die Masken für eine Ebene.
Leere setMaxScale (doppeltes pMaxScale)
Der maximale Maßstab für den zu erstellenden Cache.
Leere setName (Stringname)
Name der Karte.
Leere setNonFrameBackgroundByRef (IBackground rhs1)
Der Hintergrund, der verwendet werden soll, wenn andere Ziele als ein Rahmen gezeichnet werden.
Leere setOutputBandSize (int Kilobyte)
Größe, die jedem Band beim Banding-Ausgang zugewiesen wird.
Leere setOverposterPropertiesByRef (IOverposterProperties overposterProperties)
Das Overposter, das die Karte zur Beschriftung verwendet.
Leere setPageSize (double widthInches, double heightInches)
Legt die Seitengröße für die Karte fest (optional).
Leere setPlayOption (int-Option)
Die Abspieloption (Stop, Reverse, Repeat), die vom Schieberegler verwendet wird, nachdem die Zeitvisualisierung einmal abgespielt wurde.
Leere setProgressiveDrawing (boolesches Flag)
Gibt an, ob die Ansicht das Fenster während des Zeichnens nach und nach aktualisieren soll.
Leere setReferenceScale (DoppelskalaRF)
Der Bezugsmaßstab der Karte als repräsentativer Anteil.
Leere setScaleLimit (boolesch begrenzt)
Zeigt an, ob es eine Skalierungsgrenze gibt.
Leere setSelectionByRef (ISelection-Auswahl)
Die Auswahl.
Leere setShowRulers (boolesche showRulers)
Zeigt an, ob Lineale sichtbar sind.
Leere setShowScrollBars (boolescher showScrollBars)
Zeigt an, ob Bildlaufleisten sichtbar sind.
Leere setShowSelection (boolesche showRulers)
Zeigt an, ob die Auswahl sichtbar ist.
Leere setShowTime (boolesches Flag)
Zeigt an, ob die Zeit auf der Karte aktiviert ist.
Leere setShowTimeOnDisplay (boolesches Flag)
Zeigt an, ob die Zeit auf der Karte angezeigt wird.
Leere setSimulateLayerEffectsInLegends (boolesches Flag)
Gibt an, ob Transparenz und andere Effekte in Legenden simuliert werden sollen.
Leere setSpatialReferenceByRef (ISpatialReference SpatialRef)
Der Raumbezug der Karte.
Leere setSpatialReferenceLocked (boolesch gesperrt)
Gibt an, ob eine Änderung des Raumbezugs verhindert wird.
Leere setTimeExtentDefinitionLayerByRef (ILayer-Ebene)
Der zeitaktivierte Layer, der die zeitliche Ausdehnung der Karte definiert.
Leere setTimeExtentOption (int-Option)
Gibt an, wie die zeitliche Ausdehnung der Karte definiert ist.
Leere setTimeReferenceByRef (ITimeReference timeReference)
Die mit der Karte verknüpfte Zeitreferenz (Zeitzoneninformationen, Sommerzeit usw.).
Leere setTimeRelation (int-Beziehung)
Zeitrelation, die mit dem Zeitfenster für die Karte verwendet wird.
Leere setTimeValueByRef (ITimeValue-Zeit)
Der Zeitraum, für den die Daten in der Karte angezeigt werden.
Leere setTopFilterIndex (int phaseIndex)
Phasenindex, der TopFilterPhase ergänzt.
Leere setTopFilterPhase (int-Phase)
Die höchste Phase in der Zeichnungsreihenfolge, die einen Anzeigefilter verwendet.
Leere setUseMasking (boolesches Flag)
Gibt an, ob Maskierung verwendet werden soll.
Leere setUseSubPixelRendering (boolescher useSubPixelRendering)
Gibt an, ob die dynamische Karte in Subpixeln oder Vollpixeln gerendert wird (ausrichten am nächsten diskreten Pixel).
Leere setUseSymbolLevels (boolesches Flag)
Gibt an, ob die Karte mit Symbolebenen gezeichnet wird.
Leere setVerboseEvents (boolesche verboseEvents)
Gibt an, ob die Anzahl der ausgelösten Ereignisse erweitert oder begrenzt werden soll.
Leere sortBookmarks (boolesch aufsteigend)
Fügt der Sammlung ein Lesezeichen hinzu.
Leere unterdrückenForegroundDraw ()
Rufen Sie vor der Verwendung von Output auf, um zu verhindern, dass AfterDraw(esriViewForeground) ausgelöst wird.
Leere EinheitenUpdated (ITransformEventsUnitsUpdatedEvent theEvent)
Benachrichtigt Clients, wenn die Einheiten aktualisiert werden.
Leere unselectAllElements ()
Hebt die Auswahl aller Elemente auf.
Leere unselectElement (IElement-Element)
Hebt die Auswahl des angegebenen Elements auf.
Leere unselectElements (IEnumElement-Elemente)
Hebt die Auswahl der angegebenen Elemente auf.
Leere updateElement (IElement-Element)
Die Eigenschaften des Grafikelements haben sich geändert.
Leere visibleBoundsUpdated (ITransformEventsVisibleBoundsUpdatedEvent theEvent)
Benachrichtigt Clients, wenn die sichtbaren Grenzen aktualisiert werden.
Leere writeExternal (ObjectOutput-Ausgang)
Von der Klasse java.lang.Object geerbte Methoden
klonen, abschließen, getClass, benachrichtigen, benachrichtigenAll, toString, warten, warten, warten
Von der Schnittstelle com.esri.arcgis.interop.RemoteObjRef geerbte Methoden
getJintegraDispatch, release

Löst: IOException - bei Interop-Problemen UnknownHostException - bei Interop-Problemen

Erstellen Sie eine Karte mit einem Verweis auf ein solches Objekt, das von ArcGIS Engine oder Server zurückgegeben wird. Dies ist semantisch äquivalent zum Casting von obj in Map .


Es ist keine Neuigkeit mehr, dass die Bundesregierung jeden Versuch, das Urteil des Internationalen Gerichtshofs (IGH) in Den Haag über die umstrittene Halbinsel Bakassi überprüfen zu lassen, mit der Begründung, der Fall sei seit dem 10. Oktober 2012 eingestellt worden sei, abgewiesen hat.
Aber die Vorstellung, dass es keinen Sinn macht, über verschüttete Milch zu weinen, geht nicht auf verschiedene kritische grundlegende Fragen ein und geht nicht auf die Frage der Versäumnisse nigerianischer Regierungsbeamter bei der Vorhersage von Vorkehrungen Kameruns und Frankreichs und anderer Maßnahmen ein, die den Verlust des Landes hätten mildern können die peinliche Situation.Sicherlich erlitt Nigeria eine Herabstufung von Prestige und Status, weil Kamerun sein Gesicht in den Schlamm gerieben hatte, eine Situation, die durch die Tatsache verschlimmert wurde, dass die Menschen im alten Ostnigeria immer noch das Gefühl hegen, dass Gowon Bakassi als Verhandlung an Kamerun abgetreten hat, um den Biafra-Krieg gewinnen.
Was für manche noch ärgerlicher ist, war die Einladung des französischen Präsidenten Jacques Chirac an Präsident Obasanjo, nach Paris zu kommen, um mit Präsident Paul Biya von Kamerun zu verhandeln, um die Zustimmung beider Parteien zu erbitten, sich an jede Entscheidung des Gerichts zu halten Nieder. Wenn es eine Zeit gab, der französischen Verbindung zu verdächtigen, war es zu diesem Zeitpunkt, aber unser ehemaliger Präsident Obasanjo stimmte ignorant zu, Ball zu spielen. Angesichts der Nationalität des Präsidenten des IGH und anderer Umstände hätte Nigeria sogar eine Ratte wittern müssen.
Chief Richard Akinjide, ein ehemaliger nigerianischer Generalstaatsanwalt und Justizminister, beschrieb die Entscheidung des IGH als „50 % Völkerrecht und 50 % internationale Politik“, „offenbar voreingenommen und unfair“, „eine totale Katastrophe“ und eine „vollständige“ Betrug".
Er sagte auch, dass der Streit zwischen Nigeria und Kamerun in Wirklichkeit zwischen Nigeria und Frankreich liegt. Kamerun war nur der Stellvertreter für Frankreich. Es besteht kein Zweifel, dass Bakassi rechtlich und tatsächlich zu Nigeria gehört, weil dies durch viele urkundliche Beweise belegt wird, die dem Gericht vorgelegt wurden. Aber was das Gericht ignorierte ... Sie bitten niemanden, Ihnen zu übertragen, was Ihnen gehört. Er sagte weiter: „Für mich ist das Urteil des IGH ein völliger Betrug und inakzeptabel … Wenn Bakassi tatsächlich zu Kamerun gehört, wie können die Kameruner sie dann auffordern, es ihnen zu übertragen?“
Das Urteil sei jedoch „eine Vergewaltigung und eine unvorhergesehene potenzielle internationale Verschwörung gegen die territoriale Integrität und Souveränität Nigerias“ und „Teil eines westlichen Tricks, um Probleme in Afrika zu schüren und zu verewigen“.
Aber aus meiner Sicht ist es für den IGH unfair, ein solches Urteil zu fällen, ohne die Möglichkeit eines Referendums oder einer Volksabstimmung für die Bevölkerung von Bakassi in Betracht zu ziehen. Das Urteil des IGH über die Halbinsel Bakassi und ihre Bewohner widerspricht dem Gesetz der natürlichen Gerechtigkeit, der Gerechtigkeit und des guten Gewissens. Wie kann man über das Schicksal und das Leben eines anderen Menschen entscheiden, ohne nach seiner Meinung und Geschichte zu suchen? Die Einwohner von Bakassi haben das Recht auf Selbstbestimmung. Wir glauben, dass das Schlimmste, was Sie einem Menschen in dieser zivilisierten Welt von heute antun können, darin besteht, ihm seine grundlegenden Menschenrechte zu verweigern. Den Einwohnern von Bakassi wurde das Recht auf „Selbstbestimmung“ verweigert. Sie wurden nicht berücksichtigt oder sogar die Möglichkeit gegeben, anzugeben, wo sie hingehören möchten, selbst die Vereinten Nationen, deren Organ der IGH ist, würden den Menschen von Bakassi genügend Bedeutung beimessen, für die sie zumindest eine Volksabstimmung angeordnet hätten , dem Recht auf Selbstbestimmung Glauben schenken, das zu den Grundsätzen gehört, auf denen die Vereinten Nationen aufbauen.
Der IGH hätte die Einwohner von Bakassi und ihr Land in Nigeria (das ihr „natürlicher Geburtsort“ ist und wo ihre Vorfahren begraben sind) nicht an Kamerun abtreten dürfen. Die Frage dabei: Ist es nicht angemessen und wichtig, dass der IGH ein Referendum in Betracht zieht? War es nicht notwendig, dass der IGH einen umfassenderen diplomatischen Ansatz einleitete, der den Bakassi die Möglichkeit geben würde, ihr Schicksal selbst zu bestimmen? Anstatt in ihrem Gerichtssaal in Den Haag zu sitzen und die zukünftigen Generationen eines Volkes mit einem bloßen Hammerschlag zu verzerren.
Nach internationaler Best Practice ist die Zustimmung von Personen, die in einem Territorium leben (im Wege einer Volksabstimmung), eine Voraussetzung für jede Übertragung oder Änderung des Eigentums an dem von ihnen besetzten Territorium. Selbst als das Schicksal Nord- und Südkameruns entschieden werden sollte, wurde 1961 eine Volksabstimmung durchgeführt, bei der sich Südkamerun für den Beitritt zu Kamerun entschied, während Nordkamerun sich für Nigeria entschied. Das könnte ein Fall sein, der das sogenannte Selbstbestimmungsrecht bestätigt. Ich bin der Ansicht, dass es nach wie vor zu den bewährten internationalen Praktiken gehört, dass die Bewohner des Territoriums konsultiert werden und ihre eigene Wahl treffen können.
Aus rein normativer Sicht ist das beste Verfahren zur Festlegung einer Staatsgrenze eine Volksabstimmung unter internationaler Aufsicht unter der interessierten Bevölkerung.
In der Vergangenheit wurde Referendum oft verwendet, um Grenzen in verschiedenen Bereichen zu rechtfertigen.
Norwegens Entscheidung, sich 1905 von Schweden zu trennen, wurde beispielsweise vom norwegischen Volk in einem Referendum getroffen, bei dem 99,9 Prozent für die Unabhängigkeit stimmten, ein starker Ausdruck des Nationalstolzes. In ähnlicher Weise hielt Island ein Referendum über die Unabhängigkeit von Dänemark ab. Spaniens Verabschiedung einer demokratischen Reform Ende der 1970er Jahre nach dem Tod des Diktators Franco wurde vom Volk durch ein Referendum gebilligt. Ebenso sind durch Referenden in Dänemark, Frankreich und Irland neue Verfassungen entstanden. In einigen afrikanischen Ländern, wie Gabun und Malawi, wurde der Übergang zur Mehrparteienpolitik per Referendum beschlossen. Wichtig für die Legitimität der Entscheidung war in jedem Fall, dass dieser Schritt in Richtung Unabhängigkeit oder Demokratie direkt vom Volk und nicht von der politischen Elite vollzogen wurde.
Auch das Souveränitätsreferendum auf der Falklandinsel/Malvinas 2013, zuletzt waren
Das schottische Unabhängigkeitsreferendum war ein Referendum über die schottische Unabhängigkeit, das am 18. September 2014 in Schottland stattfand.

Die Frage des Unabhängigkeitsreferendums, die die Wähler mit „Ja“ oder „Nein“ beantworteten, lautete: „Soll Schottland ein unabhängiges Land sein?“ Die „Nein“-Seite gewann mit 2.001.926 (55,3%) gegen die Unabhängigkeit und 1.617.989 (44,7%) dafür.
Sogar das Referendum über den Status der Krim, 2014 war ein Referendum über den Status der Krim, das am 16. Das Referendum fragte die Menschen auf der Krim, ob sie Russland als Bundesstaat beitreten oder die Krimverfassung von 1992 wiederherstellen und den Status der Krim als Teil der Ukraine wiederherstellen wollten.
Aber im Fall des Bakassi-Streits wurde dem Volk nie die Möglichkeit gegeben, sein Selbstbestimmungsrecht auszuüben.
Das Selbstbestimmungsrecht ist eine menschenrechtliche Grundlage der Vereinten Nationen und ihrer Ziele und ein Schlüsselbegriff in den wichtigsten internationalen Pakten und Chartas.
Es ist auch eine ius cogens (zwingendes Recht) Norm, die höchste Kategorie im Völkerrecht.

Nehmen wir zum Beispiel verschiedene Bestimmungen des Völkerrechts, die das Recht auf Selbstbestimmung anerkennen und legitimieren:
1.Artikel 2 der Vereinigten Nationalen Erklärung über die Gewährung der Unabhängigkeit der Kolonialstaaten und Völker (Resolution 1514(XV) der Generalversammlung vom 14. Dezember 1960: „Alle Völker haben das Recht auf Selbstbestimmung aufgrund wirtschaftlicher, sozialer und kulturelle Entwicklung."
2.Der Internationale Pakt über bürgerliche und politische Rechte (Vereinte Nationen, 1966), Teil I, Artikel 1: Alle Völker haben das Recht auf Selbstbestimmung. Kraft dieses Rechts bestimmen sie frei ihren politischen Status und verfolgen frei ihre wirtschaftliche, soziale und kulturelle Entwicklung. Artikel 2: Alle Völker können zu ihren eigenen Zwecken frei über ihre natürlichen Reichtümer und Ressourcen verfügen, unbeschadet der Verpflichtungen, die sich aus der internationalen wirtschaftlichen Zusammenarbeit auf der Grundlage des Grundsatzes des gegenseitigen Nutzens und des Völkerrechts ergeben. In keinem Fall darf einem Volk der eigene Lebensunterhalt entzogen werden. Artikel 3: Die Vertragsstaaten dieses Paktes, einschließlich derer, die für die Verwaltung der Gebiete ohne Selbstverwaltung und Treuhandgebiete zuständig sind, fördern die Verwirklichung des Rechts auf Selbstbestimmung und achten dieses Recht in Übereinstimmung mit den Bestimmungen der Charta der Vereinten Nationen.
3. Aktionsprogramm zur vollständigen Umsetzung der Erklärung über die Gewährung der Unabhängigkeit der Kolonialstaaten und Völker (Resolution 2621(XXV) der Generalversammlung „Bekräftigend, dass alle Völker das Recht auf Selbstbestimmung und Unabhängigkeit haben und dass die Unterwerfung der Völker zur Fremdherrschaft ein ernsthaftes Hindernis für die Aufrechterhaltung des Weltfriedens und der internationalen Sicherheit und die Entwicklung friedlicher Beziehungen zwischen den Nationen darstellt.
4. Erklärung der Vereinten Nationen über die Grundsätze des Völkerrechts über freundschaftliche Beziehungen und Zusammenarbeit zwischen Staaten gemäß dem Kapitel der Vereinten Nationen (Resolution 2625(XXV) der Generalversammlung vom 25. Oktober 1970): „Aufgrund des Grundsatzes der Gleichheit“ Rechte und Selbstbestimmung der Völker, die im Kapitel verankert sind, haben alle Völker das Recht, ihren politischen Status ohne äußere Einmischung frei zu bestimmen und ihre wirtschaftliche, soziale und kulturelle Entwicklung zu verfolgen, und jeder Staat hat die Pflicht, dieses Recht entsprechend zu achten mit den Bestimmungen der Charta.“
5. Konferenz über Sicherheit und Zusammenarbeit in Europa (KSZE), Schlussakte von Helsinki, 1. August 1975: „Aufgrund der Gleichberechtigung und der Selbstbestimmung der Völker haben alle Menschen immer das Recht und die Freiheit zu bestimmen, wann und wie sie ihren inneren und äußeren politischen Status ohne äußere Einmischungen wünschen und ihre politische, wirtschaftliche, soziale und kulturelle Entwicklung nach Belieben verfolgen.“
6. Afrikanische Charta der Menschen- und Völkerrechte, 1981: Artikel 19 – „(2) Nichts kann die Herrschaft eines Volkes durch ein anderes rechtfertigen.“ Artikel 20 – „Alle Völker haben ein Existenzrecht. Sie haben das unbestreitbare und unveräußerliche Recht auf Selbstbestimmung. Sie bestimmen ihren politischen Status frei und verfolgen ihre wirtschaftliche und soziale Entwicklung nach der von ihnen frei gewählten Politik“.
7. Wiener Erklärung und Aktionsprogramm, 1993: „Alle Völker haben das Recht auf Selbstbestimmung. Kraft dieses Rechts bestimmen sie ihren politischen Status frei und verfolgen frei ihre wirtschaftliche, soziale und kulturelle Entwicklung.“
8. Organisation für Sicherheit und Zusammenarbeit in Europa (OSZE), Charta von Paris für ein neues Europa, 1994: „Wir bekräftigen die Gleichberechtigung der Völker und ihr Recht auf Selbstbestimmung in Übereinstimmung mit der Charta der Vereinten Nationen und mit die einschlägigen Normen des Völkerrechts, einschließlich derjenigen, die sich auf die territoriale Integrität von Staaten beziehen.
Umfang und Inhalt des Selbstbestimmungsrechts wurden darüber hinaus vom UN-Menschenrechtsausschuss und dem Ausschuss zur Beseitigung der Rassendiskriminierung sowie zahlreichen führenden internationalen Juristen erarbeitet.
Daher kann im Lichte dieser oben genannten Prämissen gefolgert werden, dass das Urteil des IGH lediglich eine Verletzung des Menschenrechts auf Selbstbestimmung der Bevölkerung von Bakassi und verschiedener völkerrechtlicher Positionen ist.
Zur Umsetzung des umstrittenen Green Tree-Abkommens
Es ist wichtig anzumerken, dass die Übertragung von Bakassi eine grobe Verletzung der nigerianischen Verfassung darstellte, die nicht erkannt hatte, dass ein Teil ihres Landes und ihrer Bevölkerung für wohltätige Zwecke ausgegeben wurde und dass der Vertrag der Nationalversammlung nicht vorgelegt wurde Ratifizierung oder Domestizierung vor Inkrafttreten, wie es die Verfassung vorsieht. Analyse der rechtlichen Auswirkungen der Position von Präsident Muhammadu Buhari Am Mittwoch, dem 29. Juli, während einer interaktiven Sitzung mit in Kamerun lebenden Nigerianern, sagte Nigeria, dass sich Nigeria an das Urteil des Internationalen Gerichtshofs (IGH) auf der Halbinsel Bakassi halten wird, und sagte seine Die Verwaltung wird die getreue Umsetzung des Green Tree-Abkommens sicherstellen, das die Abtretung von Bakassi an Kamerun regelt.
Buhari sollte nicht vergessen, dass der nigerianische Senat die Verlegung von Bakassi nach Kamerun am 22. November 2007 abgelehnt hat, da das Green Tree Agreement zur Abtretung des Gebiets an Kamerun gegen § 12 (1) der Verfassung von 1999 verstieß. Ungeachtet dessen wurde das Gebiet am 14. August 2008 von der Obasanjo-Administration offiziell an Kamerun übergeben.
Obwohl Abschnitt 12 der Nationalversammlung keine rechtliche Rolle bei der Ratifizierung von Verträgen (oder Vertragsabschlüssen) zuweist, bezieht sie sie vielmehr auf die Umsetzung (oder Domestikation) von Verträgen ein. Ratifizierung ist der Prozess, durch den ein Staat (in diesem Fall Nigeria) auf internationaler Ebene seine Zustimmung zur Bindung an einen Vertrag bekundet (siehe Artikel 1 der Wiener Vertragsrechtskonvention von 1969).
Während die Umsetzung (oder Domestikation) der Prozess ist, durch den ein von einem Staat gültig abgeschlossener Vertrag als Rechtsvorschrift erlassen (oder domestiziert) wird, damit er auf innerstaatlicher Ebene wirksam werden kann. Abschnitt 12 gilt für die Umsetzung (oder Domestizierung) von Verträgen und besagt, dass:
„Kein Vertrag zwischen der Föderation und einem anderen Land hat Gesetzeskraft, es sei denn, ein solcher Vertrag wurde von der Nationalversammlung in Kraft gesetzt“.
Die seitliche Erläuterung zu Abschnitt 12 macht zusammen mit Punkt 31 der exklusiven Gesetzgebungsliste deutlich, dass die gesetzgebende Rolle der Nationalversammlung für die Umsetzung von Verträgen wichtig ist.
Ein anderes Szenario ist, dass das besagte Wiener Übereinkommen über das Recht der Verträge, wie es in Artikel 46 Absatz 1 enthalten ist, besagt: – „Ein Staat kann sich nicht darauf berufen, dass seine Zustimmung, an einen Vertrag gebunden zu sein, unter Verletzung einer Bestimmung ausgedrückt wurde seines innerstaatlichen Rechts in Bezug auf die Befugnis zum Abschluss von Verträgen als seine Zustimmung ungültig machen, es sei denn, diese Verletzung war offensichtlich und betraf eine Regel seines innerstaatlichen Rechts von grundlegender Bedeutung.“
Artikel 46 (2) enthält ferner einige Klarstellungen zu den obigen Bestimmungen: – „Eine Verletzung liegt vor, wenn sie für jeden Staat, der sich in der Angelegenheit gemäß der üblichen Praxis und in gutem Glauben verhält, objektiv offensichtlich wäre.“

Diese Bestimmungen der Wiener Vertragsrechtskonvention bieten Nigeria ebenfalls die Möglichkeit, einen Verstoß gegen seine internen Verfahren zur Legitimierung von Verträgen/Vereinbarungen anzufechten, die das Green Tree-Abkommen von 2006 nicht eingehalten hat. Gemäß der nigerianischen Verfassung kann der Vertrag nicht gelten, es sei denn und nur insoweit, als ein solcher Vertrag in nigerianisches Recht umgewandelt wurde. Da der Vertrag von der (nigerianischen) Nationalversammlung für die Domestizierung nicht genehmigt wurde, kann Nigeria die Bestimmungen dieses Abkommens nicht erfüllen. Der Vertrag hätte in nigerianisches Recht umgewandelt werden müssen, bevor die nigerianische Regierung ihn umsetzt. Deshalb fühlen sich die Einwohner von Bakassi darüber bekümmert, dass vor der Verlegung ihres Territoriums ins Ausland nicht die notwendigen Maßnahmen ergriffen wurden.

Mehrere Berichte haben mit Bestürzung das Ausmaß der Vernachlässigung, Verlassenheit und unerklärlichen Misshandlung der indigenen Bevölkerung von Bakassi festgestellt, nachdem die nigerianische Regierung ihr Land im Rahmen des von der Olusegun Obasanjo-Administration am 12. , 2006 in New York.

Abschluss
Trotz der Tatsache, dass die nigerianische Regierung die vollendeten Tatsachen des Verlustes des Territoriums akzeptiert hat, stehen der nigerianischen Regierung noch zwei Optionen offen:
Die erste Möglichkeit besteht darin, den Vereinten Nationen vorzulegen, das Fenster zu nutzen, das es den Menschen von Bakassi ermöglicht, ein Referendum durchzuführen und selbst zu entscheiden, wo sie in Übereinstimmung mit dem Völkerrecht und allen Prinzipien des Rechts auf Selbstbestimmung angehören wollen. Die nigerianische Regierung muss das Green Tree-Abkommen aufheben und die Bakassi-Halbinsel zurückfordern. Oder besser noch, die Entscheidung des IGH, Bakassi an Kamerun abzutreten, sollte rückgängig gemacht werden. Erst wenn den Menschen von Bakassi die notwendige Gelegenheit gegeben wird, ihr Recht auf Selbstbestimmung auszuüben, wird das Urteil des IGH über Bakassi unfair, ungerecht, grausam und eine galante Vergewaltigung der Rechte und des Schicksals der Bakassi bleiben.
Die zweite Option Laut Professor Akin Oyebode, Professor für Völkerrecht und Diplomatie Unilag während der Jubiläumsvorlesung von CrossRiverWatch zum 2. Kamerun, um die Halbinsel zurückzukaufen, eine Situation, die in der Geschichte nicht ohne Beispiel ist“.
Bakassi sollte überdacht werden, weil es um die Menschen geht und nicht so sehr um Öl. Leider ist es das Öl, über das viel gesprochen wird. Aber die Leute sind sehr wichtig.
Es ist auch klar darauf hinzuweisen, dass Kamerun die Bakassi-Ressourcen nicht nutzen kann, ohne die Interessen Nigerias und Nigerias zu berücksichtigen. Denn wenn sie den Kontinentalschelf seerechtlich beanspruchen wollen, müsste sich ihr Anspruch mit dem Anspruch Nigerias überschneiden, denn in der Geographie, auf der Karte von Kamerun, ist ihr Schelf völkerrechtlich verriegelt sie haben nicht genug Platz, um 200 Seemeilen, die ihnen das Völkerrecht zugesteht, zu nutzen oder in Anspruch zu nehmen. Dies liegt daran, dass auch Nigeria einen Anspruch von 200 Meilen hat, also wird es einen Konflikt geben. Daher könnte Nigeria ihnen vorschlagen, sich in einer „Einheits- oder gemeinsamen Entwicklungszone“ für die Ausbeutung der Ressourcen zu engagieren. Und bringen Sie sie in die Vereinbarung ein, die wir mit Ländern wie Äquatorialguinea und Sao Tome und Principe getroffen haben, nach der Nigeria und Äquatorialguinea und Sao Tome und Principe die Ressourcen gemeinsam ausbeuten und die Einnahmen im Verhältnis 60:40 aufgeteilt werden. Mit anderen Worten, so können die Interessen der Nigerianer geschützt und gleichzeitig Kamerun von den Ressourcen des Territoriums profitieren.
Beratung der Nationalversammlung
Ich nutze diese Gelegenheit auch, um mich dafür einzusetzen, dass Abschnitt 12 der nigerianischen Verfassung unverzüglich geändert wird, um eine Rolle der Nationalversammlung (vorzugsweise des Senats) in den Ratifizierungsprozess des Vertrages in ähnlicher Weise wie bisher einzubeziehen in den USA und Ghana erhältlich.
Bis zu einer solchen Verfassungsänderung bleibt jedoch die Tatsache bestehen, dass die Exekutive durch den Präsidenten weiterhin einseitig Verträge ohne Zutun der Nationalversammlung abschließen und ratifizieren wird. Da diese Änderung futuristisch als Kontrolle und Ausgleich dienen wird, um eine ähnliche irrtümliche kontroverse Situation des Abkommens über grüne Bäume zu vermeiden.


ComponentOne-Berichte für WinForms

Warenzeichen Der Produktname ComponentOne ist ein Warenzeichen und ComponentOne ist ein eingetragenes Warenzeichen von GrapeCity, Inc. Alle anderen hierin verwendeten Warenzeichen sind Eigentum ihrer jeweiligen Inhaber. Garantie ComponentOne garantiert für einen Zeitraum von 90 Tagen ab Kaufdatum, dass die Original-CD (oder Disketten) bei normalem Gebrauch frei von Material- und Verarbeitungsfehlern sind. Wenn während dieser Zeit ein Defekt auftritt, können Sie die defekte CD (oder Diskette) zusammen mit einem datierten Kaufbeleg an ComponentOne zurücksenden, und ComponentOne wird sie kostenlos ersetzen.Nach 90 Tagen können Sie einen Ersatz für eine defekte CD (oder Diskette) erhalten, indem Sie diese zusammen mit einem Scheck über 25 USD (für Porto und Verpackung) an ComponentOne senden. Mit Ausnahme der hier aufgeführten ausdrücklichen Garantie für die Original-CD (oder -disketten) übernimmt ComponentOne keine weiteren Garantien, weder ausdrücklich noch stillschweigend. Es wurde alles unternommen, um sicherzustellen, dass die in diesem Handbuch enthaltenen Informationen zum Zeitpunkt der Erstellung korrekt sind. Wir sind nicht verantwortlich für Fehler oder Auslassungen. Die Haftung von ComponentOne ist auf den Betrag beschränkt, den Sie für das Produkt bezahlt haben. ComponentOne haftet nicht für besondere, Folge- oder sonstige Schäden aus irgendeinem Grund. Kopieren und Verteilen Sie dürfen zwar gerne Sicherungskopien der Software für Ihren eigenen Gebrauch und Schutz erstellen, es ist Ihnen jedoch nicht gestattet, Kopien zur Verwendung durch andere zu erstellen. Wir haben viel Zeit und Mühe in die Erstellung dieses Produkts gesteckt, und wir danken Ihnen für Ihre Unterstützung, da es nur von lizenzierten Benutzern verwendet wird.

Dieses Handbuch wurde mit ComponentOne Doc-To-Help™ erstellt.

Inhaltsverzeichnis ComponentOne-Berichte für WinForms Übersicht . 1 Hilfe zu ComponentOne Studio für WinForms . 2 Upgrade von VSReport 8.0 . 2 Berichte und Vorschau von .NET-Versionen . 3 Migrieren eines Reports for WinForms-Projekts zu Visual Studio 2005 . 4 Konvertieren einer Vorschau für WinForms-Projekt in Berichte für WinForms . 5 Hauptmerkmale . 9 Berichte für WinForms-Komponenten und -Steuerelemente . 15 Erste Schritte mit Berichten für WinForms . 19 Erstellen von Berichten (C1Report vs. C1PrintDocument) . 19 Entscheidung für die Methode zur Berichterstellung . 21 Erste Schritte mit der Berichterstellung . 21 C1Report-Schnellstart . 21 Erstellen von VBScript-Ausdrücken. 32 Erste Schritte mit Drucken und Vorschau . 37 C1Druckdokument-Schnellstart . 37 Tabellen erstellen . 43 Hinzufügen von Text. 59 Erstellen von Seitenkopfzeilen in C1PrintDocument . 64 Zeichnen einer horizontalen Linie . 68 Seitenfußzeilen erstellen . 69 Berichte für WinForms Top-Tipps . 75 C1Druckdokument-Tipps . 75 C1Report-Tipps . 84 Tipps zur Steuerung der visuellen Vorschau . 86 C1ReportScheduler-Tipps . 88 Design-Time-Unterstützung . 89 Menü „C1Report-Aufgaben“ . 89 C1Bericht-Kontextmenü. 90

C1RdlReport-Aufgabenmenü . 91 C1RdlReport-Kontextmenü . 91 C1MultiDocument-Aufgabenmenü . 92 C1MultiDocument-Kontextmenü. 93 C1PrintPreviewControl-Aufgabenmenü . 93 Intelligente Designer . 94 Hauptmenü Schwebende Symbolleiste. 95 Schwebende ToolStrip-Symbolleiste. 100 schwebende Miniaturansichten-Symbolleiste. 103 Schwebende Gliederungssymbolleiste . 104 Schwebende Lineale-Symbolleiste . 106 Erscheinungsbild des Vorschaufensters Schwebende Symbolleiste . 106 Schwebende Symbolleiste für Ränder. 107 Schwebende Symbolleiste des Vorschaufensters . 108 Schwebende Symbolleiste für die Textsuche . 110 Lokalisierung . 111 Lokalisierungs-Symbolleiste . 112 Arbeiten mit C1Report. 117 Zusammenfassung des Objektmodells . 118 Abschnitte eines Berichts . 118 Entwickeln von Berichten für Desktop-Szenarien . 120 Eingebettete Berichte (zur Entwurfszeit geladen) . 120 Eingebettete Berichte (zur Entwurfszeit erstellt). 121 Zur Laufzeit geladene Berichte . 122 Anpassbare Berichte . 125 Berichte für Web-Szenarien entwickeln . 126 Statische Webberichte . 126 Dynamische Webberichte . 129 Erstellen, Laden und Rendern des Berichts . 132 Erstellen einer Berichtsdefinition . 133 Laden von Berichtsdaten. 138 Daten gruppieren und sortieren. 144 Gruppieren von Daten . 144 Daten sortieren . 149 Laufende Summen hinzufügen . 150 Zwischensummen und andere Aggregate hinzufügen . 159 Erstellen von Kreuztabellenberichten . 152

Arbeiten mit VBScript. 153 VBScript-Elemente, -Objekte und -Variablen . 153 Kompatibilitätsfunktionen verwenden: Iif und Format . 156 Verwenden von Aggregatfunktionen . 157 Verwenden von Ereigniseigenschaften. 159 Formatieren eines Felds nach seinem Wert. 160 Ausblenden eines Abschnitts, wenn keine Daten dafür vorhanden sind . 161 Anzeigen oder Ausblenden eines Felds in Abhängigkeit von einem Wert . 162 Benutzer zur Eingabe von Parametern auffordern . 163 Zurücksetzen des Seitenzählers . 170 Ändern der Dimensionen eines Felds zum Erstellen eines Balkendiagramms . 165 Fortgeschrittene Anwendungen. 167 Parameterabfragen . 167 Ungebundene Berichte . 169 Benutzerdefinierte Datenquellen . 171 Datensicherheit . 173 Arbeiten mit C1RdlReport . 177 Berichtsdefinitionssprache (RDL). 177 Vorteile von C1RdlReport . 177 C1RdlReport-Einschränkungen. 177 Laden einer RDL-Datei . 178 SSRS- und ComponentOne-Berichte . 179 Arbeiten mit C1ReportDesigner . 181 Über C1ReportDesigner. 181 Anwendungstaste . 182 Registerkarte Design . 183 Registerkarte Anordnen. 188 Registerkarte „Seite einrichten“ . 191 Registerkarte Vorschau . 192 Stilgalerie . 205 Zugreifen auf C1ReportDesigner aus Visual Studio . 199 C1ReportDesigner-Optionen einstellen . 198 Erstellen einer einfachen Berichtsdefinition . 199 Ändern des Berichtslayouts . 207 Bericht mit Feldern erweitern. 209 Hinzufügen von Diagrammfeldern . 209

Hinzufügen von Farbverlaufsfeldern . 214 Auswählen, Verschieben und Kopieren von Feldern. 215 Feld-, Abschnitts- und Berichtseigenschaften ändern . 217 Ändern der Datenquelle. 217 Erstellen eines Master-Detail-Berichts mit Unterberichten . 217 Vorschau und Drucken eines Berichts . 221 Exportieren und Veröffentlichen eines Berichts . 223 Verwalten von Berichtsdefinitionsdateien . 223 Importieren von Microsoft Access-Berichten. 224 Importieren von Crystal Reports-Berichten. 228 Diagramme in Berichten . 229 Diagramme in flachen Berichten . 229 Andere nützliche Diagrammeigenschaften . 230 Diagramme mit mehreren Reihen . 232 Serie mit berechneten Werten . 232 Diagramme in gruppierten Berichten . 232 Aggregatdiagramme . 234 Karten in Berichten . 236 Ebenen . 237 Verfolgung. 237 Stile. 237 Räumliche Standorte . 238 Punkte-Ebene. 238 Linienebene . 238 KML-Ebene. 239 Legenden. 239 Maps-Komplettlösung. 240 Arbeiten mit C1ReportsScheduler . 245 Über C1ReportsScheduler. 245 Installation und Einrichtung . 245 Benutzeroberfläche . 246 Beschriftungs- und Statusleiste . 247 Aufgabenliste . 247 Aktionsliste . 249 Zeitplan . 251 Menüsystem . 252

Arbeiten mit C1PrintDocument . 257 Renderobjekte . 258 Renderobjekthierarchie . 258 Regeln für die Eingrenzung, Positionierung und Stapelung von Renderobjekten . 259 Stile . 267 Klassen, die die Style-Eigenschaft verfügbar machen. 267 Inline- und Nicht-Inline-Stile. 268 Umgebungs- und Nicht-Umgebungsstileigenschaften. 268 Stilvererbung, Parent und AmbientParent . 269 ​​Stileigenschaften und ihre Standardwerte . 270 Untereigenschaften komplexer Stileigenschaften. 271 Berechnete Stileigenschaften . 271 Absatzobjektstile . 272 Tabellenstile. 272 Tabellen . 273 Zugriff auf Zellen, Spalten und Zeilen . 273 Tabellen- und Spaltenbreite, Zeilenhöhe . 274 Zeilen- und Spaltengruppen, Kopf- und Fußzeilen . 275 Benutzerzellengruppen . 277 Stile in Tabellen . 277 Anker und Hyperlinks . 302 Hinzufügen eines Hyperlinks zu einem Anker innerhalb desselben Dokuments . 279 Hinzufügen eines Hyperlinks zu einem Anker in einem anderen C1PrintDocument . 301 Hinzufügen eines Hyperlinks zu einer Position im aktuellen Dokument . 281 Hinzufügen eines Hyperlinks zu einer externen Datei . 281 Hinzufügen eines Hyperlinks zu einer Seite im selben Dokument . 282 Hinzufügen eines Hyperlinks zu einem Benutzerereignis . 282 Hierarchie der Link-Zielklassen . 284 Ausdrücke, Skripte, Tags . 284 Schlagwörter . 284 Syntax für Tags/Ausdrücke. 285 Variablenwerte zur Laufzeit bearbeiten . 286 Skript-/Ausdruckssprache . 290 Assemblys und Namespaces . 291 In Textausdrücken zugängliche IDs . 291 IDs, auf die in Ausdrücken innerhalb von Filter, Gruppierung und Sortierung zugegriffen werden kann . 295 IDs, auf die in Ausdrücken zugegriffen werden kann, die verwendet werden, um berechnete Felder in einem DataSet anzugeben. 295

Datenbindung. 296 Datenbindung in Renderobjekten . 296 Datenbindungsbeispiele . 299 Datenaggregate . 303 Inhaltsverzeichnis . 306 Wörterverzeichnis . 306 Klassen, die die Indexfunktion unterstützen . 306 Generieren eines Index im Code . 309 Anpassen des Erscheinungsbilds des Indexes . 307 Die Struktur des generierten Index . 309 Gliederung . 310 Eingebettete Schriftarten . 311 Schriftersetzung . 311 Selektive Schrifteinbettung . 312 Wörterbuch . 312 C1Berichtsdefinitionen . 312 C1Einschränkungen beim Import von Berichten. 313 Arbeiten mit Druckertreibern . 314 Report Definition Language (RDL)-Dateien . 316 RDL-Importbeschränkungen . 317 Arbeiten mit C1MultiDocument . 319 C1MultiDocument-Einschränkungen . 319 Erstellen und Anzeigen einer C1MultiDocument-Datei . 320 Exportieren einer C1MultiDocument-Datei . 321 Drucken einer C1MultiDocument-Datei . 321 C1MultiDocument-Konturen . 321 Verwenden des C1ReportDesigner-Steuerelements. 323 Schritt 1 von 9: Erstellen und Ausfüllen des Hauptformulars . 336 Schritt 2 von 9: Klassenvariablen und -konstanten hinzufügen . 325 Schritt 3 von 9: Hinzufügen von Code zum Aktualisieren der Benutzeroberfläche. 326 Schritt 4 von 9: Hinzufügen von Code zur Handhabung der Symbolleistenbefehle . 327 Schritt 5 von 9: Implementieren der SetDesignMode-Methode . 329 Schritt 6 von 9: Implementieren der Dateiunterstützungsmethoden . 330 Schritt 7 von 9: Anschließen der Bedienelemente . 334 Schritt 8 von 9: Hinzufügen von Code zum Erstellen und Entfernen von Berichten . 337 Schritt 9 von 9: Hinzufügen von Code zum Erstellen von Feldern . 341

Berichte für WinForms-Beispiele . 345 Berichte für WinForms Aufgabenbasierte Hilfe . 351 Aufgabenbasierte Hilfe zur Berichterstellung. 351 Hinzufügen von Bildern zum Bericht . 351 Erstellen von Berichtsfeldern. 353 Anpassen der Seitenkopfzeilen. 355 Anpassen des Seitenlayouts . 356 Formatieren von Berichten . 360 Laden von Berichtsdefinitionen. 363 Ändern von Unterberichten . 365 Berichte rendern (Vorschau anzeigen, drucken und exportieren) . 367 Speichern einer Berichtsdefinition . 369 Aufgabenbasierte Hilfe drucken und in der Vorschau anzeigen. 371 Dokumentinformationen einstellen . 371 Ausblenden des Navigationsbereichs . 373 Gliederungseinträge zur Registerkarte Gliederung hinzufügen . 375 Hinzufügen von Spalten zu einer Seite. 377 Anpassen der Dateiformate im Dialogfeld „Speichern unter“ . 380 Zeichnen von Text in einem Winkel . 382 Formatieren von Tabellen . 384 Seitenumbruch einfügen . 390 Drucken im Querformat. 392 Einstellen der Seitengröße. 396 Größenänderung oder Skalierung eines Bildes . 397 Hinzufügen eines Wasserzeichenbilds . 399 Einstellen des anfänglichen Zoommodus . 400 Entfernen eines Elements aus dem Kontextmenü . 403 Deaktivieren des Kontextmenüs . 404

Übersicht über ComponentOne Reports für WinForms ComponentOne Reports™ für WinForms bietet alle Tools, die Sie benötigen, um Ihre Anforderungen an Berichterstellung, Druck, Vorschau und Export zu erfüllen. Fügen Sie Datenbankberichte im Microsoft-Access-Stil hinzu. Erstellen Sie komplexe hierarchische Dokumente mit automatischem Wortindex, Inhaltsverzeichnisgenerierung, Datenbindung und mehr. Exportieren, drucken oder zeigen Sie Ihre Berichte und Dokumente in der Vorschau an. Diese Edition von Reports for WinForms kombiniert zwei frühere Produkte: Reports for .NET und Preview for .NET. Die volle Funktionalität des älteren Reports für .NET-Produkts wird beibehalten, aber der Assemblyname und der Namespace wurden geändert. Erstellen von Berichten im Microsoft Access-Stil für Ihre Visual Studio .NET-Anwendungen schnell und einfach mit ComponentOne Reports für WinForms. 

Die C1Report-Komponente, die datenbasierte gebänderte Berichte generiert. Rendern Sie Berichte direkt auf einem Drucker oder einer Vorschausteuerung oder exportieren Sie sie in verschiedene portable Formate (einschließlich XLS, PDF, HTML, Text und Bilder). Die Komponente stellt ein umfangreiches Objektmodell zum Erstellen, Anpassen, Laden und Speichern von Berichtsdefinitionen bereit. Weitere Informationen finden Sie unter Arbeiten mit C1Report.

Die Komponente C1RdlReport, eine Komponente, die einen RDL-Bericht (Report Definition Language) darstellt, der mit der Version 2008 der RDL-Spezifikation definiert wurde. Die Komponente C1RdlReport ähnelt der Komponente C1Report mit zusätzlicher RDL-Unterstützung. Weitere Informationen finden Sie unter Arbeiten mit C1RdlReport.

Der C1ReportDesigner-Designer, eine eigenständige Anwendung zum Erstellen von Berichtsdefinitionen, ohne Code zu schreiben. Mit dem Designer können Sie Berichtsdefinitionen schnell erstellen und bearbeiten oder vorhandene Microsoft Access- und Crystal-Berichtsdefinitionen importieren. Der Designer ahmt die Microsoft Access-Oberfläche nach. Wenn Sie also derzeit Microsoft Access verwenden, werden Sie sich schnell an die Verwendung von C1ReportDesigner gewöhnen. Weitere Informationen finden Sie unter Arbeiten mit C1ReportDesigner.

Das C1ReportDesigner-Steuerelement (nicht zu verwechseln mit dem eigenständigen Designer), das Berichte im Entwurfsmodus anzeigt und Benutzern das Ziehen, Kopieren und Ändern der Größe von Berichtsfeldern und -abschnitten ermöglicht. Das Steuerelement bietet außerdem einen unbegrenzten Rückgängig-/Wiederherstellen-Stack und einen Auswahlmechanismus, der für die Verwendung mit dem PropertyGrid-Steuerelement entwickelt wurde, das mit Visual Studio geliefert wird. Sie können das C1ReportDesigner-Steuerelement verwenden, um einige Berichtsentwurfsfunktionen in Ihre Anwendungen zu integrieren, oder Sie können Ihre eigene vollwertige Berichtsdesigneranwendung schreiben.

Die Anwendung C1ReportsScheduler, eine eigenständige Anwendung, mit der die Berichtserstellung so geplant wird, dass sie im Hintergrund ausgeführt wird. Mit der Anwendung C1ReportsScheduler können Sie auswählen, welche Berichte exportiert oder gedruckt werden sollen, in welche Formate der Bericht exportiert werden soll, sowie den Zeitplan und die Häufigkeit für die Erstellung von Berichten. Weitere Informationen finden Sie unter Arbeiten mit C1ReportsScheduler.

Drucken und Vorschau Egal wie einfach oder komplex Ihre Druckanforderungen sind, Reports for WinForms kann Ihnen dabei helfen, Ihrem Projekt schnell und einfach Druck- und Vorschaufunktionen hinzuzufügen. 

Die Komponente C1PrintDocument bietet ein umfangreiches Objektmodell, mit dem Sie beliebig komplexe Dokumente im Code erstellen können. Das Objektmodell zielt speziell auf paginierte Dokumente ab und bietet eine Vielzahl von Funktionen, die die automatische und intelligente Paginierung von komplex strukturierten Dokumenten erleichtern. Dokumente können vollständig im Code erstellt oder über ein leistungsstarkes und flexibles Datenbindungsmodell an eine Datenbank gebunden werden. C1PrintDocument kann auch Berichtsdefinitionen importieren und generieren. Weitere Informationen finden Sie unter Arbeiten mit C1PrintDocument.

Die C1MultiDocument-Komponente ermöglicht das Erstellen, Beibehalten und Exportieren großer Dokumente, die aufgrund von Speicherbeschränkungen nicht von einem einzelnen C1PrintDocument-Objekt verarbeitet werden können. C1MultiDocument unterstützt Verknüpfungen zwischen enthaltenen Dokumenten, allgemeinem Inhaltsverzeichnis, allgemeine Seitennummerierung und Gesamtseitenzahl.

Die visuellen Vorschaukomponenten von Reports for WinForms bieten leistungsstarke, flexible und einfach zu verwendende Tools, mit denen Sie Ihrer Anwendung schnell Dokumentanzeigefunktionen hinzufügen können. Die integrierten Komponenten (das C1PrintPreviewControl-Steuerelement und das C1PrintPreviewDialog-Dialogfeld) machen das Hinzufügen einer professionell aussehenden Vorschau zu Ihren Anwendungen zu einem Kinderspiel so viel wie du brauchst.

Hilfe zu ComponentOne Studio für WinForms Erste Schritte Informationen zur Installation von ComponentOne Studio für WinForms, zur Lizenzierung, zum technischen Support, zu Namespaces und zum Erstellen eines Projekts mit dem Steuerelement finden Sie unter Erste Schritte mit Studio für WinForms. Was ist neu? Eine Liste der neuesten Funktionen, die ComponentOne Studio für WinForms hinzugefügt hat, finden Sie unter Was ist neu in Studio für WinForms.

Upgrade von VSReport 8.0 VSReport 8.0-Benutzer haben keine Probleme mit C1Report. Obwohl C1Report vollständig in C# neu geschrieben wurde, um die neuesten .NET-Technologien zu nutzen, ist das Objektmodell praktisch identisch mit dem in VSReport 8.0. C1Report verwendet dieselben Berichtsdefinitionsdateien und implementiert alle Funktionen, die Sie gewohnt sind, einschließlich Unterberichten, Exportoptionen einschließlich HTML/DHTML/PDF-Export und vieles mehr. C1Report enthält auch denselben leistungsstarken Berichts-Designer, der mit der VSView Reporting Edition geliefert wird, sodass das Erstellen und Anpassen Ihrer Berichte so einfach wie nie zuvor ist. Der Hauptunterschied zwischen VSReport und C1Report besteht darin, wie Berichte in Vorschausteuerelemente gerendert werden: VSReport verwendet das VSPrinter-Steuerelement, um eine Berichtsvorschau bereitzustellen. Die folgende Codezeile würde beispielsweise den Bericht in vsreport1 in das vsprinter1-Steuerelement rendern:

Visual Basic VSReport1.Render(vsprinter1)

C1Report macht stattdessen ein PrintDocument-Objekt verfügbar. Dieses Objekt kann verwendet werden, um den Bericht zu drucken, oder es kann an ein Vorschausteuerelement wie ComponentOne C1PrintPreview oder Microsoft PrintPreviewControl angehängt werden. Die folgende Codezeile würde beispielsweise den Bericht in C1Report1 in das C1PrintPreview1-Steuerelement rendern:

Visual Basic C1PrintPreview1.Document = c1r.Document

C# c1printPreview1.Document = c1r.Document

C1Report-Ereignisnamen unterscheiden sich auch von VSReport. Die Ereignisse wurden umbenannt, da VSReport über Skripthandlereigenschaften mit demselben Namen wie die Ereignisse verfügt. In .NET müssen Ereignisse und Eigenschaften unterschiedliche Namen haben. Abgesehen von diesen Unterschieden haben die Bedienelemente praktisch identische Objektmodelle. Beide implementieren die RenderToFile-Methode, die Berichte in HTML, PDF und andere Dateitypen rendert, und beide stellen Sammlungen von Gruppen, Abschnitten und Feldern bereit.

Berichte und .NET-Vorschauversionen Das Produkt ComponentOne Reports für WinForms hat sich in mehreren Versionen weiterentwickelt. Die aktuelle Version (Nr. 6 in der Tabelle unten) ist eine Kombination aus .NET 2.0 Preview für .NET und Reports für .NET-Produkte. In der folgenden Tabelle werden die verfügbaren .NET-Versionen der ComponentOne-Berichterstellungs- und -Vorschauprodukte beschrieben. Beachten Sie, dass die Liste nummeriert wurde, um zwischen den Versionen zu unterscheiden (dieses Produkt, Reports for WinForms, ist Nummer 6 unten): #


Schau das Video: Tech - ArcGIS Engine Application