Mehr

Cursor mit ArcObjects freigeben?


Ich arbeite mit ArcObjects, insbesondere dem ICursor Interface. Ich erstelle einen Cursor und durchlaufe die Ergebnismenge einer Abfrage. Mein Problem/Anliegen ist, den Cursor zu schließen oder zu löschen oder loszulassen, wenn ich die Ergebnismenge der Abfrage durchlaufen habe. Die Abfrage wird an einen Sql-Workspace übergeben (über die ISqlWorkspace-Schnittstelle). Code ist wie folgt

ISqlWorkspace pSQL_WS = myWorkspace als ISqlWorkspace; ICursor pCursor = pSQL_WS.OpenQueryCursor(strQuery); string CursorResults = ""; IRow pRow; while ((pRow = pCursor.NextRow()) != null) { int fc = pRow.Fields.FieldCount; for (int x = 0; x < fc; x++) { CursorResults += pRow.get_Value(x).ToString() + " "; } CursorResults += Environment.NewLine; } _textElement.Text = Convert.ToString(cursorResults);

Ich nehme tatsächlich die Ergebnisse der Abfrage und platziere sie in einem Textelement. Ich denke, nach der letzten Zeile möchte ich meinen Cursor schließen / löschen / loslassen, aber ich bin mir einfach nicht sicher, wie ich das machen soll.


Um einen Cursor freizugeben, müssen Sie ReleaseComObject verwenden. Lesen Sie diesen Artikel aus der Esri-Hilfe (9.2), der noch gültig ist.

In Ihren Code eingearbeitet:

ISqlWorkspace pSQL_WS = myWorkspace als ISqlWorkspace; ICursor pCursor = pSQL_WS.OpenQueryCursor(strQuery); string CursorResults = ""; IRow pRow; while ((pRow = pCursor.NextRow()) != null) { int fc = pRow.Fields.FieldCount; for (int x = 0; x < fc; x++) { CursorResults += pRow.get_Value(x).ToString() + " "; } CursorResults += Environment.NewLine; } _textElement.Text = Convert.ToString(cursorResults); //Zeilen- und Cursor-Sperren freigeben System.Runtime.InteropServices.Marshal.ReleaseComObject(pRow); System.Runtime.InteropServices.Marshal.ReleaseComObject(pCursor);

Das Aufheben dieser Sperren ist wichtig, da sonst der Arbeitsbereich/die Feature-Klasse für die Lebensdauer des Werkzeugs gesperrt ist (und wenn sie in ArcCatalog oder ArcMap bestehen bleibt, bis die Anwendung geschlossen wird) und das Löschen/Umbenennen/Hinzufügen von Feldern verhindert wird…

Um zu testen, ob eine Feature-Class bereits gesperrt ist, verwenden Sie ISchemaLock.GetCurrentSchemaLocks, das getestet werden sollte, bevor Felder hinzugefügt oder versucht wird, die Feature-Class umzubenennen/zu löschen.


Langsame Reaktion bei räumlichen Abfragen.

Ich verwende Visual Studio 2010 Professional - Version 10.0.40219.1 SP1Rel. Microsoft .NET Framework - Version 4.5.50938 SP1Rel. ArcGIS 10.1 SP1 for Desktop – Build 3143.

Ich mache eine Spatialquery, um alle Adresspunkte innerhalb einer Postleitzahlgrenze abzurufen, also alle Punkte innerhalb eines Polygons.

Wenn ich den Punkt-Layer und den Polygon-Layer in der ArcMap-Sitzung geladen habe und das Endergebnis 15.000 Punkte innerhalb des Polygons sind, kann es 10-15 Minuten dauern, wenn ich es auf dem Server mache, geht der Speicher aus.

Ich glaube, das Problem liegt darin, wie das Visual Studio eingerichtet ist, ich habe es nicht eingerichtet, es wurde nur auf meinem Computer installiert. Auf der Suche nach einer Auflösung fand ich in den Advanced Compiler Settings, um die Ziel-CPU von der AnyCPU-Einstellung, auf die sie eingestellt war, auf x86 zu ändern. Nachdem ich das getan hatte, lief es auf dem Server (sehr langsam) und hatte gelegentlich keinen Speicher mehr, nicht großartig, aber eine Verbesserung.

Es scheint auch, dass ich die Postleitzahlen schleife, es wird immer langsamer. Wenn ich die Sitzung schließe und neu starte, nimmt die Geschwindigkeit (was davon ist) wieder zu und beginnt dann, sich zu verlangsamen.

Ich habe immer kleine räumliche Abfragen durchgeführt, einen Punkt oder Punkte in einer Nachbarschaft, aber nicht so große Abfragen. Ja, ich lasse den Cursor nach jeder Spatialquery los.

Ich werde den Code posten, den ich verwende, danke, dass Sie sich das angesehen haben.

Im Code finde ich alle Punkte innerhalb der Postleitzahlgrenze und überprüfe, ob die Postleitzahl an dem Punkt mit der Postleitzahlgrenze übereinstimmt, innerhalb derer sie sich befindet.


Cursor mit ArcObjects freigeben? - Geografisches Informationssystem

COM-Klasse 'UniqueValueRenderer'. Generiert 19.03.2015 13:20:41 von 'C:ArcGISCOMesriCarto.olb'

Beschreibung ' Ein Renderer für eindeutige Werte, bei dem Symbole Features basierend auf eindeutigen Attributwerten zugewiesen werden. ' Generator-Optionen: PromptForTypeLibraries = False ClashPrefix = esri_ LowerCaseMemberNames = True IDispatchOnly = False RetryOnReject = False AwtForOcxs = True ArraysAsObjects = False DontRenameSameMethods = False ImplementConflictingnameInterfaces = TrueMethInterface = TrueMethInterface

