Beispiel für GP-Service: Bedarfsgesteuerte Daten

Komplexität: Einsteiger Erforderliche Daten: ArcGIS Tutorial Data Setup

Ordner

DataOnDemand

Zweck

Schneidet Datasets unter Verwendung eines vom Benutzer digitalisierten Polygons in einer File-Geodatabase aus, gibt Shapefiles aus und erstellt dann eine ZIP-Datei, die per E-Mail an den Benutzer gesendet wird.

Services

PortlandDataMapService (Karten-Service), DataOnDemand (Geoverarbeitungs-Service).

Geoverarbeitungs-Tasks

ClipZipAndEmail

Eingaben

Interessensbereich (Polygon-Feature-Set) und eine E-Mail-Adresse, an die die Daten gesendet werden sollen.

Ausgaben

aoizip.zip, eine komprimierte Datei, die die Daten enthält.

Daten

In dem Beispiel wird ein kleines Dataset der Stadt Portland, Oregon, verwendet.

Erweiterungen

Keine.

Hinweis

Dieser Service befindet sich auf dem Beispielserver von Esri – siehe Hinweis weiter unten. Dies ist ein Service zum Ausschneiden und Senden, wie im Thema Beispiel für Ausschneiden und Senden beschrieben.

Besonderheiten dieses Beispiels

Entsprechender Ordner

C:\arcgis\ArcTutor\GP Service Examples\DataOnDemand enthält die Werkzeuge und Daten.

Besonderheiten dieses Beispiels

Der Service "DataOnDemand" ist ein weiteres Beispiel für einen Service zum Ausschneiden und Senden. Bevor Sie diesen Service erkunden, sollten Sie das Thema Beispiel für Ausschneiden und Senden lesen, da die Features und Funktionen dieses Service mit jenem Service verglichen werden, wie kurz in der folgenden Tabelle beschrieben. Wenn Sie einen eigenen Service zum Ausschneiden und Senden erstellen, können Sie in Ihrem Service die Merkmale und Funktionen beider Services kombinieren.

Beispiel für Ausschneiden und Senden

Das Beispiel

Der Benutzer kann auswählen, welche Layer heruntergeladen werden.

Es wird ein vorab festgelegter Satz von Daten heruntergeladen.

Der Raumbezug der Ausgabedaten kann angegeben werden.

Der Raumbezug kann nicht angegeben werden. Er ist auf den Raumbezug der Datasets festgelegt, die ausgeschnitten werden.

Das Ausgabeformat kann angegeben werden.

Es werden nur Shapefiles ausgegeben.

Verwendet Modelle, Skripte und Werkzeug-Layer. Der Service wird mit einem Kartendokument veröffentlicht.

Es werden keine Modelle, sondern nur Skripte verwendet. Es wird kein Kartendokument veröffentlicht, sondern die Toolbox.

Layer aus dem Kartendokument werden ausgeschnitten.

Datasets werden ausgeschnitten. (Weil kein Quellkartendokument vorhanden ist, das Layer enthält, können keine Layer, sondern nur Datasets verwendet werden.)

Der Interessensbereich (das vom Benutzer digitalisierte Clip-Polygon) wird nicht heruntergeladen.

Der Interessensbereich wird heruntergeladen.

Die Ausgabe kann nicht per E-Mail gesendet werden.

Die Ausgabe kann per E-Mail gesendet werden, indem ein Name des E-Mail-Servers im Skript "ClipZipAndEmail" (Quelldatei ist DataOnDemand/Scripts/zipandemail.py) angegeben wird.

Vergleich zwischen dem Beispiel für Ausschneiden und Senden und diesem Beispiel für DataOnDemand

Weitere Features dieses Service:

Dieser Service wird von Esri bereitgestellt.

Dieser Service wird auf den ArcGIS Online-Servern von Esri bereitgestellt. Sie können den Service wie folgt testen:

  1. Fügen Sie http://sampleserver1.arcgisonline.com/arcgis/services als ArcGIS-Server hinzu.
  2. Fügen Sie http://sampleserver2.arcgisonline.com/arcgis/services als ArcGIS-Server hinzu.
  3. Fügen Sie in ArcMap den Karten-Service Portland/Portland_ESRI_LandBase_AGO von "sampleserver1" hinzu.
  4. Fügen Sie ArcToolbox den Geoverarbeitungs-Service Portland/ESRI_CadastralData_Portland von "sampleserver2" hinzu.
  5. Erweitern Sie die Toolbox "ESRI_CadastralData_Portland", und führen Sie den Task "ClipAndShip" aus.

