Eingabe- und Ausgabedatentypen
Wie im Abschnitt Die wichtigsten Konzepte für Geoverarbeitungs-Services erläutert, können nur bestimmte Datentypen als Eingabe- und Ausgabeparameter für Geoverarbeitungs-Services verwendet werden.
Weil Prozesse in einem veröffentlichten Modell oder Skript auf dem Server ausgeführt werden, auf dem alle Datentypen verfügbar sind, können Sie für Modell- oder Skriptprozesse jeden Datentyp verwenden. Die Einschränkungen gelten nur für die Datentypen von Eingabe- und Ausgabeparametern.
Es gibt vier Ebenen der Unterstützung von Datentypen:
- Für alle Clients vollständig unterstützt.
- Nur für ArcGIS Desktop-Clients unterstützt.
- Nicht für jeden Client zulässig. Einige Datentypen, z. B. TIN, sind für Eingabeparameter nicht zulässig, und das Modell wird nicht veröffentlicht. Sie erhalten beim Veröffentlichen eine Fehlermeldung (siehe Abbildung unten).
- Der Datentyp wird in den Datentyp "Zeichenfolge" konvertiert. Beispielsweise wird aus dem Datentyp "Flächeneinheit" im veröffentlichten Task der Datentyp "Zeichenfolge".
Modelle und Skripte, die in ArcGIS Desktop ausgeführt werden können, müssen möglicherweise so geändert werden, dass sie nur unterstützte Eingabe- und Ausgabedatentypen verwenden, bevor sie in ArcGIS Server veröffentlicht werden können.
Eingabedatentypen
Die folgende Tabelle bietet einen Überblick über die wichtigsten Eingabeparameter-Datentypen für die drei Clients.
Eingabeparameter-Datentyp |
Für ArcGIS Desktop-Clients unterstützt? |
Für ArcGIS Explorer-Client unterstützt? |
Für Webanwendungs-Clients unterstützt? |
---|---|---|---|
Feature-Set |
Ja |
Ja |
Ja |
Datensatz |
Ja |
Ja |
Ja |
Feature-Class |
Nein (Jedoch werden Feature-Class-Eingaben mit dem Datentyp "Feature-Set" indirekt unterstützt.) |
Nein |
Nein |
Tabelle |
Nein (Jedoch werden Tabelleneingaben mit dem Datentyp "Recordset" indirekt unterstützt.) |
Nein |
Nein |
Raster |
Ja |
Nein |
Nein |
Standardtypen (z. B. "Long", "Double", "Boolean", "Date", "Zeichenfolge") und "Lineare Einheit" (z. B. "1000 Meter") |
Ja |
Ja |
Ja |
Datei (z. B. eine ZIP- oder XML- Datei) |
Ja |
Ja |
Ja |
Layer (beliebiger Typ von Layer, z. B. Feature-Layer, Raster-Layer, Network Analyst-Layer) |
Nur Layer im Karten-Service des Ergebnisses oder Quellkartendokument |
Nur Layer im Karten-Service des Ergebnisses oder Quellkartendokument |
Nur Layer im Karten-Service des Ergebnisses oder Quellkartendokument |
Bei allen Eingabedatentypen, die in obiger Liste nicht enthalten sind, tritt eines der folgenden beiden Ereignisse ein, wenn Sie das Modell oder Skript veröffentlichen:
- Das Werkzeug wird veröffentlicht, jedoch wird der Datentyp in den Datentyp "Zeichenfolge" mit der Zeichenfolgendarstellung der Daten konvertiert.
- Das Werkzeug wird nicht veröffentlicht, und Sie erhalten eine Fehlermeldung. Folgende Datentypen führen zu Fehlern beim Veröffentlichen:
- Jedes Geodataset (z. B. Feature-Class) und jede Tabelle, mit Ausnahme von Rastern
- Datenelement
- Wertetabelle/Mehrwertig
- Modellvariablen, bei denen es sich um Listen handelt
Feature-Classes und Tabellen
Die Datentypen "Feature-Class" und "Tabelle" werden als Eingabeparameter nicht unterstützt, weil sie auf umfangreichen Softwarebibliotheken basieren, die nicht für kompakte Clients, z. B. ArcGIS Explorer und Webanwendungen, installiert werden können. Aus diesem Grund sind für die Geoverarbeitung zwei kompakte Datentypen, Feature-Set und Recordset, verfügbar, die Sie anstelle der Datentypen "Feature-Class" und "Tabelle" verwenden können.
Mithilfe von Feature-Sets können alle Web-Clients Features auf einer Karte interaktiv digitalisieren. In ArcGIS Desktop können Sie außerdem mit dem Datentyp "Feature-Set" eine vorhandene Feature-Class eingeben (siehe Abbildung unten). Feature-Classes sind in ArcGIS Desktop zulässig, weil die erforderlichen Softwarebibliotheken verfügbar sind. Ebenso können alle Clients mit Recordsets interaktiv Tabellendatensätze erstellen, und in ArcGIS Desktop können Sie außerdem eine vorhandene Tabelle angeben.
Raster-Datasets
Geoverarbeitungs-Services mit Raster-Dataset-Eingaben können nur auf ArcGIS Desktop-Clients ausgeführt werden. Auf einem ArcGIS Explorer-Client kann der Service nicht als Task hinzugefügt werden. In Webanwendungen gibt der Service einen Fehler zurück.
Ausgabedatentypen
Die folgende Tabelle bietet einen Überblick über die wichtigsten Ausgabeparameter-Datentypen für die drei Clients. Unter der Tabelle befinden sich Hinweise zu den einzelnen Datentypen.
Ausgabeparameter-Datentyp |
Für ArcGIS Desktop-Clients unterstützt? |
Für ArcGIS Explorer-Client unterstützt? |
Für Webanwendungs-Clients unterstützt? |
---|---|---|---|
Feature-Class |
Ja |
Ja |
Ja |
Feature-Layer |
Ja |
Ja |
Ja |
Raster |
Ja |
Nein. Kann nur mit einem Karten-Service des Ergebnisses angezeigt werden. |
Nein. Kann nur mit einem Karten-Service des Ergebnisses angezeigt werden. |
Raster-Layer |
Ja |
Nein |
Nein |
Geodataset (keine Feature-Class und kein Raster) |
Nein. Kann nur mit einem Karten-Service des Ergebnisses angezeigt werden. |
Nein. Kann nur mit einem Karten-Service des Ergebnisses angezeigt werden. |
Nein. Kann nur mit einem Karten-Service des Ergebnisses angezeigt werden. |
Tabelle |
Ja |
Nein (Services mit einem Ausgabeparameter vom Datentyp "Tabelle" werden in der Liste verfügbarer Tasks nicht angezeigt.) |
Ja |
Standardtypen (z. B. "Long", "Double", "Boolean", "Date", "Zeichenfolge") und "Lineare Einheit" (z. B. "1000 Meter") |
Ja. Wird im Ergebnis des Service im Fenster Ergebnisse angezeigt. |
Ja (wird im Fenster "Task-Ergebnis" angezeigt) |
Ja |
Datei |
Ja |
Ja |
Ja |
Bei allen Datentypen, die in obiger Liste nicht enthalten sind, tritt eines der folgenden beiden Ereignisse ein, wenn Sie das Modell oder Skript veröffentlichen:
- Das Werkzeug wird veröffentlicht, jedoch wird der Datentyp in den Datentyp "Zeichenfolge" mit der Zeichenfolgendarstellung der Daten konvertiert.
- Das Werkzeug wird nicht veröffentlicht, und Sie erhalten eine Fehlermeldung.
Wenn Sie die Ausgabedaten mit einem Karten-Service des Ergebnisses darstellen, kann der Task ein beliebiges Geodataset ausgeben, da der Karten-Service des Ergebnisses das Geodataset darstellt und eine Karte zurück an den Client sendet (statt das Datenset selbst).
Feature-Class
Der Datentyp "Feature-Class" wird als Ausgabedatentyp unterstützt. Wenn Sie ein Modell oder Skript veröffentlichen, wird das Werkzeug überprüft, und wenn eine Ausgabe-Feature-Class gefunden wird, wird sie in ein Ausgabe-Feature-Set umgewandelt, welches zurück auf den Client übertragen wird. Die Umwandlung erfolgt im Hintergrund. Das Modell oder Skript bleibt unverändert. Dies trifft nur für Ausgabe-Feature-Classes zu, weil die Umwandlung auf dem Server erfolgt, der über alle für die Umwandlung erforderlichen Softwarebibliotheken verfügt. Streng genommen wird daher die Ausgabe von Feature-Classes nicht unterstützt. Sie sind für die Ausgabe zulässig, weil sie von ArcGIS Server in den unterstützten Datentyp "Feature-Set" umgewandelt werden können.
Feature-Layer
Ein Feature-Layer verweist auf eine Feature-Class auf der Festplatte und unterstützt eine Reihe ausgewählter Features, die das Ergebnis einer Attributabfrage oder räumlichen Abfrage sind. Sie erstellen Feature-Layer mithilfe des Werkzeugs Feature-Layer erstellen und führen Abfragen mit den Werkzeugen Layer nach Attributen auswählen und Layer lagebezogen auswählen aus. Geoverarbeitungs-Tasks geben nicht selten Feature-Layer aus, die eine Auswahl enthalten.
Wenn ArcGIS Server einen Ausgabe-Feature-Layer erkennt, werden die ausgewählten Features in eine Feature-Class konvertiert, und nur die ausgewählten Features werden zurück auf den Client übertragen.
Ausgabe-Feature-Layer können in Karten-Services des Ergebnisses nicht verwendet werden.
Wenn Sie Karten-Services des Ergebnisses verwenden, muss beachtet werden, dass zwei Services vorhanden sind – der Geoverarbeitungs-Service und der Karten-Service des Ergebnisses. Diese beiden Services werden unabhängig voneinander ausgeführt. Beim Ausführen des Tasks führt ArcGIS Server zunächst den Geoverarbeitungs-Task und dann den Karten-Service des Ergebnisses aus, um die Ausgabe des Geoverarbeitungs-Services darzustellen. Feature-Layer sind temporäre Objekte, die für die Dauer der Task-Ausführung im Arbeitsspeicher vorhanden sind. Nach Abschluss des Tasks werden die In-Memory-Feature-Layer entfernt. Wenn der Karten-Service des Ergebnisses auf dieselbe Feature-Class im Layer verweist, sind beim Darstellen durch den Karten-Service alle Informationen zu den ausgewählten Features (d. h. das Ergebnis des Tasks) nicht mehr vorhanden, und der Karten-Service des Ergebnisses stellt alle Features dar. Wenn ein Karten-Service ausgewählte Features in einem Layer darstellen soll, müssen Sie zunächst die ausgewählten Features mit dem Werkzeug Features kopieren in einer Feature-Class speichern und dabei den Feature-Layer als Eingabe verwenden. Mit "Features kopieren" werden nur die ausgewählten Features im Layer kopiert. Anschließend können Sie die kopierten Features mit einem Karten-Service des Ergebnisses darstellen.
Raster-Datasets
Raster-Datasets werden nur für ArcGIS Desktop-Clients als Ausgabe unterstützt.
Raster-Layer
Raster-Layer können Sie wie Feature-Layer nur auf ArcGIS Desktop-Clients ausgeben. Wenn ArcGIS Server einen Ausgabe-Raster-Layer erkennt, wird das Raster zurück auf den Client übertragen. Ausgabe-Raster-Layer können in Karten-Services des Ergebnisses aus demselben Grund nicht verwendet werden, aus dem Feature-Layer nicht verwendet werden können (siehe oben).
Andere Layer
Es wird nur die Ausgabe von Feature-Layern und Raster-Layern unterstützt (und Raster-Layer werden, wie erwähnt, nur für ArcGIS Desktop-Clients unterstützt). Alle anderen Arten von Layern, z. B. NetCDF-Layer, Netzwerkanalyse-Layer und Geostatistical Analyst-Layer, werden nicht unterstützt.
Andere Geodatasets
Bei Ausgabe-Geodataset-Datentypen, außer "Feature-Class" und "Raster" (z. B. "TIN" oder "Terrain"), können die Daten nicht zurück auf den Client übertragen werden. Jedoch kann der Geoverarbeitungs-Service über einen Karten-Service des Ergebnisses zum Anzeigen der Daten verfügen, und das Ergebnis des Geoverarbeitungs-Services ist ein Karten-Service-Layer, der auf jedem Client dargestellt werden kann.
Tabelle
Der Datentyp "Tabelle" wird wie der Datentyp "Feature-Class" ebenfalls unterstützt. Er wird in ein Recordset umgewandelt, um zurück auf den Client übertragen zu werden.
Strategien für nicht unterstützte Datentypen
Wenn das zu veröffentlichende Modell oder Skript nicht unterstützte Eingabe- oder Ausgabedatentypen aufweist oder wenn der Datentyp in eine Zeichenfolge konvertiert wird, müssen Sie das Modell bzw. Skript ändern, sodass nur die unterstützten Eingabe- und Ausgabedatentypen verwendet werden. Sie können zwei allgemeine Strategien nutzen:
- Verwenden der Zeichenfolgendarstellung
- Konvertieren von Daten in eine Datei
Verwenden der Zeichenfolgendarstellung
Jeder Datentyp verfügt über eine Zeichenfolgendarstellung. Weitere Informationen zu Datenzeichenfolgendarstellungen finden Sie unter Datentypen für Parameter für Geoverarbeitungswerkzeuge.
Wenn eine Eingabe des Modells von einem Datentyp ist, der beim Veröffentlichen auf ArcGIS Server in eine Zeichenfolge konvertiert wird, können Sie das Modell ändern, sodass Zeichenfolgeneingaben akzeptiert werden. Anschließend kann die Zeichenfolge in den gewünschten Datentyp konvertiert werden. In der folgenden Darstellung wird veranschaulicht, wie Sie diese Konvertierung durchführen. In dem Beispiel wird zunächst ein Wert eines Datentyps in eine Zeichenfolge konvertiert. Sie müssen für das Modell umgekehrt vorgehen, doch wird hierdurch ein wichtiges Konzept erläutert: Alle Datentypen verfügen über eine Zeichenfolgendarstellung. Im zweiten Teil des Beispiels wird das Konvertieren einer Zeichenfolge in einen Datentypwert veranschaulicht. Dies ist die Methode, die Sie für den Service verwenden.
Für die Darstellung wird der Datentyp "Flächeneinheit" verwendet.
Im ersten Teil der Darstellung wird das Zeichenfolgenformat einer Variablen vom Datentyp "Flächeneinheit" bestimmt.
- Erstellen Sie ein neues Modell.
- Erstellen Sie eine Variable mit dem Datentyp "Flächeneinheit", und benennen Sie sie in Input AU um.
- Fügen Sie das Werkzeug Wert berechnen hinzu.
- Doppelklicken Sie auf Wert berechnen, um das zugehörige Dialogfeld zu öffnen. Geben Sie für den Parameter Ausdruck den Text %Input AU% ein. Hierdurch erhält Wert berechnen die Anweisung, den Inhalt der Variablen Input AU zu lesen. Wählen Sie "Zeichenfolge" für den Parameter "Datentyp" aus (siehe Abbildung unten).
- Optional können Sie die Variable Input AU als Vorbedingung für Wert berechnen festlegen. Eine Variable als Vorbedingung bedeutet, dass die Variable einen Wert enthalten muss, damit das Werkzeug ausgeführt wird. Vorbedingungskonnektoren werden als gestrichelte Linien angezeigt (siehe Abbildung unten).
- Doppelklicken Sie auf die Variable Input AU, und legen Sie ihren Wert auf 1000 Square Meters fest.
- Klicken Sie auf OK.
- Führen Sie das Modell in ModelBuilder aus. Doppelklicken Sie auf output_value, und überprüfen Sie den Wert. Der Wert ist die Zeichenfolgendarstellung von "Flächeneinheit" (siehe Abbildung unten). Beachten Sie, dass in der Zeichenfolgendarstellung kein Leerzeichen zwischen Square und Meters vorhanden ist.
Wie oben veranschaulicht, verfügen alle Datentypenwerte über eine Zeichenfolgendarstellung. Mit Wert berechnen können Sie die Zeichenfolgendarstellung von jedem Datentyp anzeigen. Beispielsweise können Sie in Wert berechnen eine Variable vom Datentyp "Raumbezug" eingeben, um ihre Zeichenfolgendarstellung anzuzeigen.
In den folgenden Schritten wird gezeigt, wie Sie eine Zeichenfolgenvariable in einen anderen Datentyp konvertieren. Die Schritte sind dieselben wie weiter oben, mit der Ausnahme, dass die Eingabevariable vom Datentyp "Zeichenfolge" und die Ausgabe vom Datentyp "Flächeneinheit" ist.
- Erstellen Sie ein neues Modell.
- Erstellen Sie eine Variable mit dem Datentyp "Zeichenfolge", und benennen Sie sie in Input AU String um (siehe Abbildung unten).
- Fügen Sie das Werkzeug Wert berechnen hinzu.
- Doppelklicken Sie auf Wert berechnen, um das zugehörige Dialogfeld zu öffnen. Geben Sie für den Parameter Ausdruck den Text %Input AU String% ein. Hierdurch erhält Wert berechnen die Anweisung, den Inhalt der Variablen Input AU String zu lesen.
Wählen Sie "Flächeneinheit" für den Parameter "Datentyp" aus (siehe Abbildung unten).
- Optional können Sie die Variable Input AU String als Vorbedingung für Wert berechnen festlegen. Eine Variable als Vorbedingung bedeutet, dass die Variable einen Wert enthalten muss, damit das Werkzeug ausgeführt wird. Vorbedingungskonnektoren werden als gestrichelte Linien angezeigt (siehe Abbildung unten).
- Doppelklicken Sie auf die Variable Input AU String, und legen Sie ihren Wert auf 1000 squaremeters fest.
- Klicken Sie auf OK.
- Führen Sie das Modell in ModelBuilder aus. Doppelklicken Sie auf output_value, und überprüfen Sie den Wert. Der Wert ist eine Flächeneinheit (siehe Abbildung unten). Der Datentyp von output_value ist "Beliebiger Wert" und nicht "Flächeneinheit". "Beliebiger Wert" ist ein generischer Datentyp, der mit jedem Werkzeugparameter verbunden werden kann.
Dieses Konvertierungsverfahren wird auch im Modell "Select Layer By Area" unter Beispiel für GP-Service: Auswählen von Daten veranschaulicht.
In der Abbildung unten wird ein Modell dargestellt, in dem das Werkzeug Gebäude vereinfachen verwendet wird, das eine Flächeneinheit als Eingabe akzeptiert. Weil "Flächeneinheit" als Eingabeparameter-Datentyp für Geoverarbeitungs-Services nicht unterstützt wird, ist der Eingabeparameter Minimumfläche des Modells vom Datentyp "Zeichenfolge", der mit der oben beschriebenen Methode in "Flächeneinheit" konvertiert wird. Die Variable output_value wird mithilfe des Werkzeugs "Verbindung hinzufügen" von ModelBuilder mit dem Parameter Minimumfläche von Gebäude vereinfachen verbunden.).
Dieses Verfahren erfordert, dass der Benutzer des Werkzeugs die richtige Zeichenfolge eingibt. Wenn beispielsweise 1000 square meters (statt 1000 squaremeters) in Wert berechnen eingegeben wird, ist die resultierende Flächeneinheit leer. Die Groß-/Kleinschreibung wird nicht berücksichtigt, d. h., SquareMETERS und squareMeters sind äquivalent.
Wenn das Konvertieren einer Zeichenfolge in einen Datentyp zusätzliche Überprüfungen auf Fehler enthalten soll, können Sie ein Skriptwerkzeug für die Datentypkonvertierung erstellen und dem Skript Fehlerüberprüfungsfunktionen hinzufügen. Im folgenden Python-Code wird das Grundkonzept veranschaulicht.
import arcpy # Get the string and call SetParameterAsText on the output # in_string = arcpy.GetParameterAsText(0) # Do error checking/conversion here, converting "meters squared" # to "squaremeters" for example # Set the output parameter # arcpy.SetParameterAsText(1, in_string)
Wie unten dargestellt, ist der Eingabedatentyp des Werkzeugs "Zeichenfolge", und der Ausgabedatentyp ist der Zieldatentyp (z. B. "Flächeneinheit"). Der Ausgabeparametertyp ist "Abgeleitet".
Konvertieren von Daten in eine Datei
Für ordnerbasierte Workspaces (File-Geodatabase, Coverages und Shapefiles) können Sie den Benutzer anweisen, mit dem ZIP-Komprimierungsprogramm eine ZIP-Datei aus einem Workspace zu erstellen. Anschließend kann die ZIP-Datei in das Werkzeug eingegeben werden. Sie können im Geoverarbeitungs-Service das Dekomprimierungsskript (siehe unten) verwenden, um die Datei in einen Workspace zu dekomprimieren und damit weiter zu arbeiten. Dasselbe gilt auch für Ausgaben: Sie können eine .zip-Datei aus einem Workspace erstellen und diese als Ausgabe verwenden.
Im Folgenden finden Sie Links zu den beiden Python-Skripten zip.py und unzip.py.
- Das Skript zip.py akzeptiert einen Eingabe-Workspace (File-Geodatabase, einen Ordner mit Coverages oder mit Shapefiles, also alle Formate außer einer Personal- oder Enterprise-Geodatabase) sowie einen Ausgabedateinamen und erstellt eine komprimierte ZIP-Datei. Fügen Sie das Suffix .zip an den Ausgabedateiname an, da das Skript dies nicht automatisch durchführt.
Die Parametereigenschaften lauten folgendermaßen:
Parameter von "Zip.py"Beschriftung
Datentyp
Type
Richtung
Eingabe-Workspace
Workspace
Erforderlich
Eingabe
Ausgabedatei
Datei
Erforderlich
Ausgabe
- Das Skript unzip.py akzeptiert eine ZIP-Datei, einen Ausgabespeicherort (einen vorhandenen Ordner) sowie einen Ausgabenamen (der als neuer Ordner erstellt wird) und schreibt den Inhalt in den neuen Ordner. Wenn die ZIP-Datei eine File-Geodatabase enthält, fügen Sie die Erweiterung .gdb an den Ausgabenamen an.
Beschriftung |
Datentyp |
Type |
Richtung |
---|---|---|---|
Eingabe-ZIP-Datei. |
Datei |
Erforderlich |
Eingabe |
Ausgabespeicherort |
Workspace |
Erforderlich |
Eingabe |
Ausgabename |
Zeichenfolge |
Erforderlich |
Eingabe |
Ausgabepfad |
Workspace |
Abgeleitet |
Ausgabe |
Beispiele für die Verwendung der Komprimierungsprogramme finden Sie unter Beispiel für GP-Service: Ausschneiden und senden und unter Beispiel für GP-Service: Bedarfsgesteuerte Daten.