Feldzusammenfassung
statisch lang serialVersionUID
Von der Schnittstelle com.esri.arcgis.carto.IUniqueValueRenderer geerbte Felder
IID, IIDc3346d2a_b2bc_11d1_8817_080009ec732a, xxDummy
Von Schnittstelle geerbte Felder com.esri.arcgis.carto.IUniqueValueRenderer2
IID, IID78b2e6fc_a027_4b63_a52d_3ad0ba2f2e81, xxDummy
Von der Schnittstelle com.esri.arcgis.carto.IFeatureRendererUpdate geerbte Felder
IID, IID735c4d99_e28d_4ad4_b5b9_a12c1d8319fc, xxDummy
Von der Schnittstelle com.esri.arcgis.carto.ILevelRenderer geerbte Felder
IID, IIDdc3d8097_c1ed_11d2_9f21_00c04f6bc709, xxDummy
Von der Schnittstelle com.esri.arcgis.system.IPersistStream geerbte Felder
IID, IID000000109_0000_0000_c000_000000000046, xxDummy
Von der Schnittstelle com.esri.arcgis.system.IPersist geerbte Felder
IID0000010c_0000_0000_c000_000000000046
Von der Schnittstelle com.esri.arcgis.carto.IRendererClasses geerbte Felder
IID, IID3f25cc56_cc66_4930_a5fd_bc981601cea6, xxDummy
Von der Schnittstelle com.esri.arcgis.carto.IRotationRenderer geerbte Felder
IID, IID2f2047a6_42bd_11d2_aafd_00c04fa334b3, xxDummy
Von Schnittstelle geerbte Felder com.esri.arcgis.carto.IRotationRenderer2
IID, IIDd85e5b0c_68b3_48c8_b8d2_087806273b47, xxDummy
Von der Schnittstelle com.esri.arcgis.carto.ISizeRenderer geerbte Felder
IID, IID5ba3418a_4ba5_431a_b879_f2539c7be5ff, xxDummy
Von der Schnittstelle com.esri.arcgis.carto.ITransparencyRenderer geerbte Felder
IID, IIDfb20665d_db1c_11d2_9f2e_00c04f6bc709, xxDummy
Von der Schnittstelle com.esri.arcgis.display.IDisplayAdmin geerbte Felder
IID, IID12e361f0_1907_11d3_80c7_0080c79f0371, xxDummy
Von der Schnittstelle com.esri.arcgis.carto.ILookupSymbol geerbte Felder
IID, IID736a377d_a1eb_4ce4_84b9_90f9588374c2, xxDummy
Von der Schnittstelle com.esri.arcgis.system.IXMLSerialize geerbte Felder
IID, IIDc8545045_6615_48e3_af27_52a0e5fc35e2, xxDummy
Von der Schnittstelle com.esri.arcgis.system.IXMLVersionSupport geerbte Felder
IID, IID72ca65b9_13de_48b7_8443_717b69b72a99, xxDummy
Von der Schnittstelle com.esri.arcgis.carto.IExportSupport geerbte Felder
IID, IIDf6448010_3cc8_435e_b042_540e9a328f3b, xxDummy
Felder, die von der Schnittstelle com.esri.arcgis.carto.ILookupLegendClass geerbt wurden
IID, IIDbdb4bf86_8691_4f1c_b009_42e39035f40e, xxDummy
Konstrukteur-Zusammenfassung
UniqueValueRenderer ()
Erstellt einen UniqueValueRenderer mit ArcGIS Engine.
UniqueValueRenderer (java.lang.Object obj)
Veraltet. Ab ArcGIS 9.2 durch normale Java-Casts ersetzt.
UniqueValueRenderer theUniqueValueRenderer = (UniqueValueRenderer) obj
Zusammenfassung der Methode
Leere addReferenceValue (java.lang.String-Wert, java.lang.String-RefValue)
Fügt dem Renderer einen Wert hinzu, der mit refValue gruppiert werden soll, der dem Renderer bereits hinzugefügt wurde.
Leere addValue (java.lang.String-Wert, java.lang.String-Überschrift, ISymbol-Symbol)
Fügt der Liste einen Wert und ein entsprechendes Symbol hinzu.
boolesch canRender (IFeatureClass featClass, IDisplay-Anzeige)
Gibt an, ob die angegebene Feature-Class auf der angegebenen Anzeige gerendert werden kann.
Leere deserialize (IXMLSerializeData-Daten)
Deserialisiert ein Objekt aus XML.
Leere draw (IFeatureCursor-Cursor, int drawPhase, IDisplay display, ITrackCancel trackCancel)
Zeichnet Features vom angegebenen Cursor auf der angegebenen Anzeige.
boolesch gleich (java.lang.Object o)
Vergleichen Sie dieses Objekt mit einem anderen
java.lang.String esri_getClass (int-Index)
Klassenname.
int getClassCount()
Anzahl der Klassen.
Leere getClassID (GUID[] pClassID)
getClassID
statische java.lang.String getClsid()
getClsid.
IColorRamp getColorRamp()
Farbrampe-Objekt.
java.lang.String getColorScheme ()
Farbschema (nur Benutzeroberflächeneigenschaft).
java.lang.String getDefaultLabel()
Label für nicht spezifizierte Werte.
ISymbol getDefaultSymbol()
Symbol zum Zeichnen von nicht angegebenen Werten (kann NULL sein).
java.lang.String getDescription (java.lang.String-Wert)
Beschreibung für das angegebene Etikett.
java.lang.String getField (int-Index)
Feld am angegebenen Index, das zum Kategorisieren von Features verwendet wird.
int getFieldCount ()
Anzahl der vom Renderer verwendeten Felder (0-3).
java.lang.String getFieldDelimiter ()
Trennzeichen zum Trennen von Feldwerten.
java.lang.String getHeading (java.lang.String-Wert)
Überschrift, die den angegebenen Wert enthält.
com.esri.arcgis.interop.Dispatch getJintegraDispatch ()
Veraltet. Nur für den internen Gebrauch.
java.lang.String getLabel (java.lang.String-Wert)
Label für den angegebenen Wert.
ILegendGroup getLegendGroup (int-Index)
Legendengruppe am angegebenen Index.
int getLegendGroupCount()
Anzahl der im Objekt enthaltenen Legendengruppen.
ILegendItem getLegendItem()
Optional.
java.lang.Object getLevelArray()
Array, das alle von den Symbolen verwendeten Ebenen enthält (Symbole ohne Ebene erhalten eine Ebene von 0).
java.lang.String getLookupStyleset()
Für den Abgleich verwendeter Stil (nur Benutzeroberflächeneigenschaft).
java.lang.String getMinNamespaceSupported ()
Der minimale Namespace, zu dem die Klasse serialisieren kann (zB der 90-Namespace).
java.lang.String getReferenceValue (java.lang.String-Wert)
Referenzwert für den angegebenen Wert.
java.lang.String getRotationField()
Rotationsfeld.
int getRotationType()
Rotationstyp.
Leere getSizeMax (_ULARGE_INTEGER[] pcbSize)
getSizeMax
java.lang.String getSizeRendererExpression()
Ruft den Größenausdruck ab.
int getSizeRendererFlags ()
Ruft Größenflags ab, die aus Enumerationen esriSizeRendererFlags bestehen.
Leere getSizeRendererRandomRange (double[] pMinSize, double[] pMaxSize)
Ruft den Größenbereich für die zufällige Größenanpassung ab.
ISymbol getSymbol (java.lang.String-Wert)
Symbol, das dem angegebenen Wert zugeordnet ist.
ISymbol getSymbolByFeature (IFeature-Funktion)
Symbol zum Zeichnen des angegebenen Features.
Leere getSymbolRotation3DExpressions (java.lang.String[] pExpressionX, java.lang.String[] pExpressionY, java.lang.String[] pExpressionZ)
Ruft Ausdrücke für die Drehung um jede Achse ab.
int getSymbolRotation3DFlags()
Ruft Rotationsflags ab, die aus Enumerationen esriSymbolRotation3DFlags bestehen.
Leere getSymbolRotation3DFlags2 (int[] pFlagX, int[] pFlagY, int[] pFlagZ)
Ruft ein Flag für jede Achse ab.
Leere getSymbolRotation3DRandomRanges (double[] pMinRotationX, double[] pMinRotationY, double[] pMinRotationZ, double[] pMaxRotationX, double[] pMaxRotationY, double[] pMaxRotationZ)
Ruft den Rotationsbereich für jede Achse ab (für zufällige Rotation).
int getSymbolRotation3DRotationTypeZ ()
Ruft den Rotationstyp (geografisch oder arithmetisch) um die Z-Achse ab (hartcodierte Arithmetik um andere Achsen).
java.lang.String getTransparencyField ()
Transparenzfeld.
java.lang.String getValue (int-Index)
Wert am angegebenen Index.
int getValueCount ()
Anzahl der eindeutigen Werte, die zum Kategorisieren der Daten verwendet werden.
java.lang.String getWhereClause (int-Index, ITable-Tabelle)
Wo-Klausel.
int Hash-Code ()
der Hashcode für dieses Objekt
Leere ist dreckig ()
ist dreckig
boolesch isFlipSymbols()
Zeigt an, ob Symbole umgedreht sind.
boolesch isRenderPhase (int drawPhase)
Gibt an, ob der Renderer die angegebene Zeichenphase verwendet.
boolesch isReverseUniqueValuesSorting ()
Gibt an, ob eindeutige Werte gespiegelt sind.
boolesch isSymbolsAreGraduated ()
Zeigt an, ob Symbole abgestuft sind.
boolesch isUseDefaultSymbol()
Gibt an, ob DefaultSymbol zum Zeichnen nicht angegebener Werte verwendet wird.
boolesch isUsesFilter()
Gibt an, ob das aktuelle Objekt mithilfe eines Filters gezeichnet wird.
Leere laden (IStream-pstm)
Belastung
int lookupLegendClass (IFeature-Funktion, int[] legendGroupIdx)
Gibt die Legendengruppe und die Legendenklassenindizes für das Eingabe-Feature zurück.
ISymbol lookupSymbol (boolescher firstPass, IFeature-Funktion)
Gibt einen Verweis auf das Symbol des Renderers für das Eingabe-Feature zurück.
Leere PrepareFilter (IFeatureClass fc, IQueryFilter queryFilter)
Bereitet den Abfragefilter für den Renderingprozess vor.
Leere readExternal (java.io.ObjectInput in)
Leere Veröffentlichung ()
Geben Sie einen UniqueValueRenderer frei.
Leere AlleWerte entfernen ()
Entfernt alle Werte aus dem Renderer.
Leere removeValue (java.lang.String-Wert)
Entfernt einen Wert aus dem Renderer.
Leere resetLookupSymbol (ISymbol-Symbol)
Setzt temporäre Optionen auf dem Symbol zurück (z.B.
Leere speichern (IStream pstm, int fClearDirty)
speichern
Leere serialisieren (IXMLSerializeData-Daten)
Serialisiert ein Objekt in XML.
Leere setColorRampByRef (IColorRamp ppColorRamp)
Farbrampe-Objekt.
Leere setColorScheme (java.lang.String-Name)
Farbschema (nur Benutzeroberflächeneigenschaft).
Leere setCurrentDrawLevel (int rhs1)
Die aktuelle Zeichnungsstufe (auf -1 gesetzt, um alle Stufen zu zeichnen).
Leere setDefaultLabel (java.lang.String-Label)
Label für nicht spezifizierte Werte.
Leere setDefaultSymbol (ISymbol-Symbol)
Symbol zum Zeichnen von nicht angegebenen Werten (kann NULL sein).
Leere setDescription (java.lang.String-Wert, java.lang.String-Text)
Beschreibung für das angegebene Etikett.
Leere setExclusionSetByRef (IFeatureIDset rhs1)
Eine Objektreferenz auf einen temporären Zeichnungsausschlusssatz.
Leere setExportInfoByRef (IFeatureExportInfoGenerator rhs1)
Das Hilfsobjekt zum Generieren von Exportinformationen.
Leere setField (int-Index, java.lang.String-Feld)
Feld am angegebenen Index, das zum Kategorisieren von Features verwendet wird.
Leere setFieldCount (int fieldCount)
Anzahl der vom Renderer verwendeten Felder (0-3).
Leere setFieldDelimiter (java.lang.String-Begrenzer)
Trennzeichen zum Trennen von Feldwerten.
Leere setFieldType (int-Index, boolesche rhs2)
Gibt an, ob das Feld am angegebenen Index eine Zeichenfolge ist.
Leere setFlipSymbols (boolesch aufsteigend)
Zeigt an, ob Symbole umgedreht sind.
Leere setHeading (java.lang.String-Wert, java.lang.String-Überschrift)
Überschrift, die den angegebenen Wert enthält.
Leere setLabel (java.lang.String-Wert, java.lang.String-Label)
Label für den angegebenen Wert.
Leere setLookupStyleset (java.lang.String-Name)
Für den Abgleich verwendeter Stil (nur Benutzeroberflächeneigenschaft).
Leere setReverseUniqueValuesSorting (boolesch aufsteigend)
Gibt an, ob eindeutige Werte gespiegelt sind.
Leere setRotationField (java.lang.String fieldName)
Rotationsfeld.
Leere setRotationType (int-Typ)
Rotationstyp.
Leere setSizeRendererExpression (java.lang.String pExpression)
Ruft den Größenausdruck ab.
Leere setSizeRendererFlags (int pFlags)
Ruft Größenflags ab, die aus Enumerationen esriSizeRendererFlags bestehen.
Leere setSizeRendererRandomRange (double minSize, double maxSize)
Legt den Größenbereich für zufällige Größen fest.
Leere setSymbol (java.lang.String-Wert, ISymbol-Symbol)
Symbol, das dem angegebenen Wert zugeordnet ist.
Leere setSymbolRotation3DExpressions (java.lang.String AusdruckX, java.lang.String AusdruckY, java.lang.String AusdruckZ)
Legt Ausdrücke für die Drehung um jede Achse fest.
Leere setSymbolRotation3DFlags (int pFlags)
Ruft Rotationsflags ab, die aus Enumerationen esriSymbolRotation3DFlags bestehen.
Leere setSymbolRotation3DFlags2 (int flagX, int flagY, int flagZ)
Setzt ein Flag für jede Achse.
Leere setSymbolRotation3DRandomRanges (double minRotationX, double minRotationY, double minRotationZ, double maxRotationX, double maxRotationY, double maxRotationZ)
Legt den Rotationsbereich für jede Achse fest (für zufällige Rotation).
Leere setSymbolRotation3DRotationTypeZ (int pType)
Ruft den Rotationstyp (geografisch oder arithmetisch) um die Z-Achse ab (hartcodierte Arithmetik um andere Achsen).
Leere setSymbolsAreGraduated (boolesche SymboleAreGraduated)
Zeigt an, ob Symbole abgestuft sind.
Leere setTransparencyField (java.lang.String fieldName)
Transparenzfeld.
Leere setUseDefaultSymbol (boolesches Flag)
Gibt an, ob DefaultSymbol zum Zeichnen nicht angegebener Werte verwendet wird.
Leere setValue (int-Index, java.lang.String-Wert)
Wert am angegebenen Index.
Leere aktualisieren (IFeatureLayer pFeatureLayer)
aktualisieren
Leere writeExternal (java.io.ObjectOutput-Ausgabe)
Von der Klasse java.lang.Object geerbte Methoden
klonen, abschließen, getClass, benachrichtigen, benachrichtigenAll, toString, warten, warten, warten

SerialVersionUID

UniqueValueRenderer

Löst: java.io.IOException - bei Interop-Problemen java.net.UnknownHostException - bei Interop-Problemen

UniqueValueRenderer

Erstellen Sie einen UniqueValueRenderer mit einem Verweis auf ein solches Objekt, das von ArcGIS Engine oder Server zurückgegeben wird. Dies entspricht semantisch der Umwandlung von obj in UniqueValueRenderer .

Parameter: obj – ein von ArcGIS Engine oder Server zurückgegebenes Objekt

Methodendetails

GetClsid

Gleich

Überschreibungen: gleich in der Klasse java.lang.Object

Hash-Code

Überschreibt: hashCode in der Klasse java.lang.Object

GetJintegraDispatch

Angegeben von: getJintegraDispatch in der Schnittstelle com.esri.arcgis.interop.RemoteObjRef

Veröffentlichung

Angegeben von: Freigabe in Schnittstelle com.esri.arcgis.interop.RemoteObjRef

GetField

Angegeben von: getField in der Schnittstelle ILookupLegendClass Angegeben von: getField in der Schnittstelle IUniqueValueRenderer Parameter: index - Der Index (in) Rückgaben: Das Feld löst aus: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

SetFeld

Angegeben durch: setField im Interface IUniqueValueRenderer Parameter: index - Das Indexfeld (in) - Das Feld (in) Würfe: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

SetFieldType

Angegeben durch: setFieldType im Interface IUniqueValueRenderer Parameter: index - Der Index (in) rhs2 - Der rhs2 (in) Würfe: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

GetFieldDelimiter

Angegeben durch: getFieldDelimiter im Interface IUniqueValueRenderer Rückgabe: Das Trennzeichen Löst: java.io.IOException - Bei Interop-Problemen AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

SetFieldDelimiter

Spezifiziert durch: setFieldDelimiter im Interface IUniqueValueRenderer Parameter: delimiter - Das Trennzeichen (in) Löst: java.io.IOException - Bei Interop-Problemen.AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

GetFieldCount

Angegeben von: getFieldCount in der Schnittstelle ILookupLegendClass Angegeben von: getFieldCount in der Schnittstelle IUniqueValueRenderer Rückgabe: Der fieldCount Löst aus: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

SetFieldCount

Angegeben von: setFieldCount im Interface IUniqueValueRenderer Parameter: fieldCount - Der fieldCount (in) Löst: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

GetDefaultSymbol

Angegeben durch: getDefaultSymbol im Interface IUniqueValueRenderer Rückgabe: Ein Verweis auf ein com.esri.arcgis.display.ISymbol Löst: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

SetDefaultSymbol

Angegeben durch: setDefaultSymbol im Interface IUniqueValueRenderer Parameter: symbol – Eine Referenz auf ein com.esri.arcgis.display.ISymbol (in) Löst: java.io.IOException – Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

GetDefaultLabel

Angegeben durch: getDefaultLabel im Interface IUniqueValueRenderer Rückgabe: Das Label Löst aus: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

SetDefaultLabel

Angegeben durch: setDefaultLabel im Interface IUniqueValueRenderer Parameter: label - Das Label (in) Löst: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

IsUseDefaultSymbol

Angegeben durch: isUseDefaultSymbol im Interface IUniqueValueRenderer Rückgabe: Das Flag Löst aus: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

SetUseDefaultSymbol

Angegeben durch: setUseDefaultSymbol im Interface IUniqueValueRenderer Parameter: flag - Das Flag (in) Löst: java.io.IOException - Wenn Interop-Probleme auftreten. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

GetValueCount

Angegeben durch: getValueCount im Interface IUniqueValueRenderer Rückgabe: Der valueCount Löst: java.io.IOException - Wenn Interop-Probleme auftreten. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

Wert erhalten

Angegeben durch: getValue im Interface IUniqueValueRenderer Parameter: index - Der Index (in) Rückgabe: Der Wert Würfe: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

SetValue

Angegeben durch: setValue im Interface IUniqueValueRenderer Parameter: index - Der Index (in) value - Der Wert (in) Würfe: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

GetReferenceValue

Angegeben durch: getReferenceValue im Interface IUniqueValueRenderer Parameter: value - Der Wert (in) Rückgabe: Der refValue Löst: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

AddReferenceValue

Angegeben durch: addReferenceValue im Interface IUniqueValueRenderer Parameter: value - Der Wert (in) refValue - Der refValue (in) Löst: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

GetSymbol

Angegeben durch: getSymbol im Interface IUniqueValueRenderer Parameter: value – Der Wert (in) Rückgabe: Eine Referenz auf ein com.esri.arcgis.display.ISymbol Löst: java.io.IOException – Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

SetSymbol

Angegeben durch: setSymbol in der Schnittstelle IUniqueValueRenderer Parameter: value - Das Wertsymbol (in) - Eine Referenz auf ein com.esri.arcgis.display.ISymbol (in) Throws: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

GetLabel

Angegeben durch: getLabel im Interface IUniqueValueRenderer Parameter: value - Der Wert (in) Rückgabe: Das Label Würfe: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

Bezeichnung setzen

Angegeben durch: setLabel im Interface IUniqueValueRenderer Parameter: value - Das Wertlabel (in) - Das Label (in) Würfe: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

GetDescription

Spezifiziert durch: getDescription im Interface IUniqueValueRenderer Parameter: value - Der Wert (in) Rückgabe: Der Text Throws: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

SetBeschreibung

Angegeben durch: setDescription im Interface IUniqueValueRenderer Parameter: value - Der Wert (in) text - Der Text (in) Würfe: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

GetHeading

Angegeben durch: getHeading im Interface IUniqueValueRenderer Parameter: value - Der Wert (in) Rückgabe: Die Überschrift Würfe: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

Überschrift festlegen

Angegeben durch: setHeading im Interface IUniqueValueRenderer Parameter: value - Der Wert (in) Überschrift - Die Überschrift (in) Würfe: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

Mehrwert

Angegeben durch: addValue im Interface IUniqueValueRenderer Parameter: value - Der Wert (in) Überschrift - Das Überschriftssymbol (in) - Eine Referenz auf ein com.esri.arcgis.display.ISymbol (in) Würfe: java.io.IOException - If es gibt Interop-Probleme. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

RemoveValue

Angegeben durch: removeValue im Interface IUniqueValueRenderer Parameter: value - Der Wert (in) Würfe: java.io.IOException - Wenn Interop-Probleme vorliegen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

AlleWerte entfernen

Angegeben von: removeAllValues ​​im Interface IUniqueValueRenderer Löst: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

GetColorScheme

Angegeben durch: getColorScheme im Interface IUniqueValueRenderer Rückgabe: Der Name Löst: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

SetColorScheme

Angegeben durch: setColorScheme im Interface IUniqueValueRenderer Parameter: name - Der Name (in) Würfe: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

GetLookupStyleset

Angegeben durch: getLookupStyleset im Interface IUniqueValueRenderer Rückgabe: Der Name Löst: java.io.IOException - Wenn Interop-Probleme auftreten. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

SetLookupStyleset

Angegeben durch: setLookupStyleset im Interface IUniqueValueRenderer Parameter: name - Der Name (in) Würfe: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

GetColorRamp

Angegeben durch: getColorRamp im Interface IUniqueValueRenderer2 Rückgabe: Eine Referenz auf eine com.esri.arcgis.display.IColorRamp Löst: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

SetColorRampByRef

Angegeben durch: setColorRampByRef im Interface IUniqueValueRenderer2 Parameter: ppColorRamp – Ein Verweis auf ein com.esri.arcgis.display.IColorRamp (in) Löst: java.io.IOException – Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

IsReverseUniqueValuesSorting

Angegeben durch: isReverseUniqueValuesSorting im Interface IUniqueValueRenderer2 Rückgabe: Die aufsteigenden Throws: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

SetReverseUniqueValuesSorting

Angegeben durch: setReverseUniqueValuesSorting in Schnittstelle IUniqueValueRenderer2 Parameter: ascending - Die aufsteigende (in) Würfe: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

IsFlipSymbols

Spezifiziert durch: isFlipSymbols im Interface IUniqueValueRenderer2 Rückgabe: Die aufsteigenden Würfe: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

SetFlipSymbols

Angegeben durch: setFlipSymbols im Interface IUniqueValueRenderer2 Parameter: ascending - Die aufsteigende (in) Würfe: java.io.IOException - Wenn Interop-Probleme vorliegen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

CanRender

Bemerkungen

Wenn der Renderer nicht auf einen Feature-Layer anwendbar ist, kann er als Reaktion auf eine CanRender-Methode False zurückgeben. Der Punktdichte-Renderer ist beispielsweise nur auf Polygon-Feature-Layer anwendbar und gibt als Reaktion auf andere Feature-Layer False zurück.

Produktverfügbarkeit

Unterstützte Plattformen

Angegeben durch: canRender im Interface IFeatureRenderer Parameter: featClass – Eine Referenz auf eine com.esri.arcgis.geodatabase.IFeatureClass (in)-Anzeige – Eine Referenz auf eine com.esri.arcgis.display.IDisplay (in) Rückgabe: Das Ergebnis Würfe : java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

VorbereitenFilter

Bemerkungen

Diese Methode wird vor der Draw-Methode aufgerufen und gibt dem Renderer die Möglichkeit, den Abfragefilter anzupassen, um zusätzliche Einschränkungen zu integrieren. Wenn beispielsweise ein bestimmtes Feld für den Renderer erforderlich ist, wird dieses Feld dem Filter hinzugefügt, um sicherzustellen, dass es während der Draw-Methode zugänglich ist.

Produktverfügbarkeit

Unterstützte Plattformen

Angegeben durch: PrepareFilter in der Schnittstelle IFeatureRenderer Parameter: fc – Eine Referenz auf eine com.esri.arcgis.geodatabase.IFeatureClass (in) queryFilter – Eine Referenz auf eine com.esri.arcgis.geodatabase.IQueryFilter (in) Würfe: java.io .IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

Bemerkungen

Diese Methode wird normalerweise vom Framework aufgerufen, um Funktionen für eine Anzeige zu rendern. Dies könnte eine Reaktion auf eine Aktualisierung der Karte sein. Diese Methode durchläuft normalerweise alle Features und rendert jedes Feature mit einem entsprechenden Symbol.

Ein einzelnes Feature wird normalerweise durch Aufrufen der Draw-Methode im IFeatureDraw des Features mit dem vom Renderer erstellten Symbol gezeichnet. Wenn Sie jedoch einen benutzerdefinierten Feature-Renderer schreiben, können Sie mit einer Reihe verschiedener Methoden alles zeichnen, was Sie möchten. Weitere Informationen finden Sie im Abschnitt zum Schreiben eines benutzerdefinierten Feature-Renderers in Erweitern von ArcObjects.

Damit komplexes Rendering mitten in einer Zeichnung abgebrochen werden kann, überprüft der Renderer normalerweise das TrackCancel-Objekt nach jedem Feature oder Satz von Features. Wenn eine Abbruchaktion aufgetreten ist, wird der Renderer beendet.

Es gibt drei Zeichenphasen: Auswahl, Annotation und Geographie. Diese Methode kann vom Framework bis zu dreimal aufgerufen werden. Mit Ausnahme der Auswahlphase wird diese Methode nur für eine bestimmte Zeichenphase aufgerufen, wenn der Aufruf des Frameworks an RenderPhase für diese Phase true zurückgibt.

Feature-Renderer zeichnen normalerweise nur Features während der Geografiephase, obwohl in einigen Fällen Features in der Annotationsphase gezeichnet werden. Nehmen Sie beispielsweise einen Fall, in dem proportionale Symbole für Polygon-Features gezeichnet werden. Der ProportionalSymbolRenderer zeichnet während der Geografiephase das Hintergrundfüllsymbol und während der Anmerkungsphase das Markersymbol mit proportionaler Größe.

Produktverfügbarkeit

Unterstützte Plattformen

Angegeben durch: Draw-In-Schnittstelle IFeatureRenderer Parameter: Cursor – Eine Referenz auf eine com.esri.arcgis.geodatabase.IFeatureCursor (in) drawPhase – Eine com.esri.arcgis.system.esriDrawPhase-Konstante (in) display – Eine Referenz auf eine com .esri.arcgis.display.IDisplay (in) trackCancel – Ein Verweis auf ein com.esri.arcgis.system.ITrackCancel (in) Löst aus: java.io.IOException – Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

GetSymbolByFeature

Produktverfügbarkeit

Angegeben durch: getSymbolByFeature in der Schnittstelle IFeatureRenderer Parameter: feature - Eine Referenz auf eine com.esri.arcgis.geodatabase.IFeature (in) Rückgabe: Eine Referenz auf eine com.esri.arcgis.display.ISymbol Löst: java.io.IOException - Wenn es Interop-Probleme gibt. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

IsRenderPhase

Produktverfügbarkeit

Angegeben durch: isRenderPhase in der Schnittstelle IFeatureRenderer Parameter: drawPhase – Eine com.esri.arcgis.system.esriDrawPhase-Konstante (in) Rückgabe: Das Ergebnis löst aus: java.io.IOException – Wenn Interop-Probleme vorliegen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

SetExclusionSetByRef

Beschreibung

Die Liste der Feature-IDs, die von der Zeichnung ausgeschlossen werden sollen.

Bemerkungen

Einige Feature-Renderer unterstützen IDataExclusion, wodurch Sie eine Where-Klausel erstellen können, um Features auszuschließen.

Der Ausschluss verhindert, dass Features gezeichnet werden. Um zu verhindern, dass Features gezeichnet und in Tabellen und in Abfrageergebnissen angezeigt werden, legen Sie eine Layer-Definitionsabfrage mit IFeatureLayerDefinition fest.

Produktverfügbarkeit

Unterstützte Plattformen

Angegeben durch: setExclusionSetByRef in der Schnittstelle IFeatureRenderer Parameter: rhs1 – Eine Referenz auf ein com.esri.arcgis.carto.IFeatureIDSet (in) Löst: java.io.IOException – Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

Aktualisieren

Angegeben durch: Update in Interface IFeatureRendererUpdate Parameter: pFeatureLayer – Ein Verweis auf einen com.esri.arcgis.carto.IFeatureLayer (in) Löst aus: java.io.IOException – Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

SetCurrentDrawLevel

Spezifiziert durch: setCurrentDrawLevel im Interface ILevelRenderer Parameter: rhs1 - Die rhs1 (in) Würfe: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

GetLevelArray

Angegeben durch: getLevelArray im Interface ILevelRenderer Rückgabe: Eine Variante Löst: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

GetLegendGroupCount

Bemerkungen

Die Anzahl der Legendengruppen wird durch die Implementierung des Renderers bestimmt, daher ist diese Eigenschaft schreibgeschützt. SimpleRenderer hat beispielsweise eine Gruppe, während ein BiUniqueValueRenderer eine beliebige Anzahl von Gruppen hat.

Produktverfügbarkeit

Unterstützte Plattformen

Angegeben durch: getLegendGroupCount in der Schnittstelle ILegendInfo Rückgabe: Die Anzahl Würfe: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

GetLegendGroup

Produktverfügbarkeit

Angegeben durch: getLegendGroup in Interface ILegendInfo Parameter: index - Der Index (in) Rückgabe: Eine Referenz auf eine com.esri.arcgis.carto.ILegendGroup Löst: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

GetLegendItem

Bemerkungen

Layer- oder Renderer-Legendeninformationen werden für die Anzeige in ArcMap-Legenden weiter formatiert. Ein Renderer kann diese Formatierung überschreiben, indem er ein LegendItem für diese Eigenschaft zurückgibt. ESRI-Renderer geben normalerweise nichts für diese Eigenschaft zurück. Mit dieser Konfiguration wird die Legendenformatierung zu einer Benutzer- oder Entwicklerauswahl für das Legendenobjekt.

Produktverfügbarkeit

Unterstützte Plattformen

Angegeben durch: getLegendItem in der Schnittstelle ILegendInfo Rückgabe: Eine Referenz auf ein com.esri.arcgis.carto.ILegendItem Löst: java.io.IOException - Bei Interop-Problemen. AutomationException – Wenn die ArcObject-Komponente eine Ausnahme auslöst.

IsSymbolsAreGraduated

Beschreibung

Gibt an, ob die für eine Layer- oder Renderer-Legende verwendeten Symbole je nach Größe variieren.

Bemerkungen

Beispielsweise gibt der Proportionalsymbol-Renderer für diese Eigenschaft True zurück.

Sie können diese Eigenschaft verwenden, um zwischen einem Layer, der mit abgestufter Farbe symbolisiert ist, oder einer abgestuften Symboltyp-Layer-Symbologie zu unterscheiden. Beide Symbolisierungen verwenden einen ClassBreaksRenderer, aber nur eine abgestufte Symbolsymbolisierung gibt True für diese Eigenschaft zurück.


Cursor mit ArcObjects freigeben? - Geografisches Informationssystem

COM-Klasse 'Raster'. Generiert 19.03.2015 13:20:42 von 'C:ArcGISCOMesriDataSourcesRaster.olb'

Beschreibung ' Eine speicherinterne Darstellung eines dynamischen Rasters, das Resampling und Reprojektion durchführen kann. ' Generator-Optionen: PromptForTypeLibraries = False ClashPrefix = esri_ LowerCaseMemberNames = True IDispatchOnly = False RetryOnReject = False AwtForOcxs = True ArraysAsObjects = False DontRenameSameMethods = False ImplementConflictingnameInterfaces = TrueMethInterface = TrueMethInterface

Feldzusammenfassung
Von der Schnittstelle com.esri.arcgis.geodatabase.IRaster geerbte Felder
IID, IIDaeec7d31_1533_11d2_8d25_0000f8780535, xxDummy
Von der Schnittstelle com.esri.arcgis.datasourcesraster.IRaster2 geerbte Felder
IID, IID0d668d08_92c1_4999_9a77_490790821969, xxDummy
Von der Schnittstelle com.esri.arcgis.datasourcesraster.IRasterEdit geerbte Felder
IID, IID32656121_4df9_45f3_bdd1_507d481e9b49, xxDummy
Von der Schnittstelle com.esri.arcgis.datasourcesraster.IRasterProps geerbte Felder
IID, IID4b7b1bd0_a705_11d2_8e30_00a0249480f0, xxDummy
Von der Schnittstelle com.esri.arcgis.datasourcesraster.IRasterBandCollection geerbte Felder
IID, IID7aca3d10_0629_11d2_8d24_0000f8780535, xxDummy
Von der Schnittstelle com.esri.arcgis.datasourcesraster.IRasterDefaultProps geerbte Felder
IID, IIDe3afbee0_2dad_11d3_a3f6_0004ac1b1d86, xxDummy
Von der Schnittstelle com.esri.arcgis.datasourcesraster.IRasterAnalysisProps geerbte Felder
IID, IID31e5ff30_2dad_11d3_a3f6_0004ac1b1d86, xxDummy
Von Schnittstelle geerbte Felder com.esri.arcgis.system.ISupportErrorInfo
IID, IIDdf0b3d60_548f_101b_8e65_08002b2bd119, xxDummy
Von der Schnittstelle com.esri.arcgis.geodatabase.ISaveAs2 geerbte Felder
IID, IIDba3968e7_a18b_416d_8140_e4a06068cf1b, xxDummy
Von der Schnittstelle com.esri.arcgis.geodatabase.ISaveAs geerbte Felder
IIDc7a92e97_597e_4a69_a872_29cb60b5e0db
Von der Schnittstelle com.esri.arcgis.system.IClone geerbte Felder
IID, IID9bff8aeb_e415_11d0_943c_080009eebecb, xxDummy
Von der Schnittstelle com.esri.arcgis.datasourcesraster.IPixelOperation geerbte Felder
IID, IID467f7216_8ac1_4aac_98bb_e656c135567a, xxDummy
Von der Schnittstelle com.esri.arcgis.datasourcesraster.IRawBlocks geerbte Felder
IID, IIDf20ff8ff_643a_4669_a465_e14a5095e7dd, xxDummy
Von der Schnittstelle com.esri.arcgis.datasourcesraster.IRasterResamplingControl geerbte Felder
IID, IIDdfef659c_012d_41ae_965d_5e1ec4841add, xxDummy
Konstrukteur-Zusammenfassung
Raster ()
Erstellt ein Raster mit ArcGIS Engine.
Raster (java.lang.Object obj)
Veraltet. Ab ArcGIS 9.2 durch normale Java-Casts ersetzt.
Raster theRaster = (Raster) obj
Zusammenfassung der Methode
Leere add (IRasterBand-Element, int-Index)
Fügt der Bandsammlung ein RasterBand hinzu.
Leere appendBand (IRasterBand-Element)
Fügt ein RasterBand an die Bandsammlung an.
Leere appendBands (IRasterBandCollection-Bänder)
Hängt eine Sammlung von RasterBands an die Bandsammlung an.
Leere zuweisen (IClone src)
Weist dem Empfänger die Eigenschaften von src zu.
boolesch kann bearbeiten ()
Prüft, ob dieses Raster bearbeitet werden kann.
boolesch canSaveAs (java.lang.String-Format)
Überprüft, ob es als neues persistentes Dataset eines bestimmten Formats gespeichert werden kann.
Leere klar ()
Entfernt alle Elemente in der Auflistung.
IRasterCursor createCursor ()
Weist einen Rastercursor für schnelles Rasterscannen zu.
IRasterCursor createCursorEx (IPnt pBlockSize)
Erstellt einen Cursor mit einer bestimmten Pixelblockgröße oder nativen Blockgröße.
IPixelBlock createPixelBlock()
Erstellen Sie einen kompatiblen Pixelblock.
IPixelBlock createPixelBlock (IPnt-Größe)
Weist einen PixelBlock der angeforderten Größe zu.
boolesch gleich (java.lang.Object o)
Vergleichen Sie dieses Objekt mit einem anderen
Leere löschen (IPnt pTlc, IPixelBlock pPixelBlock)
Löscht einen PixelBlock ab einer bestimmten oberen linken Ecke.
IClone esri_clone ()
Klont den Empfänger und weist das Ergebnis *clone zu.
Leere bündig ()
Löscht gepufferte Daten.
IUmschlag getAnalysisExtent ()
Die Analyseausdehnung des Rasters.
ITable getAttributeTable()
Die Rasterwertattributtabelle.
IRasterBand getBandByName (java.lang.String-Name)
Ein RasterBand hat seinen Namen.
int getBandIndex (java.lang.String-Name)
Der Index eines RasterBands mit seinem Namen.
IEnumRasterBand getBands ()
Alle Bänder in der Auflistung als Schnittstelle zum RasterBands-Enumeratorobjekt.
statische java.lang.String getClsid()
getClsid.
IRasterColormap getColormap ()
Die Farbkarte.
int getCount()
Die Anzahl der Bänder in der Sammlung.
IUmschlag getDefaultIntersectExtent()
Die standardmäßige Schnittmenge.
doppelt getDefaultPixelHeight()
Die Standardpixelgröße in Y.
doppelt getDefaultPixelWidth ()
Die Standardpixelgröße in X.
ISpatialReferenz getDefaultSpatialReference ()
Der Standard-Raumbezug.
IUmschlag getDefaultUnionExtent()
Die standardmäßige Unionsausdehnung.
IUmschlag getExtent()
Die Ausdehnung des Rasters.
IGeodataXform getGeodataXform()
Die Geodatentransformation.
IGeoTransformationOperationSet getGeoTransformations ()
Der Satz der anzuwendenden geografischen Transformationen.
int getHeight()
Höhe in Pixel.
com.esri.arcgis.interop.Dispatch getJintegraDispatch ()
Veraltet. Nur für den internen Gebrauch.
java.lang.Object getNoDataValue()
Datenwert, der verwendet wird, um ungültige oder ausgeschlossene Daten anzuzeigen.
IPixelFilter getPixelFilter()
Der Pixelfilter zum Filtern von Pixelwerten.
doppelt getPixelHeight()
Die Pixelhöhe in Bodenauflösung.
int getPixelType()
Datentyp der Pixel.
java.lang.Object getPixelValue (int iBand, int iColumn, int iRow)
Ruft den Pixelwert für ein bestimmtes Band in einer bestimmten Spalte und Zeile ab.
doppelt getPixelWidth ()
Die Pixelbreite in Bodenauflösung.
IRasterDataset getRasterDataset()
Das übergeordnete Raster-Dataset.
IRasterInfo getRasterInfo()
Die Rasterinformationen.
IRasterXformer getRasterXformer()
Der Rastertransformator.
int getResampleMethod ()
Beim Lesen von Pixeln verwendete Interpolationsmethode.
int getResamplingHint ()
Der Raster-Resampling-Hinweis.
ISpatialReferenz getSpatialReference ()
SpatialReference des Rasters.
int getWidth ()
Breite in Pixel.
int Hash-Code ()
der Hashcode für dieses Objekt
Leere interfaceSupportsErrorInfo (GUID-riid)
SchnittstelleSupportsErrorInfo
boolesch isEqual (IClone other)
Zeigt an, ob der Empfänger und andere die gleichen Eigenschaften haben.
boolesch isIdentical (IClone other)
Zeigt an, ob der Empfänger und andere das gleiche Objekt sind.
boolesch isInteger ()
Gibt an, ob die Daten ganzzahlig sind.
IRasterBand item (int bandIndex)
Gibt ein RasterBand mit seinem Index zurück.
Leere makePermanent ()
Macht ein temporäres Raster zu einem permanenten Raster-Dataset.
Leere mapToPixel (double x, double y, int[] pColumn, int[] pRow)
Wandelt eine Position (x, y) im Kartenbereich in einen Pixelbereich um.
IPnt mittlere Zellengröße ()
Gibt die ungefähre Zellengröße des Rasters zurück.
Leere pixelToMap (int iColumn, int iRow, double[] pX, double[] pY)
Wandelt eine Position (Spalte, Zeile) im Pixelbereich in einen Kartenbereich um.
Leere lesen (IPnt tlc, IPixelBlock-Block)
Lesen Sie einen Pixelblock, beginnend in der oberen linken Ecke.
Leere readBlock (int tx, int ty, int level, IPixelBlock pPixelBlock)
Liest einen rohen Pixelblock.
Leere Aktualisierung ()
Aktualisiert das zugeordnete RasterDataset.
Leere Veröffentlichung ()
Geben Sie ein Raster frei.
Leere entfernen (int-Index)
Entfernt ein Element aus der Auflistung.
Leere zurücksetzen ()
Setzt das Raster auf den Standardzustand zurück
IDatensatz saveAs (java.lang.String neuer_name, IWorkspace worksp, java.lang.String-Format)
Erstellt ein neues persistentes RasterDataset mit den Bändern in der Sammlung.
IRasterDataset saveAsRasterDataset (java.lang.String-Name, IWorkspace-Arbeitsbereich, java.lang.String-Format, IRasterStorageDef storageDef)
Erstellt ein neues persistentes Raster-Dataset eines bestimmten Formats und einer angegebenen Speicherdefinition.
Leere setAnalysisExtentByRef (IEnvelope ppExtent)
Die Analyseausdehnung des Rasters.
Leere setAttributeTableByRef (ITable ppVAT)
Die Rasterwertattributtabelle.
Leere setColormapByRef (IRasterColormap ppColormap)
Die Farbkarte.
Leere setExtent (IEnvelope ppExtent)
Die Ausdehnung des Rasters.
Leere setGeodataXform (IGeodataXform ppXform)
Die Geodatentransformation.
Leere setGeoTransformationsByRef (IGeoTransformationOperationSet ppGeoXforms)
Der Satz der anzuwendenden geografischen Transformationen.
Leere setHeight (int pVal)
Höhe in Pixel.
Leere setNoDataValue (java.lang.Object pVal)
Datenwert, der verwendet wird, um ungültige oder ausgeschlossene Daten anzuzeigen.
Leere setPixelFilterByRef (IPixelFilter ppFilter)
Der Pixelfilter zum Filtern von Pixelwerten.
Leere setPixelHeight (doppelte Höhe)
Die Pixelhöhe in Bodenauflösung.
Leere setPixelType (int pVal)
Datentyp der Pixel.
Leere setPixelWidth (doppelte Breite)
Die Pixelbreite in Bodenauflösung.
Leere setResampleMethod (int val)
Beim Lesen von Pixeln verwendete Interpolationsmethode.
Leere setResamplingHint (int pHint)
Der Raster-Resampling-Hinweis.
Leere setSpatialReference (ISpatialReference ppSpref)
SpatialReference des Rasters.
Leere setWidth (int pVal)
Breite in Pixel.
doppelt toMapX (int iColumn)
Ordnet eine Pixelspalte der x-Koordinate im Kartenbereich zu.
doppelt toMapY (int iRow)
Ordnet eine Pixelzeile der y-Koordinate im Kartenraum zu.
int toPixelColumn (doppelt x)
Ordnet der Pixelspalte eine x-Koordinate im Kartenbereich zu.
int toPixelRow (doppelt y)
Ordnet der Pixelzeile eine y-Koordinate im Kartenbereich zu.
Leere schreiben (IPnt pTlc, IPixelBlock pPixelBlock)
Schreibt einen PixelBlock, der an einer bestimmten oberen linken Ecke beginnt.
Leere writeBlock (int tx, int ty, int level, IPixelBlock pPixelBlock)
Schreibt einen Rohpixelblock.
Von der Klasse java.lang.Object geerbte Methoden
klonen, abschließen, getClass, benachrichtigen, benachrichtigenAll, toString, warten, warten, warten

Raster

Löst: java.io.IOException - bei Interop-Problemen java.net.UnknownHostException - bei Interop-Problemen

Raster

Konstruieren Sie ein Raster mithilfe eines Verweises auf ein solches Objekt, das von ArcGIS Engine oder Server zurückgegeben wird. Dies ist semantisch äquivalent zum Casten von obj in Raster .


Geographische Informationssystemtechnik

3 – Öffnen Sie Visual Studio (z. B. 2012) und erstellen Sie ein neues Projekt:

4 – Wählen Sie auf der Registerkarte “Andere Sprachen” die Option Python, da wir den CPython-Interpreter verwenden und stellen Sie die unten gezeigten Eigenschaften ein (ändern Sie die Lösung und den Projektnamen entsprechend) und klicken Sie zur Bestätigung auf OK.

5 – Visual Studio erstellt die Projektmappe und das Projekt einschließlich der Datei PythonExample.py.

6 – Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das PythonExample-Projekt und erstellen Sie einen neuen Ordner.


Cursor mit ArcObjects freigeben? - Geografisches Informationssystem

COM-Klasse 'SimpleRenderer'. Generiert 19.03.2015 13:20:41 von 'C:ArcGISCOMesriCarto.olb'

Beschreibung ' Ein einfacher Renderer, bei dem für jedes Feature dasselbe Symbol gezeichnet wird. ' Generator-Optionen: PromptForTypeLibraries = False ClashPrefix = esri_ LowerCaseMemberNames = True IDispatchOnly = False RetryOnReject = False AwtForOcxs = True ArraysAsObjects = False DontRenameSameMethods = False ImplementConflictingnameInterfaces = TrueMethInterface = TrueMethInterface

Feldzusammenfassung
statisch lang serialVersionUID
Von der Schnittstelle com.esri.arcgis.carto.ISimpleRenderer geerbte Felder
IID, IIDf3435800_5779_11d0_98bf_00805f7ced21, xxDummy
Von der Schnittstelle com.esri.arcgis.carto.ILevelRenderer geerbte Felder
IID, IIDdc3d8097_c1ed_11d2_9f21_00c04f6bc709, xxDummy
Von der Schnittstelle com.esri.arcgis.system.IPropertySupport geerbte Felder
IID, IID8a11ad55_2f4f_11d3_9fa0_00c04f6bc6a5, xxDummy
Von der Schnittstelle com.esri.arcgis.system.IPersistStream geerbte Felder
IID, IID000000109_0000_0000_c000_000000000046, xxDummy
Von der Schnittstelle com.esri.arcgis.system.IPersist geerbte Felder
IID0000010c_0000_0000_c000_000000000046
Von der Schnittstelle com.esri.arcgis.carto.IRotationRenderer geerbte Felder
IID, IID2f2047a6_42bd_11d2_aafd_00c04fa334b3, xxDummy
Von Schnittstelle geerbte Felder com.esri.arcgis.carto.IRotationRenderer2
IID, IIDd85e5b0c_68b3_48c8_b8d2_087806273b47, xxDummy
Von der Schnittstelle com.esri.arcgis.carto.ISizeRenderer geerbte Felder
IID, IID5ba3418a_4ba5_431a_b879_f2539c7be5ff, xxDummy
Von der Schnittstelle com.esri.arcgis.carto.ITransparencyRenderer geerbte Felder
IID, IIDfb20665d_db1c_11d2_9f2e_00c04f6bc709, xxDummy
Von der Schnittstelle com.esri.arcgis.display.IDisplayAdmin geerbte Felder
IID, IID12e361f0_1907_11d3_80c7_0080c79f0371, xxDummy
Von der Schnittstelle com.esri.arcgis.carto.ILookupSymbol geerbte Felder
IID, IID736a377d_a1eb_4ce4_84b9_90f9588374c2, xxDummy
Von der Schnittstelle com.esri.arcgis.system.IXMLSerialize geerbte Felder
IID, IIDc8545045_6615_48e3_af27_52a0e5fc35e2, xxDummy
Von der Schnittstelle com.esri.arcgis.system.IXMLVersionSupport geerbte Felder
IID, IID72ca65b9_13de_48b7_8443_717b69b72a99, xxDummy
Von der Schnittstelle com.esri.arcgis.carto.IExportSupport geerbte Felder
IID, IIDf6448010_3cc8_435e_b042_540e9a328f3b, xxDummy
Konstrukteur-Zusammenfassung
SimpleRenderer ()
Erstellt einen SimpleRenderer mit ArcGIS Engine.
SimpleRenderer (java.lang.Object obj)
Veraltet. Ab ArcGIS 9.2 durch normale Java-Casts ersetzt.
SimpleRenderer theSimpleRenderer = (SimpleRenderer) obj
Zusammenfassung der Methode
boolesch gilt (java.lang.Object pUnk)
Gibt an, ob der Empfänger das angegebene Objekt zu einem bestimmten Zeitpunkt anwenden kann.
java.lang.Object anwenden (java.lang.Object newObject)
Wendet die angegebene Eigenschaft auf den Empfänger an und gibt das alte Objekt zurück.
boolesch canApply (java.lang.Object pUnk)
Gibt an, ob der Empfänger das angegebene Objekt zu diesem Zeitpunkt anwenden kann.
boolesch canRender (IFeatureClass featClass, IDisplay-Anzeige)
Gibt an, ob die angegebene Feature-Class auf der angegebenen Anzeige gerendert werden kann.
Leere deserialize (IXMLSerializeData-Daten)
Deserialisiert ein Objekt aus XML.
Leere draw (IFeatureCursor-Cursor, int drawPhase, IDisplay display, ITrackCancel trackCancel)
Zeichnet Features vom angegebenen Cursor auf der angegebenen Anzeige.
boolesch gleich (java.lang.Object o)
Vergleichen Sie dieses Objekt mit einem anderen
Leere getClassID (GUID[] pClassID)
getClassID
statische java.lang.String getClsid()
getClsid.
java.lang.Object getCurrent (java.lang.Object pUnk)
Das aktuell verwendete Objekt.
java.lang.String getDescription ()
Beschreibung des Renderers.
com.esri.arcgis.interop.Dispatch getJintegraDispatch ()
Veraltet. Nur für den internen Gebrauch.
java.lang.String getLabel()
Renderer-Label.
ILegendGroup getLegendGroup (int-Index)
Legendengruppe am angegebenen Index.
int getLegendGroupCount()
Anzahl der im Objekt enthaltenen Legendengruppen.
ILegendItem getLegendItem()
Optional.
java.lang.Object getLevelArray()
Array, das alle von den Symbolen verwendeten Ebenen enthält (Symbole ohne Ebene erhalten eine Ebene von 0).
java.lang.String getMinNamespaceSupported ()
Der minimale Namensraum, in den die Klasse serialisieren kann (zB der 90-Namensraum).
java.lang.String getRotationField()
Rotationsfeld.
int getRotationType()
Rotationstyp.
Leere getSizeMax (_ULARGE_INTEGER[] pcbSize)
getSizeMax
java.lang.String getSizeRendererExpression()
Ruft den Größenausdruck ab.
int getSizeRendererFlags ()
Ruft Größenflags ab, die aus Enumerationen esriSizeRendererFlags bestehen.
Leere getSizeRendererRandomRange (double[] pMinSize, double[] pMaxSize)
Ruft den Größenbereich für die zufällige Größenanpassung ab.
ISymbol getSymbol()
Symbol zum Zeichnen jedes Features.
ISymbol getSymbolByFeature (IFeature-Funktion)
Symbol zum Zeichnen des angegebenen Features.
Leere getSymbolRotation3DExpressions (java.lang.String[] pExpressionX, java.lang.String[] pExpressionY, java.lang.String[] pExpressionZ)
Ruft Ausdrücke für die Drehung um jede Achse ab.
int getSymbolRotation3DFlags()
Ruft Rotationsflags ab, die aus Enumerationen esriSymbolRotation3DFlags bestehen.
Leere getSymbolRotation3DFlags2 (int[] pFlagX, int[] pFlagY, int[] pFlagZ)
Ruft ein Flag für jede Achse ab.
Leere getSymbolRotation3DRandomRanges (double[] pMinRotationX, double[] pMinRotationY, double[] pMinRotationZ, double[] pMaxRotationX, double[] pMaxRotationY, double[] pMaxRotationZ)
Ruft den Rotationsbereich für jede Achse ab (für zufällige Rotation).
int getSymbolRotation3DRotationTypeZ ()
Ruft den Rotationstyp (geografisch oder arithmetisch) um die Z-Achse ab (hartcodierte Arithmetik um andere Achsen).
java.lang.String getTransparencyField ()
Transparenzfeld.
int Hash-Code ()
der Hashcode für dieses Objekt
Leere ist dreckig ()
ist dreckig
boolesch isRenderPhase (int drawPhase)
Gibt an, ob der Renderer die angegebene Zeichenphase verwendet.
boolesch isSymbolsAreGraduated ()
Zeigt an, ob Symbole abgestuft sind.
boolesch isUsesFilter()
Gibt an, ob das aktuelle Objekt mithilfe eines Filters gezeichnet wird.
Leere laden (IStream-pstm)
Belastung
ISymbol lookupSymbol (boolescher firstPass, IFeature-Funktion)
Gibt einen Verweis auf das Symbol des Renderers für das Eingabe-Feature zurück.
Leere PrepareFilter (IFeatureClass fc, IQueryFilter queryFilter)
Bereitet den Abfragefilter für den Renderingprozess vor.
Leere readExternal (java.io.ObjectInput in)
Leere Veröffentlichung ()
Geben Sie einen SimpleRenderer frei.
Leere resetLookupSymbol (ISymbol-Symbol)
Setzt temporäre Optionen auf dem Symbol zurück (z.B.
Leere speichern (IStream pstm, int fClearDirty)
speichern
Leere serialisieren (IXMLSerializeData-Daten)
Serialisiert ein Objekt in XML.
Leere setCurrentDrawLevel (int rhs1)
Die aktuelle Zeichnungsstufe (auf -1 gesetzt, um alle Stufen zu zeichnen).
Leere setDescription (java.lang.String-Text)
Beschreibung des Renderers.
Leere setExclusionSetByRef (IFeatureIDset rhs1)
Eine Objektreferenz auf einen temporären Zeichnungsausschlusssatz.
Leere setExportInfoByRef (IFeatureExportInfoGenerator rhs1)
Das Hilfsobjekt zum Generieren von Exportinformationen.
Leere setLabel (java.lang.String-Label)
Renderer-Label.
Leere setRotationField (java.lang.String fieldName)
Rotationsfeld.
Leere setRotationType (int-Typ)
Rotationstyp.
Leere setSizeRendererExpression (java.lang.String pExpression)
Ruft den Größenausdruck ab.
Leere setSizeRendererFlags (int pFlags)
Ruft Größenflags ab, die aus Enumerationen esriSizeRendererFlags bestehen.
Leere setSizeRendererRandomRange (double minSize, double maxSize)
Legt den Größenbereich für zufällige Größen fest.
Leere setSymbolByRef (ISymbol-Symbol)
Symbol zum Zeichnen jedes Features.
Leere setSymbolRotation3DExpressions (java.lang.String AusdruckX, java.lang.String AusdruckY, java.lang.String AusdruckZ)
Legt Ausdrücke für die Drehung um jede Achse fest.
Leere setSymbolRotation3DFlags (int pFlags)
Ruft Rotationsflags ab, die aus Enumerationen esriSymbolRotation3DFlags bestehen.
Leere setSymbolRotation3DFlags2 (int flagX, int flagY, int flagZ)
Setzt ein Flag für jede Achse.
Leere setSymbolRotation3DRandomRanges (double minRotationX, double minRotationY, double minRotationZ, double maxRotationX, double maxRotationY, double maxRotationZ)
Legt den Rotationsbereich für jede Achse fest (für zufällige Rotation).
Leere setSymbolRotation3DRotationTypeZ (int pType)
Ruft den Rotationstyp (geografisch oder arithmetisch) um die Z-Achse ab (hartcodierte Arithmetik um andere Achsen).
Leere setSymbolsAreGraduated (boolesche SymboleAreGraduated)
Zeigt an, ob Symbole abgestuft sind.
Leere setTransparencyField (java.lang.String fieldName)
Transparenzfeld.
Leere writeExternal (java.io.ObjectOutput-Ausgabe)
Von der Klasse java.lang.Object geerbte Methoden
klonen, abschließen, getClass, benachrichtigen, benachrichtigenAll, toString, warten, warten, warten

SerialVersionUID

EinfachRenderer

Löst: java.io.IOException - bei Interop-Problemen java.net.UnknownHostException - bei Interop-Problemen

SimpleRenderer

Erstellen Sie einen SimpleRenderer mit einem Verweis auf ein solches Objekt, das von ArcGIS Engine oder Server zurückgegeben wird. Dies entspricht semantisch der Umwandlung von obj in SimpleRenderer .


Der Sandkasten

Die ESRI-Produkte ArcGIS Explorer, ArcGIS Desktop und ArcGIS Engine werden mit einer äußerst nützlichen C-DLL namens Projection Engine Library ausgeliefert. Die Projektions-Engine wird von diesen Produkten verwendet, um geodätische (oder ellipsoide) Berechnungen durchzuführen.

Die Projektions-Engine ist vollständig in der SDE-C-API dokumentiert, und auf der EDN-Website gibt es einen Beispiel-VB6-Wrapper für zwei Funktionen.

Das VB6-Beispiel kann mithilfe von DLLImportAttribute einfach nach C# portiert werden. Es gibt jedoch zwei Nachteile bei der Verwendung von DLLImport.

    s werden bei jedem Aufruf einer Funktion in den Speicher geladen,
  1. Der Datei- und Pfadname der DLL wird zur Entwurfszeit hart codiert.

Mit .NET 2.0 wurde der Marshal-Klasse jedoch eine neue Methode namens GetDelegateForFunctionPointer hinzugefügt, um eine späte Bindung zu ermöglichen. Dies bedeutete, dass externe DLLs zur Laufzeit erkannt und geladen werden konnten.

Unten ist ein C#-Wrapper für die ESRI Projection Engine. Der Wrapper ist als Singleton entwickelt, sodass die DLL nur einmal pro Anwendungsinstanz geladen wird. Darüber hinaus wird der Speicherort der Projektionsmodulbibliothek zur Laufzeit aus der Registrierung ermittelt.

Hier ist ein Beispiel, in dem die Projektions-Engine Singleton für ArcGIS Explorer verwendet wird, um die geodätische Entfernung zwischen London und Paris zu berechnen. Die geodätische Distanz ist die kürzeste Distanz zwischen zwei Punkten auf der Oberfläche eines Ellipsoids.

Hier ist der Quellcode zu den Wrappern.

Bitte beachten Sie, dass der Code und die Methodik in diesem Beitrag nicht von ESRI unterstützt oder unterstützt werden. Verwenden Sie diesen Code auf eigene Gefahr.

ArcGIS Diagrammer - Reverse Engineering einer Geodatabase zu einem Diagramm

In diesem Beitrag wird beschrieben, wie Sie in vier einfachen Schritten ein druckfertiges Diagramm Ihrer Geodatabase erstellen.

In dieser Übung wird ArcGIS Diagrammer (kostenlos) verwendet, das von ArcScripts erhältlich ist. Voraussetzungen für ArcGIS Diagrammer sind ArcGIS Desktop 9.2 und Microsoft .NET Framework 2.0.

Schritt 1: Exportieren einer vorhandenen Geodatabase in ein ESRI-XML-Workspace-Dokument

Klicken Sie mit der rechten Maustaste auf eine Personal-Geodatabase, File-Geodatabase oder eine SDE-Verbindung. Wählen > XML-Arbeitsbereich-Dokument exportieren.

Wählen Nur Schema und geben Sie einen Ausgabedateinamen ein. Beispielsweise C:TempMontgomery.xml. Klicken Nächster.

Klicken Fertig um den Export zu starten.

Schritt 2: Laden Sie das XML-Workspace-Dokument in ArcGIS Diagrammer

Starten Sie ArcGIS Diagrammer, indem Sie auf Folgendes klicken:
START > Alle Programme > ArcGIS > ArcGIS Diagrammer > ArcGIS Diagrammer

Ziehen Sie die von ArcCatalog erstellte XML-Datei per Drag & Drop in den ArcGIS Diagrammer-Canvas.

ArcGIS Diagrammer rendert alle Geodatabase-Objekte und -Zuordnungen. Sie können den Diagrammmaßstab ändern, um zum Beispiel den Zoomfaktor auf 25 % zu ändern Ansicht > Zoom > 25 %.

Schritt 3: Anordnen von Geodatabase-Objekten

Alle Geodatabase-Objekte können Ihren Anforderungen entsprechend neu angeordnet werden. Außerdem können einige Objekte wie Subtypes, Domänen und Feature-Classes erweitert werden, um zusätzliche Details anzuzeigen.

Schritt 4: Drucken Sie das Diagramm

Vor dem Drucken oder Plotten des Diagramms möchten Sie möglicherweise einen Drucker/Plotter und ein Papierformat angeben. Klicken Datei > Druckeinrichtung.

Wählen Sie im Dialogfeld Druckereinrichtung einen Drucker und ein Papierformat aus.

Klicken Sie abschließend auf Datei > Drucken um das Diagramm zum Drucken/Plotten zu senden.

Zugriff auf ESRI-Stildateien mit ADO.NET

Die ESRI-Produkte ArcGIS Engine, ArcGIS Desktop und ArcGIS Server verwenden Style-Dateien zum Speichern und Verwalten von Symbolsammlungen. Ein Symbol ist eine Grafik, die verwendet wird, um ein geografisches Feature oder eine Feature-Klasse darzustellen. Styles enthält benannte und kategorisierte Symbole für verschiedene geografische Einheiten wie Punkte, Linien und Polygone.

ArcGIS Engine- und ArcGIS Desktop-Style-Dateien sind Microsoft Access-Datenbanken mit einem Stil Dateierweiterung.

ArcGIS Server-Style-Dateien verwenden einen proprietären Dateityp und haben eine Serverstil Dateierweiterung. Entwickler können nur die ArcObjects-API verwenden, um auf diese Datei zuzugreifen.

ArcGIS Engine-Entwickler können SymbologyControl verwenden, um in einem Server-Style enthaltene Symbole zu durchsuchen. Während ArcGIS Desktop-Entwickler die Desktop-Dialogfelder wie StyleManagerDialog, SymbolEditor und SymbolPickerDialog wiederverwenden können.

In diesem Beitrag präsentiere ich ein Beispiel, das zeigt, wie Sie mit ADO.NET auf Dateien im ESRI-Stil zugreifen. Das Beispiel zeigt auch, wie Sie ein ESRI-Symbol in eine .NET-Bitmap konvertieren. Dieses Beispiel kann für Entwickler nützlich sein, die Folgendes tun möchten:
1) auf Styles zugreifen, ohne ArcObjects zu verwenden, oder
2) benutzerdefinierte Informationen in einer Datei im ESRI-Stil speichern oder
3) Konvertieren von ESRI-Symbolen in Bitmaps oder
4) Erstellen Sie einen benutzerdefinierten Symbolbrowser.