Die Skripte und Werkzeuge im Ordner "DataOnDemand" sind mit den Skripten und Werkzeugen identisch, die vom Task "ClipAndShip" im Geoverarbeitungs-Service "ESRI_CadastralData_Portland" verwendet werden. Bei den Daten für dieses Beispiel, die sich in DataOnDemand/ToolData/Portland.gdb befinden, handelt es sich um eine kleine Teilmenge der im Karten-Service "Portland_Portland_ESRI_LandBase_AGO" verwendeten Daten.

HinweisHinweis:

Die Karten- und Geoverarbeitungs-Services in "sampleserver1" und "sampleserver2" werden zukünftig möglicherweise geändert. Es ist nicht gewährleistet, dass die oben beschriebenen Services immer verfügbar sind.

Daten

Die Daten stellen ein kleines Gebiet in der Stadt Portland, Oregon, dar und befinden sich in C:\arcgis\ArcTutor\GP Service Examples\DataOnDemand\ToolData\Portland.gdb.

Für das Werkzeug "ClipZipAndEmail" wird eine Feature-Set-Variable verwendet, die ein Schema erfordert, um die Feature-Typen und -Felder zu definieren. Das Schema befindet sich in C:\arcgis\ArcTutor\GP Service Examples\DataOnDemand\ToolData\Templates.gdb.

Der Ordner "ToolData" enthält außerdem die Datei "Mapofzip.mxd", die in der ZIP-Datei enthalten ist und in der die ausgeschnittenen und gesendeten Daten angezeigt werden.

Skripte

Die Toolbox "DataOnDemandTools" enthält das Skriptwerkzeug "ClipZipAndEmail". Die Quelle für dieses Skriptwerkzeug ist DataOnDemand/Scripts/zipandemail.py.

Vor Verwendung des Werkzeugs "ClipZipAndEmail" müssen Sie den Code bearbeiten und den Namen des E-Mail-Servers angeben. (Sie können den Python-Quellcode direkt in einer Anwendung, z. B. PythonWin, bearbeiten, oder klicken Sie mit der rechten Maustaste auf das Skriptwerkzeug, und klicken Sie auf "Bearbeiten".) Den Namen des E-Mail-Servers erhalten Sie von Ihrem Systemadministrator.

Nachfolgend werden einige wichtige Eigenschaften und Funktionen des Skriptes beschrieben.

Veröffentlichen

"PortlandDataMapService" wird als Karten-Service veröffentlicht.

Die Toolbox "DataOnDemandTools" wird als Geoverarbeitungs-Service veröffentlicht.

Konfigurieren des Service

Um den Service für die Daten zu konfigurieren, müssen Sie das Skriptwerkzeug "ClipZipAndEmail" bearbeiten. Die Quelle für dieses Skriptwerkzeug ist DataOnDemand/Scripts/zipandemail.py. Sie können den Python-Quellcode direkt in einer Anwendung, z. B. PythonWin, bearbeiten, oder klicken Sie mit der rechten Maustaste auf das Skriptwerkzeug, und klicken Sie auf Bearbeiten.)

Sie müssen den Speicherort der Daten und die Liste der Datasets ändern. Gehen Sie in der Routine "main" wie folgt vor:

if __name__ == '__main__':

Suchen Sie die Definition der Variablen dataloc, und ändern Sie sie:

 global dataloc; dataloc = os.path.dirname(sys.path[0]) + g + "tooldata" + g + "portland.gdb" + g

Der Speicherort der Daten wird relativ zum Speicherort des Skriptes angegeben.

Weitere Informationen zum Erstellen von Pfaden mithilfe des Skriptspeicherortes

Ändern Sie anschließend die Liste der auszuschneidenden Datasets im folgenden Codeausschnitt:

    ds = ["Streets" + g + "streets", \
            "Water" + g + "StreamRoute", "Water" + g + "floodplain", "Water" + g + "riv_fill", \
            "Transit" + g + "railroad", \
            "Census" + g + "blockgrp", \
            "Develop" + g + "Buildings", \
            "Land" + g + "zoning", "Land" + g + "Parks", \
            "Places" + g + "schools", "Places" + g + "hospital"]

Schließlich müssen Sie im Skript "sendemail.py" den Namen des E-Mail-Servers angeben. Der Code, den Sie ändern müssen, befindet sich am Anfang des Skriptes:

def send_mail(send_from, send_to, subject, text, f=""):
    assert type(send_to)==list

    # Provide the name of your email server below
    #
    server = "ouremailserver.somewhere.com"

Verwandte Themen


3/6/2012