Integrieren von Skripten in ein Modell

Python oder andere Sprachskripte können in Modelle integriert werden, indem sie einem Skriptwerkzeug und das Skriptwerkzeug einem Modell hinzugefügt werden. Dies ist sinnvoll, wenn Python oder eine andere Skriptsprachenlogik erforderlich ist, um ein Modell zu optimieren oder aus ArcGIS auf ein externes Paket oder Programm zuzugreifen.

Die Integration von Skripten in Modelle beginnt im tatsächlichen Skript. Das Skript muss so erstellt werden, dass es in die Geoverarbeitungsumgebung integriert werden kann. Weitere Informationen finden Sie unter Erstellen eines Python-Skripts.

Nach der Erstellung des Skripts kann ein Skriptwerkzeug erstellt und einer Toolbox hinzugefügt werden. Dieses Skriptwerkzeug kann einem Modell hinzugefügt und verwendet werden, um zusätzliche Funktionalität für das Modell bereitzustellen.

Beispielanwendung

ArcGIS ist nicht für HTML konzipiert. Die Python-Skripterstellung bietet jedoch Zugriff auf Methoden und Funktionen, mit denen HTML-Dokumente erstellt und geändert werden können. Um diese HTML-Funktionalität in ArcGIS zu integrieren, betten Sie ein Python-Skriptwerkzeug in ein Modell ein.

Im folgenden Beispiel werden räumliche Abfragen und Attributabfragen für den Layer eines Flurstücks ausgeführt und ein HTML-Bericht generiert, der die Attribute eines vom Benutzer angegebenen Flurstücks und benachbarter Flurstücke auflistet. Die HTML-Erstellung wird innerhalb eines Python-Skripts ausgeführt, das vom Modell ausgeführt wird.

Python-Skript

Das folgende Skript tabletohtml.py wird verwendet, um den Inhalt einer Eingabe-Tabelle zu lesen und einen HTML-Bericht zu generieren. Der Skriptcode wird am Ende dieses Themas bereitgestellt.

Tabelle-zu HTML-Python-Skript

Erstellen eines Skriptwerkzeugs

Die Schritte unten zeigen, wie ein Skriptwerkzeug erstellt wird, das das Skript tabletohtml.py ausführt. Weitere Details zum Erstellen von Skriptwerkzeugen finden Sie unter Kurzer Überblick über das Erstellen von Skriptwerkzeugen

Schritte:
  1. Klicken Sie mit der rechten Maustaste auf die entsprechende Toolbox, und klicken Sie auf Hinzufügen > Skript.
    Hinzufügen eines neuen Skripts

    Der Assistent Skript hinzufügen wird geöffnet.

  2. Verwenden Sie den Assistenten Skript hinzufügen", um allgemeine Skripteigenschaften anzugeben.
    Allgemeine Skripteigenschaften
  3. Geben Sie auf der nächsten Seite des Assistenten Skript hinzufügen an, welches Skript ausgeführt wird, wenn das Skriptwerkzeug ausgeführt wird.
    Skriptquelldatei
  4. Geben Sie auf der nächsten Seite des Assistenten Skript hinzufügen die Skriptwerkzeug-Parametereigenschaften an. Dieses Skriptwerkzeug verfügt über zwei Parameter: eine Eingabe-Tabelle und eine Ausgabe-HTML-Datei. Diese Parameter wurden auch in tabletohtml.py definiert.
    Festlegen von Skriptwerkzeug-Parametereigenschaften
  5. Klicken Sie auf Fertig stellen, um das Skriptwerkzeug zur Toolbox hinzuzufügen.

Hinzufügen des Skriptwerkzeugs zu einem Modell

Schritte:
  1. Das Modell "Flurstückbericht" führt räumliche Abfragen und Attributabfragen für den Layer eines Flurstücks aus. Fügen Sie das Tabelle-zu-HTML-Skript dem Modell hinzu, um die gewünschte HTML-Erstellungsfunktionalität hinzuzufügen.
    Hinzufügen des Skriptwerkzeugs zu einem Modell
  2. Verbinden Sie die Ausgabe des Werkzeugs Layer lagebezogen auswählen als Eingabe mit dem Skriptwerkzeug, und legen Sie den Pfad der Skriptwerkzeugausgabe fest (der Pfad der zu generierenden HTML-Datei). Benennen Sie die Ausgabe des Skriptwerkzeugs darüber hinaus in Bericht um, und wandeln Sie die Variable in einen Modellparameter um.
Beispielmodell mit Skriptwerkzeug
Das fertige Modell mit einem Skriptwerkzeug, das zur Generierung eines HTML-Berichts verwendet wurde
import sys, string, os, arcgisscripting
gp = arcgisscripting.create(9.3)

tablePath = gp.GetParameterAsText(0)
filePath = gp.GetParameterAsText(1)

outfile = open(filePath, "w")
fields = gp.ListFields(tablePath)

fieldNames = []
for field in fields:
   if (field.type <> "Geometry" and field.type <> "BLOB"):
       fieldNames.append(field.name)
outfile.write("<table border=""1"">\n")
outfile.write("<tr>\n")

for fieldName in fieldNames:
    outfile.write("<th>" + fieldName + "</th>\n")
outfile.write("</tr>\n")

cur = gp.SearchCursor(tablePath)
row = cur.Next()
while row:
    outfile.write("<tr>\n")
    for fieldName in fieldNames:
        outfile.write("<td>" + str(row.getValue(fieldName)) + "</td>\n")
    outfile.write("</tr>\n")

    row = cur.Next()

del cur

outfile.write("</table>\n")

outfile.flush()
outfile.close()

7/10/2012