Bitte beachten Sie, dass der Code und die Methodik in diesem Beitrag nicht von ESRI unterstützt oder unterstützt werden. Verwenden Sie diesen Code auf eigene Gefahr.

Dieses Beispiel wurde in C# mit Microsoft Visual Studio 2005 entwickelt. Die Windows-Anwendung besteht aus vier Steuerelementen und einer Komponente. Diese sind:
1) textBox1: Pfadname zur Style-Datei,
2) button1: Öffnet die Style-Datei und fügt Einträge zum ListView hinzu,
3) listView1: Symbolsymbol und Beschreibungen anzeigen,
4) axLicenseControl1: Checkt eine ArcGIS Engine oder ArcGIS Desktop zur Laufzeit aus,
5) imageList1: Speichern Sie eine Sammlung von Bildern für die ListView-Elemente.

Wenn das Formular geladen wird:
1) Der Stil TextBox wird ein Standardpfadname hinzugefügt,
2) Der ListView werden vier Spalten hinzugefügt,
3) Der Ansichtsstil der ListView ist auf Details eingestellt,
4) Die ImageList wird der SmallImageList-Eigenschaft der ListView zugewiesen.

Die Anwendung sieht nach dem Laden so aus.

Wenn Sie diese Anwendung im Debugmodus ausführen, kann Microsoft Visual Studio 2005 eine PInvokeStackImbalance-Ausnahme auslösen. Dies kann umgangen werden, indem die Anwendung normal aus der ausführbaren Datei ausgeführt wird oder indem diese Ausnahme deaktiviert wird. Diese und andere Debug-Ausnahmen können über das Ausnahmefenster (>-Ausnahmen debuggen. ).

Um die Punkt-, Linien- und Polygonsymbole aus dem Stil in die ListView zu laden, klicken Sie auf GEHEN!

Hier ist der Quellcode für das Beispiel:

Das generische ESRI-Tool zum Abrufen von Positionen

Das Produkt ArcGIS Desktop von ESRI umfasst die Anwendungen ArcCatalog, ArcMap, ArcScene und ArcGlobe. Die Benutzeroberflächen aller vier Anwendungen können von Entwicklern stark angepasst werden, beispielsweise kann ein Entwickler benutzerdefinierte Symbolleisten und Schaltflächen bereitstellen.

Ein Knopf (oder Befehl in der ESRI-Terminologie) ist eine COM-Klasse, die die ICommand-Schnittstelle implementiert. Einige Befehle erfordern eine geografische Interaktion, beispielsweise das Klicken auf ein Land in einer Weltkarte. Diese Befehle müssen die ITool-Schnittstelle implementieren.

Normalerweise erstellen Entwickler für jedes Projekt spezifische Befehlssätze. In diesem Artikel werde ich einen sofort einsatzbereiten Befehl namens Generic Get Point Tool diskutieren, der für die Interaktion zwischen Karte und Globus verwendet werden kann. Die Verwendung dieses Befehls in zukünftigen Projekten kann Ihre Entwicklungszeit verkürzen.

Um diesen Befehl zu demonstrieren, habe ich ein ArcGIS Engine-basiertes Windows-Anwendungsbeispiel mit Microsoft .Net Framework 2.0 erstellt. Die Anwendung besteht aus einer Karte, einer unsichtbaren Symbolleiste und einer Schaltfläche, die das Generic Get Point Tool aktiviert. Nachdem auf die Karte geklickt wurde, zeigt ein Meldungsfeld die Kartenkoordinaten des angeklickten Standorts an und deaktiviert dann das Werkzeug.

Die Windows-Beispielanwendung (C#) wurde mit Microsoft Visual Studio 2005 erstellt. Sie besteht aus einem Kartensteuerelement, einem Symbolleistensteuerelement, einem Lizenzsteuerelement und einer Schaltfläche. Das Kartensteuerelement wird der Buddy-Eigenschaft des Symbolleistensteuerelements zugewiesen, und dem Kartensteuerelement wird ein Kartendokument zum Laden zur Laufzeit zugewiesen.

Wenn das Formular geladen wird, wird die Generisches Tool zum Abrufen von Punkten wird der Symbolleiste hinzugefügt, und durch Umwandeln des Befehls in den IToolPositionInitializer wird das Formular als Callback zugewiesen (da es IToolPositionCallback unterstützt).

Wenn auf die Schaltfläche geklickt wird, befindet sich das Generic Get Point Tool auf der Symbolleiste und wird dann als aktuelles Tool zugewiesen. Dies aktiviert im Wesentlichen das Werkzeug und deaktiviert das zuvor aktive Werkzeug (falls vorhanden).

Wenn der Benutzer bei aktiviertem Generic Get Point Tool auf die Kartenanzeige klickt, wird der Befehl die MouseClicked-Methode auf der IToolPositionCallback-Schnittstelle aufgerufen. Im Beispiel implementiert das Formular diese Schnittstelle und zeigt ein Meldungsfeld mit den Kartenkoordinaten an. Anstatt das Tool aktiv zu lassen, deaktivieren Sie das Tool effektiv, indem Sie IToolbarControl::CurrentTool (oder IMapControl::CurrentTool) auf null setzen.

ArcGIS Tablet-Editor

Auf der ArcScripts-Website von ESRI wurde kürzlich eine Reihe von Befehlen für ArcMap veröffentlicht, die auf die Fähigkeiten eines Tablet-PCs abzielen. Insbesondere digitale Tinte, Texterkennung, Text-to-Speech (TTS) und Spracherkennung.

Der ArcGIS Tablet Editor kann hier heruntergeladen werden:
http://arcscripts.esri.com/details.asp?dbid=14921 (vollständiger Quellcode bereitgestellt)

Voraussetzungen:

Wie installiert man:

Laden Sie die ZIP-Datei von ArcScripts herunter
Entpacken Sie den Download
Doppelklicken Sie auf die "msi"-Datei. Folgen Sie den Anweisungen des Installationsassistenten.

Wie man anfängt?

ArcMap starten (Windows: > ArcGIS > ArcMap starten)
Zeigen Sie die Symbolleiste des Tablet-Editors an (ArcMap: View > Toolbars > Tablet Editor)
Laden Sie ein Kartendokument. Um einige der erweiterten Funktionen zu zeigen, fügen Sie eine oder mehrere Ebenen mit einem einzigartigen Renderer hinzu.

Demo-Screenshots:

Das Funktionsauswahl-Tool
Um Features mit Freihand auszuwählen, klicken Sie zuerst auf einen Layer im ArcMap-Inhaltsverzeichnis und aktivieren Sie dann das Feature-Auswahlwerkzeug auf der Symbolleiste des Tablet-Editors. Ziehen Sie mit Ihrem Zeigegerät die Maus über den Bildschirm. Sobald Sie die Maus/den Stift anheben, werden Features aus der ausgewählten Ebene ausgewählt (wenn sie sich innerhalb der Tinte befinden).

Das verbale Bemaßungstool
Klicken Sie auf das Werkzeug „Verbale Bemaßung“ (drittes von links) in der Symbolleiste des Tablet-Editors. Ziehen Sie eine gerade Tintenlinie auf dem Bildschirm. Der Computer spricht beispielsweise die Länge in den aktuellen Karteneinheiten. "Vierundachtzig Meter". Längen werden auf die nächste Karteneinheit gerundet.

Das Tool zum Hinzufügen von Funktionen
Starten Sie nun eine Bearbeitungssitzung (klicken Sie in der Editor-Symbolleiste auf Editor > Bearbeiten starten). Wählen Sie im ArcMap-Inhaltsverzeichnis den Layer aus, dem Sie Features hinzufügen möchten. Im obigen Screenshot möchte der Benutzer weitere Lichtmasten hinzufügen. Klicken Sie auf das Tool zum Hinzufügen von Features (erste Schaltfläche in der Symbolleiste des Tablet-Editors) und zeichnen Sie kleine Markierungen auf dem Bildschirm wie oben gezeigt. Wenn Sie fertig sind, machen Sie mit Ihrem Zeigegerät eine Geste nach oben. Dadurch werden die kleinen Tintenstriche zu neuen Lichtmasten.

Das Attributübertragungstool
Mit dem Werkzeug "Feature hinzufügen" im vorherigen Schritt wurden vier neue Lichtmasten hinzugefügt. Die neuen Lichtmasten übernahmen alle Standardwerte, die der übergeordneten Feature-Class (und/oder dem Subtype) zugeordnet waren. Klicken Sie bei weiterhin ausgewähltem Light Poles-Layer im ArcMap-Inhaltsverzeichnis auf das Attributübertragungswerkzeug (zweite Schaltfläche auf der Symbolleiste des Tablet-Editors). Zeichne zwei Tintenringe, von denen jeder einen Lichtmast umkreist. Wenn die Rechts-nach-oben-Gesten verwendet werden, werden Attribute von dem mit dem ersten Tintenstrich ausgewählten Pol auf den/die mit dem zweiten Tintenstrich ausgewählten Pol(en) übertragen.

Der Tinten-Updater
Wählen Sie erneut, während Sie sich noch in einer Bearbeitungssitzung befinden und der Light Poles-Layer im ArcMap-Inhaltsverzeichnis ausgewählt ist, mit dem Feature-Auswahlwerkzeug (wie zuvor gezeigt) einige Pole aus. Klicken Sie nun auf das Ink Updater-Tool (die fünfte Schaltfläche in der Symbolleiste des Tablet-Editors). Da der ausgewählte Layer einen einzigartigen Renderer verwendet, kann der Benutzer die ausgewählten Pole neu klassifizieren, indem er "f" schreibt, gefolgt von einer Rechts-nach-oben-Geste. Der Tablet-Editor verwendet den Freihandtext, um die erste übereinstimmende Beschreibung (sofern vorhanden) in der Ebene zu finden und die Attribute entsprechend zu aktualisieren. Wenn der Layer keinen eindeutigen Renderer hat oder Sie explizit ein Feld zum Aktualisieren auswählen möchten, können Sie auf das Dropdown-Menü Feld klicken, um ein Feld zum Bearbeiten auszuwählen. Der Tinten-Updater ist intelligent genug, um Tinte in das entsprechende Datenformat zu konvertieren, zum Beispiel wird Tinte in ein Datum umgewandelt, wenn ein Datumsfeld ausgewählt wird.

Der Sprach-Updater
Dies ist wahrscheinlich das coolste Tool in der Symbolleiste des Tablet-Editors. Der Benutzer befindet sich noch in einer Bearbeitungssitzung, es sind drei Lichtmasten in der Karte ausgewählt und der Lichtmast-Layer ist im ArcMap-Inhaltsverzeichnis ausgewählt. Klicken Sie auf die Schaltfläche Sprachaktualisierung (sechste Schaltfläche in der Symbolleiste des Tablet-Editors). Sagen Sie jetzt "Gut". Der Tablet-Editor klassifiziert die Pole automatisch als "Gut". Dieses Werkzeug funktioniert mit JEDEM Layer, der einen eindeutigen Wert hat, der mit Beschreibungen in lesbarem Englisch gerendert wird.


Koordinaten regnen lassen: Implementieren von Drag & Drop für eine ArcGIS Silverlight Viewer-Anwendung

Die Grenze zwischen Desktop- und Webanwendungen verschwimmt immer mehr. Immer mehr Benutzer erwarten, mit Webanwendungen auf die gleiche Weise zu interagieren wie mit jeder Anwendung, die auf dem lokalen Desktop ausgeführt wird. Fallbeispiel, Drag & Drop. Vor „Web 2.0“ war der Gedanke, eine Datei aus dem lokalen Dateisystem in eine Webanwendung zu kopieren, praktisch Science-Fiction. Wie viele Benutzer von ArcGIS Online jedoch festgestellt haben, ist eine solche Funktionalität mittlerweile selbstverständlich. In diesem Beitrag beschreibe ich, wie Sie ein benutzerdefiniertes Verhalten erstellen, das das Ziehen und Ablegen von Textdateien im ArcGIS Silverlight-Kartensteuerelement ermöglicht.

Für diejenigen, die nicht vertraut sind, bietet der ArcGIS Silverlight Viewer ein Framework zum schnellen Erstellen benutzerdefinierter und voll funktionsfähiger Kartenanwendungen, ohne Code zu schreiben oder Konfigurationseinstellungen zu optimieren. Das Framework ist außerdem erweiterbar, sodass ein Entwickler individuell verpackte benutzerdefinierte Werkzeuge, Layouts und Verhalten erstellen kann, die zur Verwendung in einer Kartenanwendung an ArcGIS Silverlight Viewer angeschlossen werden können.

Der hier beschriebene Prozess ist zwar spezifisch für das Zeichnen von Punkten auf einer ArcGIS Silverlight-Karte, kann jedoch nützlich sein, um andere Verhaltenstypen für eine ArcGIS Silverlight-Viewer-Anwendung zu erstellen oder Drag & Drop für andere Arten von Silverlight-Steuerelementen zu aktivieren (sogar, <gulp> non -GIS diejenigen!). Wenn Sie keine Lust haben, sich durch die Details zu wühlen, laden Sie einfach den vollständigen Code herunter und probieren Sie ihn aus. Ansonsten lesen Sie weiter!

Im Gegensatz zu einem benutzerdefinierten Tool oder Layout wird ein benutzerdefiniertes Verhalten nicht unbedingt durch Elemente der Benutzeroberfläche (UI) in der Anwendung dargestellt. Stattdessen reagiert ein Verhalten wahrscheinlich auf Benutzerereignisse, die als Teil des Anwendungsworkflows stattfinden. Die Reaktion eines Verhaltens auf ein Ereignis kann das Anzeigen von UI-Elementen beinhalten, mit denen der Benutzer interagieren kann, oder es kann einfach Code als Antwort ausführen. Ein derzeit im Silverlight Viewer verfügbares Out-of-the-Box-Verhalten besteht beispielsweise darin, die x/y-Position des Mauszeigers anzuzeigen, wenn der Benutzer ihn auf der Karte bewegt. Wie der Name schon sagt, ist ein Verhalten ein wesentlicher Bestandteil der Anwendung, der aktiv ist, sobald die Anwendung geladen wird. In den folgenden Schritten beschreibe ich den Prozess der Implementierung der Möglichkeit, eine Textdatei mit Koordinaten auf das Kartensteuerelement zu ziehen und die Orte in der Datei als Punkte (Grafiken) auf der Karte anzuzeigen. Das Verhalten wird zunächst ohne zusätzliche Reaktion des Benutzers erstellt: Wenn die Koordinaten gelöscht werden, werden sie auf das richtige Format überprüft und dann sofort auf der Karte gezeichnet. Erstellen eines Silverlight Viewer-Projekts Um Add-Ins für ArcGIS Silverlight Viewer zu entwickeln, müssen Sie das ArcGIS Extensibility SDK for Silverlight installieren (verfügbar zum Download im ArcGIS Resource Center). Das SDK enthält nicht nur alles, was Sie zum Erstellen eines Add-Ins in der ESRI.ArcGIS.Client.Extensibility-Assembly benötigen, sondern auch eine Visual Studio-Projektvorlage, die Ihnen den Einstieg erleichtert.

  • Lassen Sie uns zunächst ein neues Visual Studio-Projekt erstellen. Wenn Sie das ArcGIS Extensibility SDK for Silverlight installiert haben, wird im Dialogfeld Neues Projekt (unter Silverlight/ESRI Viewer) ein Projekt „ESRI Viewer for Silverlight“ angezeigt. Da die Lösung mehrere Projekte zum Anpassen verschiedener Aspekte des Viewers (Werkzeuge, Verhalten, Layoutelemente) enthält, habe ich einen allgemeineren Namen gewählt, „ViewerCustomizations“ (im Gegensatz zu „DragDropCoords“, z. B.).

Beachten Sie, dass ich mich dafür entschieden habe, mein Add-In mit C# zu erstellen, sodass Screenshots und Codebeschreibungen von einem für VB.NET erstellten Projekt abweichen. Wenn die Projektmappe geöffnet wird, werden Sie feststellen, dass sie aus drei verschiedenen Projekten besteht:

  • ViewerAnpassungen: Dies ist die Silverlight-Anwendung, die Ihre benutzerdefinierten Add-Ins hostet. Sie werden dies verwenden, um Ihr benutzerdefiniertes Verhalten zu testen.
  • ViewerCustomizations.AddIns: Dieses Projekt enthält Anpassungen für den ArcGIS Silverlight Viewer, in unserem Fall das benutzerdefinierte Drag-and-Drop-Verhalten für Koordinatendateien. Hier würden auch benutzerdefinierte Tools entwickelt. Für unsere Zwecke ist dies das einzige Projekt, für das wir Code schreiben müssen (abgesehen von der Optimierung der Konfigurationseinstellungen in der Haupt-Viewer-Anwendung).
  • ViewerAnpassungen.Layouts: Dieses Projekt enthält Kopien aller vorkonfigurierten Layoutvorlagen, die vom Silverlight Viewer verwendet werden. Hier würden Sie Ihr eigenes XAML-Layout für den Viewer entwickeln, möglicherweise beginnend mit einer Kopie eines vorhandenen.

Zusätzlich zum Erstellen dieser drei Projekte bietet die Visual Studio-Vorlage auch Codemodule, die Ihnen den Einstieg in ein benutzerdefiniertes Tool, Verhalten und Konfigurationsdialoge für Ihre Viewer-Add-Ins erleichtern. Wir beginnen mit der Ausarbeitung des bereitgestellten Moduls, um ein benutzerdefiniertes Verhalten zu erstellen (MyBehavior.cs).

  • Suchen und öffnen Sie im Projektmappen-Explorer unter dem ViewerCustomizations.AddIns-Projekt die MyBehavior.cs-Klasse.

Das benutzerdefinierte Verhalten muss von der System.Windows.Interaktivität.Verhalten Basisklasse. Diese Klasse bietet einen Mechanismus zum Anhängen von Zuständen und Befehlen an ein Objekt. Der generische Parameter (in unserem Fall Karte) gibt den Objekttyp an, an den das Verhalten angehängt werden kann. Zusätzlich zu Verhalten Basisklasse kann ein benutzerdefiniertes Verhalten auch Member von . implementieren ISupportsConfiguration um für das Verhalten erforderliche Konfigurationseinstellungen zu speichern und zu laden. Wir müssen in diesem Beispiel nicht mit der Konfiguration arbeiten.

Wenn Sie Benutzern im ArcGIS Application Builder Ihr benutzerdefiniertes Verhalten zur Verfügung stellen möchten, müssen die folgenden Attribute für Ihre Klasse angegeben sein. Export: Teil des Microsoft Managed Extensibility Frameworks, dies gibt lediglich an, dass das Verhalten innerhalb des Frameworks verfügbar gemacht werden soll. Für ein benutzerdefiniertes Kartenverhalten im ArcGIS Silverlight Viewer lautet der Wert immer typeof(Verhalten<Map>). Anzeigename: Ein Name, der für das Verhalten im Application Builder angezeigt werden soll. Kategorie: eine optionale Kategorie zum Organisieren von Komponenten (Verhalten und Tools). Beschreibung: eine kurze Zusammenfassung dessen, was das Verhalten bietet.

Nachdem nun die Anschlüsse für die benutzerdefinierte Verhaltensklasse vorhanden sind, erstellen wir eine Funktion zum Behandeln eines Drop-Ereignisses für das Kartensteuerelement. Der Handler akzeptiert ein DragEventArgs-Objekt, das Informationen über das Objekt (z. B. Datei) enthält, das auf der Karte abgelegt wurde. Im Moment zeigen wir einfach eine Nachricht an, um zu überprüfen, ob das Ereignis ausgelöst wird.

Wir werden nun das benutzerdefinierte Verhalten testen, um sicherzustellen, dass unser Drop-Ereignis verarbeitet wird.

  • Führen Sie die Lösung aus.
  • Ziehen Sie mit dem Windows Explorer eine Datei (beliebigen Dateityp) über die Karte und legen Sie sie dann ab, indem Sie die Maus loslassen.

Nach dem Ablegen der Datei haben Sie möglicherweise erwartet, dass das Meldungsfeld angezeigt wird. Was für ein Glück?! Es tut uns leid, Sie zu ärgern … wir müssen noch ein paar Schritte ausführen, bevor unser Verhalten angemessen verdrahtet ist. Es wird nicht lange dauern, versprochen.

Beachten Sie, dass die einzige Überschreibung, die in der Behavior-Basisklasse implementiert werden muss, die OnAttached Funktion.Dies ist der Code, der ausgeführt wird, wenn das benutzerdefinierte Verhalten anfänglich an das zugehörige Objekt angehängt wird, in unserem Fall die Karte.

  • Navigieren Sie zur OnAttached-Funktion in Ihrem MyBehavior.cs-Codemodul.
  • Entfernen Sie den gesamten Boilerplate-Code aus der OnAttached-Funktion, mit Ausnahme der (initialen) Zeile, die die OnAttached-Funktion auf dem Basisobjekt aufruft:
  • Geben Sie in der OnAttached-Überschreibung unter dem vorhandenen Code den folgenden Code ein, um …
  1. Kartenelement als Drop-Ziel einrichten (Drag and Drop aktivieren)
  2. Geben Sie an, welche Funktion das Drop-Ereignis behandelt (die oben erstellte MapDrop-Funktion)
  • Speichern und erstellen Sie die Lösung.
  • Führen Sie die Silverlight Viewer-Anwendung erneut aus und ziehen Sie eine Datei aus dem Windows Explorer auf die Karte.

Nach dem Ablegen der Datei auf der Karte sollte das Meldungsfeld angezeigt werden. Nein? Okay, das war gemein … letztes Mal, das schwöre ich. Wir haben nur noch eine Sache zu verkabeln.

Um ein neues Werkzeug oder Verhalten in eine ArcGIS Silverlight Viewer-Anwendung aufzunehmen, müssen Sie die entsprechenden Konfigurationseinstellungen für die Site bearbeiten. Jede Viewer-Anwendung hat in ihrem Stammordner ein „Config“-Verzeichnis, das mehrere Konfigurationsdateien im XML-Format enthält. Um Ihr benutzerdefiniertes Verhalten einzuschließen, müssen Sie die Einstellungen von Behaviors.xml bearbeiten.

  • Suchen und öffnen Sie im Projektmappen-Explorer im Ordner Config unter dem ViewerCustomizations-Projekt die Datei Behaviors.xml.

Die Viewer-Anwendung ist so konfiguriert, dass sie ein Verhalten namens „MyBehavior“ verwendet, das der ursprüngliche Name unserer Verhaltensklasse war. Da wir den Namen in DropCoordinatesBehavior geändert haben, müssen wir die Konfigurationseinstellung aktualisieren, um die Änderung widerzuspiegeln.

  • Ändern Sie die Verhaltenskonfiguration, um den neuen Namen der Klasse, DropCoordinatesBehavior, zu verwenden, wie unten gezeigt.
  • Speichern Sie die Konfigurationsdatei Behaviors.xml und führen Sie das Projekt aus.
  • Nochmals … ziehen Sie eine Datei aus dem Windows Explorer und legen Sie sie auf der Karte ab.

Vertrauen Sie mir, dieses Mal hätte die Nachrichtenbox erscheinen sollen. Wenn nicht, hast du irgendwo einen Fehler gemacht. Überprüfen Sie die obigen Schritte und stellen Sie sicher, dass: 1) die OnAttached-Funktion das Drop-Ziel und den Drop-Event-Handler verbindet und 2) die Datei Behaviors.xml mit dem richtigen Klassennamen konfiguriert ist. Wenn Sie es behoben haben, treffen Sie mich im folgenden Abschnitt. Ich werde warten.

  • Schließen Sie das Meldungsfeld und beenden Sie die Ausführung der Anwendung. In den folgenden Schritten lesen wir den Inhalt der abgelegten Datei.

Lass eine F-Bombe fallen („Datei“, natürlich)

Wir fügen nun Code hinzu, der die auf der Karte abgelegte Datei genauer untersucht. Wir stellen sicher, dass der Benutzer nur eine einzelne Datei abgelegt hat und dass diese vom richtigen Typ ist (durch Kommas getrennter Text mit Koordinatenpaaren). Ein DragEventArgs-Objekt wird an unsere MapDrop-Funktion übergeben. Dieses Objekt macht die mit dem abgelegten Objekt verknüpften Daten (über die Data-Eigenschaft) sowie den Status der Umschalt-, Strg- und Alt-Tasten verfügbar. Wir verwenden dieses Objekt, um Informationen über die abgelegte Datei zu erhalten.

Die System.IO-Assembly stellt die FileInfo-Klasse bereit, die uns hilft, mit den vom Benutzer abgelegten Informationen zu arbeiten. Wir werden die auf der Karte abgelegten Daten in ein Array von FileInfo-Objekten umwandeln. Wir stellen dann sicher, dass das abgelegte Objekt nicht null ist und eine einzelne Datei enthält.

  • Fügen Sie in der MapDrop-Funktion in MyBehavior.cs den folgenden Code hinzu, um sicherzustellen, dass der Benutzer genau eine Datei gelöscht hat.

Hinweis: Mit der Methode IDataObject:GetData können Sie die Daten in einem angegebenen Format abrufen, wenn mehrere bereitgestellt wurden. Vorerst müssen wir einige Annahmen über die Struktur der Informationen in der abgelegten Textdatei treffen. Nehmen wir Folgendes an: 1) die erste Zeile der Datei enthält die Feldnamen, 2) die Koordinaten werden immer im Dezimalgradformat angezeigt, 3) Werte werden immer durch Kommas getrennt und 4) die ersten beiden Felder enthalten den Längengrad (x) bzw. Breitengrad (y) Werte.

  • Fügen Sie Folgendes hinzu mit -Anweisungen an den Anfang des Moduls MyBehavior.cs. Diese Assemblys enthalten Klassen, die zum Verarbeiten der Koordinateneingabe und zum Zeichnen von Punkten auf der Karte erforderlich sind.
  • Deklarieren Sie am Ende des vorhandenen Codes in der MapDrop-Funktion eine StreamReader-Variable und beginnen Sie einen try/catch/finally-Block. In dem Fang Teil des Blocks, eine Fehlermeldung anzeigen und im schließlich Stellen Sie sicher, dass Sie die Datei wie unten gezeigt schließen.
  • Fügen Sie im try-Teil des Blocks den folgenden Code hinzu, um einige Variablen zu deklarieren, die zum Lesen der Datei und zum Anzeigen der Punkte erforderlich sind.
  • Öffnen Sie die Datei zum Lesen.
  • Füge hinzu ein während block, um alle Zeilen der abgelegten Datei zu lesen.

StreamReader::ReadLine wird verwendet, um die aktuelle Zeile aus der Datei zu lesen (von oben nach unten). Die StreamReader::EndOfStream-Eigenschaft wird zurückgeben falsch bis das Ende der Datei erreicht ist. Wir verfolgen die Zeilenposition innerhalb der Datei mit dem Zeilennummer Variable. Dadurch können wir die genaue Zeilennummer der Datei melden, wenn beim Parsen von Koordinatenwerten ein Fehler auftritt.

  • Auf die Gefahr hin, dass du und ich zum Arsch werden, gehen wir davon aus, dass die erste Zeile der Datei die Feldnamen beschreibt. Fügen Sie den folgenden Code hinzu (innerhalb der während Schleife, nach der Zeile, die die erhöht Zeilennummer Variable), um die erste Zeile der Datei zu überspringen.
  • Wir gehen auch davon aus, dass die Koordinatenwerte durch Kommas getrennt sind und dass die ersten beiden Werte in einer Zeile die x- und y-Koordinaten sind. Basierend auf diesen Annahmen können wir den folgenden Code hinzufügen, um die Koordinaten für die aktuelle Zeile zu lesen.

Die obigen Variablen speichern die x- und y-Koordinaten als Zeichenfolgenwerte. Obwohl wir bereits viele Annahmen über die Struktur der Textdatei gemacht haben, können wir sicherlich nicht davon ausgehen, dass der Benutzer uns keinen Müll gegeben hat! Fügen wir etwas Code hinzu, um zu versuchen, die Werte in Double-Variablen zu parsen. Wenn der Code fehlschlägt, geben Sie die Zeilennummer an, in der Probleme aufgetreten sind.

Habt Geduld, wir sind auf der Zielgeraden! Jetzt müssen wir nur noch einen Punkt aus dem Koordinatenpaar erstellen und ihn der Grafikebene hinzufügen. Oh, und wir müssen die Grafikebene zur Karte hinzufügen. Oh ja, wir müssen auch sicherstellen, dass wir die Punkte auf Web Mercator projizieren. Wie auch immer … wir sind fast da!

  • Fügen Sie Code hinzu, um einen MapPoint aus dem aus der Datei geparsten Koordinatenpaar zu erstellen. Da angenommen wird, dass die Koordinaten Dezimalgrad sind, geben wir dem Punkt einen WGS 1984-Raumbezug.
  • Verwenden Sie die WebMercator Objekt, um den geografischen Punkt auf Web Mercator zu projizieren.
  • Erstellen Sie ein neues Grafikobjekt, um den Punkt anzuzeigen, und fügen Sie es dem zuvor erstellten GraphicsLayer hinzu.
  • Fügen Sie schließlich den GraphicsLayer zur Karte hinzu.

Wir sind jetzt bereit, es auszuprobieren!

  • Erstellen Sie eine Textdatei mit Koordinaten zum Testen (denken Sie an unsere Annahmen über die Struktur der Datei!). Wenn Sie faul und/oder vom Tippen müde sind, können Sie das folgende Beispiel einfach in eine Textdatei kopieren.
  • Starten Sie die Anwendung und ziehen Sie Ihre Koordinatendatei auf die Karte. Sie sollten sehen, dass Ihre Punkte mit dem standardmäßigen Stecknadelsymbol angezeigt werden (ich habe meine Grundkarte in "Hellgraue Leinwand" geändert, um die Punkte besser zu sehen).

Wenn Sie Zeit haben, können Sie versuchen, einige der folgenden Verbesserungen unseres grundlegenden Verhaltens zu implementieren.


Design und Entwicklung von GIS-Softwareanwendungen

Der Kurs zielt darauf ab, Architektur und OO (objektorientierte) Programmierung in Python einzuführen und bietet einen umfassenden Überblick über die wichtigsten Prinzipien von principles OO und COM (COMkomponentenbasierte) Softwareentwicklungsmodelle. Der Kurs befasst sich speziell mit dem Entwurf und der Implementierung von geografischen Anwendungen und Automatisierungsaufgaben zur Geoverarbeitung im Kontext der proprietären GIS-Plattform ArcGIS&trade 9.x e 10.

ArcGIS kann in Standard- und erweiterten Sprachen wie Visual C++&trade und Java&trade programmiert werden und bietet vollen Zugriff auf native Plattformfunktionen über die Komponentenbibliothek ArcObjects&trade. Andererseits ist Python jetzt vollständig in die ArcGIS 10-Version integriert. ArcPy ist eine einfache, effektive und plattformübergreifende Option für Rapid Prototyping und Skriptentwicklung, die geografische Management- und Analyseaufgaben anspricht. Räumliche Werkzeuge in Model Builder können problemlos in Python-Anwendungen integriert werden, auch von außerhalb von ArcGIS, während räumliche Datenmodelle von Model Builder auch nach Python exportiert und in komplexere geografische Anwendungen integriert werden können.

Der Kurs ist Teil eines umfassenderen GIScience-Lernprojekts, das sowohl einführende als auch fortgeschrittene Themen in der Gestaltung und Implementierung von geografischen Informationssystemen behandelt und die Anforderungen so verschiedener Bereiche wie Umweltwissenschaften, Stadtplanung, Landnutzung, IT, um nur einige davon in Erinnerung zu rufen .
In diesem Framework ist Python eine wertvolle Ressource sowohl für die ArcGIS-Skripterstellung als auch für die Entwicklung komplexer geografischer Anwendungen.

Programm

Der Kurs, der einen theoretisch-praktischen Ansatz verfolgt, wird die folgenden Themen behandeln:

  • Objektorientiertes (OO) Programmierparadigma: von der funktionalen Dekomposition und verwandten Problemen der Modularität, Kohäsion und Kopplung in traditionellen Programmiermodellen zum OO-Modell.
  • Einführung in die wichtigsten OO-Konzepte und deren Implementierung: Klasse, Polymorphismus, Konstruktoren und Destruktoren, Zustand und Verhalten (Eigenschaften und Funktionen), Objekt (Klasseninstanziierung), Sammlungen und Interaktion zwischen Objekten.
  • Praktische Sitzungen konzentrierten sich auf die Untersuchung von OO-Konzepten durch die Implementierung einfacher Programme.
  • Softwaredesign für OO-Anwendungen: Software Engineering und UML (Unified Modeling Language), Prinzipien, Schlüsseldiagramme (Use Case, Class, State e Activity) und Techniken zur Klassen- und Beziehungsidentifikation (CRC, Class-Responsibility-Collaborator).
  • Hands-on-Sessions konzentrierten sich auf Software-Engineering und seine Rolle beim Design von OO-Anwendungen.
  • Einführung in Python: IDLE-Editor und Sprachgrundlagen, einschließlich Variablen, mathematische Operatoren und Prioritäten, Kommentare, Einrückungen, bedingte - if, elif, else - und iterative - while, for - Konstrukte, Funktionen, Parameter und Rückgabewerte, Tupel, Listen und Wörterbücher, Klassen (Erstellung, Objektinstanziierung, Vererbung), Module, Dateieingabe/-ausgabe, Fehler- und Ausnahmebehandlung, Ausführung und Debugging (print, try..except)
  • Praktische Sitzungen, die sich auf die Grundlagen der Programmiersprache Python und die Entwicklung von OO-Anwendungen konzentrieren
  • Geoverarbeitung in ArcGIS. Definitionen, geografische Modelle und Skripterstellung im Kontext von Geoverarbeitung, Architektur, Model Builder, Skriptimplementierung. Das Programmiermodell, das Geoprozessorobjekt und seine Historie.
  • So verwenden Sie Python in ArcGIS: ArcPy, Umgebungseinstellungen, Geoverarbeitungswerkzeuge und Toolboxes, Ausführen grundlegender Aufgaben (Interaktion mit Layern, Erstellen und Exportieren von Karten, Einstellung von Referenzsystemen). GIS-Datenlisten, Verwendung von Cursorn zum Auswählen, Bearbeiten und Hinzufügen neuer Datensätze zu Feature- und Objektklassen, Erstellung benutzerdefinierter Werkzeuge zur Integration in ArcToolbox.
  • Praktische Sitzungen konzentrierten sich auf das Design und die Entwicklung von Python-Anwendungen für das geografische Datenmanagement und die Geoverarbeitung in ArcGIS.

GISscience-Projekt

Der Kurs ist Teil eines umfassenderen Lernprojekts in GIScience und GIS, Anwendungen und geografischer Mashup-Entwicklung, Umweltanwendungen. Unterstützt durch hochrangige berufliche und akademische Profile umfasst das Projekt folgende Kurse:

  • Einführung in die GISwissenschaften: Prinzip und Techniken für Anwendungsentwicklung, Visualisierung und räumliche Analyse
  • Design und Entwicklung von GIS-Softwareanwendungen: objektorientiertes Modell, Softwareentwicklung, Python-Programmierung und seine Rolle bei der Geoverarbeitung in ArcGIS
  • Design und Entwicklung vonWebmapping-Anwendungen: ein Kurs über Theorie und Praxis in GeoWeb 2.0 Mashups Design und Entwicklung, Integration von Google Maps und OpenLayer Webservices und räumlich-zeitliche PostgreSQL/PostGIS Datenbank
  • Design und Entwicklung von GIS-Softwareanwendungen: Software Engineering, OO- und Komponentenmodelle, Programmierung in VBA/ArcObjects for ArcGIS 8.x/9
  • Objektorientierte JAVA-Programmierung für die Entwicklung von GIS-Anwendungen: eine Open-Source-Perspektive für Stand-alone- und Web-Lösungen
  • Eine praktische Einführung in Datenbanken und Geodatabases: Ein Grundkurs aus zwei Modulen mit Beispielen in MySql, PostgreSQL/PostGIS, Oracle XE und ArcGIS/MsAccess für den Entwurf und die Entwicklung von relationalen (I) und räumlichen Datenbanken (II)
  • Geschäftsgeografie und Geodemografie
  • Google Maps-Mashups
  • Umweltprojektmanagement
  • Angewandte Grundwasserströmungs- und Verkehrsmodellierung: Grundwassermanagement auf regionaler Ebene für die Bewertung der Wasserversorgungspolitik und auf lokaler Ebene für die Umweltsanierung von Altlasten

Software

Python, QuantumGIS, ESRI ArcGIS

Für wen ist das?

Der Kurs richtet sich an Berufstätige im öffentlichen Sektor und junge Forscher, die daran interessiert sind, ArcGIS-Aufgaben mit Python anzupassen.

Standort und Daten

Der Kurs findet im Umweltbildungszentrum Casa Archilei in Fano (PU) statt und ist von den wichtigsten Verkehrsverbindungen leicht zu erreichen. Der Kurs dauert 48 Stunden, mit 8 Stunden Unterricht, am, 8.-9.-29.-30. Mai und 12.-13. Juni 2015


Veröffentlichen von Python-Skripten als Geoverarbeitungsservices: Best Practices

Warum Python statt Modelle?

Wenn Sie Ihre ModelBuilder-Modelle als Geoverarbeitungsservices (weitere GP) veröffentlicht haben, haben Sie wahrscheinlich festgestellt, dass dies ziemlich umständlich sein kann. Wenn Sie noch nicht zu Python gewechselt sind, sollten Sie das meiner Meinung nach wirklich tun. Das Erstellen von Python-Skripten hat gegenüber dem Erstellen von Modellen im Zusammenhang mit der Veröffentlichung von GP-Diensten erhebliche Vorteile. Dies liegt daran, dass ArcGIS Server während des Veröffentlichungsprozesses Daten und alles, was möglicherweise geändert werden muss, in Variablen umwandelt. Dies kann das Modell durcheinander bringen, wenn Sie die Richtlinien zum Erstellen von GP-Services nicht befolgt haben. Als Faustregel für mich galt: Wenn das Modell mehr als 10 Objekte enthält, ist es ein guter Zeitpunkt, zu Python zu wechseln. Eine andere Sache ist, dass Sie problemlos Änderungen im Python-Code ohne erneute Veröffentlichung vornehmen können. Im Gegensatz dazu müssen Sie das Modell jedes Mal neu veröffentlichen, wenn Sie eine aktualisierte Version des GP-Dienstes veröffentlichen möchten. Da Sie den GP-Dienst beim Aktualisieren der Python-Datei nicht neu starten müssen (im Gegensatz zum erneuten Veröffentlichen des Modells, das einen Neustart des Dienstes erfordert), gibt es keine Ausfallzeit für den Dienst und die Benutzer werden nichts bemerken.

Was passiert nach der Veröffentlichung?

Werfen wir einen Blick darauf, was unter der Haube vor sich geht. Sie haben Ihr Skriptwerkzeug in ArcMap ausgeführt und das Ergebnis als Service veröffentlicht. Jetzt finden Sie Ihren Service und alle dazugehörigen Daten im arcgisserver Ordner irgendwo auf Ihrem Laufwerk. Der Pfad wäre: C:arcgisserverdirectoriesarcgissystemarcgisinput\%GPServiceName%.GPServer

Sie finden eine Reihe von Dateien in dem Ordner. Sehen wir uns einige davon an:

  • serviceconfiguration.json – bietet einen Überblick über alle Eigenschaften des Dienstes, einschließlich Ausführungstyp, aktivierte Funktionen, Ausgabeverzeichnis und vieles mehr. Hier sehen Sie alle Einstellungen, die Sie normalerweise im Service-Editor-Fenster sehen.
  • manifest.xml und manifest.json – bietet eine Übersicht über die Systemeinstellungen, die beim Veröffentlichen des Dienstes verwendet wurden. Dies sind nicht die Dateien, die Sie normalerweise überprüfen möchten.

Im Ordner esriinfo/metadata befindet sich eine Datei namens metadata.xml, die sehr hilfreich ist, da Sie dort sehen können, an welchem ​​Datum ein Service veröffentlicht wurde. Zwei Tags, die Sie sich ansehen sollten, sind:

Da diese Informationen nicht über die GUI in ArcGIS Desktop oder ArcGIS Server Manager verfügbar gemacht werden, ist dies die einzige Möglichkeit, herauszufinden, zu welchem ​​Zeitpunkt der Service erstellt wurde. Diese Informationen können sehr nützlich sein, wenn Sie sich bezüglich der Release-Versionen nicht sicher sind.

Innerhalb der extrahiert/v101 Ordner finden Sie die Ergebnisdatei und die Toolbox, mit der Sie beim Veröffentlichen des GP-Dienstes gearbeitet haben. Hier finden Sie auch einen Ordner, der nach dem Ordner benannt ist, in dem Ihre Python-Quelldatei gespeichert wurde und die Python-Quelldatei enthält.

Best Practices zum Organisieren von Python-Code und -Dateien?

Schauen wir uns die Python-Datei an. Sie haben vielleicht bemerkt, dass beim Veröffentlichen einige der Variablen, die Sie deklariert haben, umbenannt wurden g_ESRI_variable_%id%. Als Faustregel gilt, dass Sie eigentlich keine Zeichenfolgen verwenden sollten, sondern Pfade zu Datensätzen und Namen in Variablen umwandeln können. Natürlich müssen Sie dies nicht tun, da Esri diese Inline-Variablen aktualisiert, aber es ist viel schwieriger, diese Variablennamen umzugestalten, also organisieren Sie Ihren Code besser von Anfang an richtig.

Wenn Sie das Skriptwerkzeug in ArcGIS ausführen, befindet sich die Scratch-Geodatabase unter C:Benutzer\%user%AppDataLocalTempscratch.gdb. Nach der Veröffentlichung des Werkzeugs erhält der Service jedoch eine neue Scratch-Geodatabase. Wenn Sie die erstellten Zwischendaten überprüfen müssen, rufen Sie die Scratch-Geodatabase auf (der Pfad kann mit der arcpy.env.scratchGDB), die in jeder Ausführung des GP-Service eine neue File-Geodatabase mit der folgenden Notation ist: c:arcgisserverdirectoriesarcgisjobs\%service%_gpserver\%jobid%scratchscratch.gdb.

Beachten Sie, dass der GP-Dienst immer seinen lokalen Server-Auftragsordner zum Schreiben von Zwischendaten verwendet und dieses Verhalten nicht geändert werden kann. Das Schreiben des Dienstes in den Scratch-Workspace ist jedoch viel sicherer als das Schreiben an einen bestimmten Speicherort auf der Festplatte. Dies liegt daran, dass keine Möglichkeit besteht, dass mehrere GP-Dienstinstanzen gleichzeitig versuchen, an denselben Speicherort zu schreiben, was zu Deadlocking- und Parallelitätsproblemen führen kann. Denken Sie daran, dass jeder gesendete GP-Job einem neuen eindeutigen Scratch-Ordner und einer Geodatabase im Ordner arcgisjobs zugewiesen wird.

Stellen Sie sicher, dass Sie nicht verwenden arcpy.env.workspace Deklarieren Sie in Ihrem Code immer eine Pfadvariable und weisen Sie sie dem Ordner oder einer Geodatabase-Verbindung zu. Verwenden Sie für den Datensatzpfad os.path.join(), anstatt Strings zu verketten. Verwenden Sie aus Leistungsgründen in Erinnerung Arbeitsbereich für Zwischendaten mit folgender Notation:

Sie können die Vorteile nutzen in Erinnerung Arbeitsbereich, aber zu Fehlerbehebungszwecken ist es möglicherweise besser, etwas auf die Festplatte zu schreiben, um es später zu überprüfen. In diesem Fall kann es praktisch sein, eine Variable mit dem Namen gpTempPlace zu erstellen, die Sie entweder in “ ändern könnenin Erinnerung” oder eine lokale File-Geodatabase, je nachdem, ob Sie sauberen Code in der Produktion ausführen oder Probleme mit dem Dienst in der Staging-Umgebung beheben.

Stellen Sie sicher, dass Sie nicht denselben Namen für Variablen- und Feature-Class-/Feldnamen verwenden. Dies führt manchmal zu unerwarteten Ergebnissen beim Ausführen des Dienstes. Es könnte hilfreich sein, hinzuzufügen „_fc” am Ende für Feature-Class-Variable und “_Feld” für die Feldvariable. Auf diese Weise können Sie sie auch viel einfacher unterscheiden. Dasselbe gilt für die Namen der Feature-Class und Feature-Layer (erstellt mit dem Werkzeug Feature-Layer-GP erstellen).

Denken Sie daran, dass Sie die Protokollierungsebene von ArcGIS Server (im Manager) oder nur des GP-Service (wird im Service-Editor-Fenster vorgenommen) zu Fehlerbehebungszwecken anpassen können. Es ist oft nützlich, die Einstellung Nachrichtenebene auf Info-Ebene zu setzen, bevor Sie den GP-Dienst in der Produktion veröffentlichen, da Sie so detaillierte Informationen darüber erhalten, was beim Ausführen des GP-Dienstes genau schief gelaufen ist. Sie können auf diese Informationen entweder über das Ergebnisfenster in ArcMap oder über die ArcGIS Server-Protokolle in Manager zugreifen.

Wie aktualisiere ich den veröffentlichten Dienst?

Ein besonderes Wort sollte für diejenigen Benutzer gelten, die die GP-Dienste häufig veröffentlichen müssen, während sie Änderungen am Code vornehmen. Es ist wichtig zu wissen, dass die kopierte Python-Codedatei und die Toolbox nach der Veröffentlichung des GP-Dienstes keine Verbindung zur Python-Quelldatei und der von Ihnen erstellten Quell-Toolbox aufrechterhalten. Dies bedeutet, dass Sie nach dem Bearbeiten des Skripttools diese Änderungen an den veröffentlichten Dienst auf dem Server übertragen müssen.

Es gibt zwei Arten von Änderungen, die Sie an Ihrem Quellprojekt vornehmen können: die Werkzeugparameter in den Skriptwerkzeugeigenschaften und den Python-Code. Beachten Sie, dass Sie die veröffentlichte Toolbox nicht bearbeiten können. Wenn Sie also einen neuen Parameter hinzugefügt oder einen vorhandenen Parameterdatentyp geändert haben, müssen Sie den Dienst erneut veröffentlichen. Wenn Sie jedoch nur den Quellcode des Python-Skripts geändert haben, müssen Sie den gesamten Dienst nicht erneut veröffentlichen, da Sie nur den Inhalt in der Python-Datei ersetzen müssen.

Auch wenn Sie mit Python den Service-Publishing-Workflow automatisieren können, dauert das Verschieben der Toolbox und der Python-Codedateien dennoch einige Zeit. Daher können Sie viel Zeit sparen, indem Sie einen Weg finden, den Python-Code in der veröffentlichten Python-Codedatei zu ersetzen. Um die Python-Codedatei zu aktualisieren, haben Sie eigentlich nur zwei Möglichkeiten – Sie entweder kopieren und die veröffentlichte Datei durch die aktualisierte Quelldatei ersetzen oder den Quellcode kopieren/einfügen. Dieser Ansatz kann funktionieren, wenn Sie ein kleines Python-Skript haben und alle Pfade zu den Daten auf Ihrem Computer und auf dem Server gleich sind. Dies kann eine plausible Lösung sein, wenn Sie Desktop und Server auf demselben Computer haben. Wenn Sie über eine Konfigurationsdatei verfügen, aus der die Python-Quellcodedatei alle Pfade und Datasetnamen erhält, können Sie auch die veröffentlichte Python-Datei bedenkenlos ersetzen. Dies ist jedoch immer noch eine zusätzliche Sache.

Die beste Vorgehensweise, zu der ich während meiner zweijährigen Arbeit an den GP-Diensten gekommen bin, besteht darin, die Codedateien und das Tool selbst aufzuteilen. Lassen Sie mich erklären.

Wie trenne ich die Toolbox-Logik und den Python-Code?

Erstellen Sie eine Python-Datei (ein Aufrufer-Skript), die alle importieren -Anweisungen für die Python-Module und Ihre Dateien. Durch Anhängen des Pfads an Ihre Python-Dateien können Sie die Python-Dateien importieren, an denen Sie arbeiten. Dies ist sehr nützlich, wenn Ihr GP-Dienst nicht nur aus einer Datei, sondern aus mehreren Modulen besteht.

Diese Datei sollte auch alle Parameter enthalten, die im Skripttool verfügbar gemacht werden.

Anschließend definieren Sie eine Hauptfunktion, die beim Ausführen des GP-Dienstes ausgeführt wird. Sie rufen die in den importierten Dateien definierten Funktionen auf.

Es ist auch praktisch, beim Ausführen des Skriptwerkzeugs in ArcMap eine Parameterbehandlungslogik hinzuzufügen. Sie geben einige Werte für das Werkzeug an, die als Standardwerte sichtbar werden, wenn Benutzer den GP-Service von ArcMap oder einer anderen benutzerdefinierten Schnittstelle ausführen. Um dies zu vermeiden, können Sie diese Parameter einfach leer lassen und dann eine leere Ausgabe nur für die Veröffentlichung des GP-Skripttools zurückgeben.

Erstellen Sie aus dieser Python-Datei des Aufrufers ein Skripttool, das die Parameter und ihre Datentypen definiert. Nachdem das Tool als GP-Dienst veröffentlicht wurde, können Sie mit den Python-Dateien arbeiten, die nur den Code enthalten, der die Arbeit tatsächlich erledigt.

Nachdem Sie die Änderungen im Code durchgeführt und gespeichert haben, können Sie den GP-Dienst direkt ausführen. – die Aufrufer-Python-Datei (veröffentlicht als GP-Dienst) importiert die Codedatei1 in den von Ihnen angegebenen Ordner und führt den Code aus. Sie müssen den GP-Dienst nicht neu starten oder Ihr Update-Modul erneut importieren.


Schau das Video: Maus Zeiger dauerhaft ändern geht auch rückgängig. Windows (Oktober 2021).