Wann sollte ModelBuilder über Python-Scripting verwendet werden und umgekehrt?

71

Ich bin neu in der Python-Skripterstellung in ArcGIS, aber nicht neu in ModelBuilder.

Ich würde gerne die Vorteile von Python vs ModelBuilder kennenlernen.

Wann sollten wir ein Python-Skript für die GIS-Automatisierung schreiben, anstatt ModelBuilder zu verwenden?

Welche Automatisierungsfunktionen von Python stehen in ModelBuilder nicht zur Verfügung?

BBG_GIS
quelle

Antworten:

82

Ich bin der Meinung, dass der Benutzer seine Ziele klar definieren sollte, bevor er entscheidet, welche Tools er verwenden möchte. ModelBuilder- und Python-Skripte zeichnen sich durch unterschiedliche Aufgaben aus. Ein paar Gedanken:

  1. ModelBuilder verfügt nicht über Zuordnungsfunktionen, arcpy.mapping hingegen nicht.
  2. Mit Python können Workflows optimiert werden, z. B. mit dem Multiprocessing-Paket oder mit der Parallelverarbeitung .
  3. Python ermöglicht verschachtelte Schleifen und andere praktische iterative Logikwerkzeuge. Um ein ähnliches Ergebnis in ModelBuilder zu erzielen, müssen Sie komplizierte und komplizierte verschachtelte Modelle erstellen.
  4. Einfache Textbearbeitung ist mit Python sehr einfach und mit ModelBuilder entweder sehr schwierig oder nicht möglich.

    B. eine Liste von Dateinamen von "m_2010_naip_2310345_nw.img" nach "2310345nw.img" umzubenennen, ist mit Python mit dem os.pathModul problemlos möglich .

Auf der anderen Seite:

  1. ModelBuilder ist sehr nützlich, um allgemeine Tools schnell zusammenzustellen und das Debuggen von Skripten zu vermeiden.

  2. ModelBuilder verfügt über einen sehr nützlichen rekursiven Iterator , der einfach zu implementieren ist, um Ordner und Unterordner zu durchlaufen.

  3. ModelBuilder zeichnet sich durch eine visuelle und intuitive Darstellung des Workflows für komplizierte Aufgaben aus .

  4. Modelbuilder können Python integrieren Skript - Tools .

Aaron
quelle
5
Beschriebene Unterschiede zwischen Python und Model Builder in ArcGIS. Vielen Dank
BBG_GIS
24
Ich würde auch hinzufügen: 1. Sie können Ihr Python-Skript außerhalb von ArcMap ausführen. 2. Sie können ArcObjects in Python verwenden. 3. Möglicherweise gibt es einige Geschwindigkeitsunterschiede.
Tomek
3
+1 verschachtelte LOOPS & arcpy.mapping! Ich mag die Möglichkeit, Berechnungen innerhalb eines Skripts durchzuführen und sie Attributtabellen oder besser noch dem Kartenlayout hinzuzufügen (zum Beispiel dem Gebiet jedes Feuchtgebietstyps).
Roy
2
Ich habe Python-Scripting für das ArcGIS-Buch gelesen. Ich füge noch weitere Funktionen hinzu: Mit 1-Skript-Cursorn können Sie Datensätze in einer Tabelle durchlaufen, vorhandene Zeilen lesen und neue Zeilen einfügen. 2-Scripting kann verwendet werden, um andere Software einzuschließen, d. H., Um Anwendungen zusammenzufügen. Mit Python können Sie beispielsweise auf Funktionen in Microsoft Excel oder im Statistikpaket R zugreifen. 3-Ein Skript kann als eigenständiges Skript auf einem Datenträger außerhalb von ArcGIS ausgeführt werden. Sie müssen ArcMap oder ArcCatalog nicht ausführen, um ein Skript auszuführen Arbeit. (Python Scripting für ArcGIS, Kapitel 2, Seite 39)
BBG_GIS
24

Wenn Sie ausschließlich innerhalb von ArcGIS arbeiten, gibt es einige Überlegungen, die ich berücksichtigen möchte, wenn ich versuche, den zu verwendenden Ansatz zu bestimmen.

  • Was versuchst du zu erreichen,
  • Was sind Ihre aktuellen Fähigkeiten,
  • Werden Sie Ihre Arbeit mit anderen teilen, um sie zu nutzen, daraus zu lernen oder zu manipulieren und
  • Wer ist dein Zielpublikum?

Angesichts dieser Überlegungen:

  1. Das Erstellen eines Prozesses ist in ModelBuilder häufig schneller und einfacher als in Python, es sei denn, ein Teil Ihres Prozesses kann nicht in ModelBuilder repliziert werden.
  2. Wenn Sie Python nicht kennen und nicht beabsichtigen, es zu lernen, ist ModelBuilder eine großartige Option.
  3. Wenn Sie Python nicht kennen und lernen möchten, es in Ihre Fähigkeiten einzubeziehen, ist ModelBuilder eine gute Möglichkeit, zunächst einfache Modelle zu erstellen und sie dann nach Python zu exportieren, damit Sie das Grundgerüst Ihres endgültigen Prozesses vorab haben . Diese Methode ist mit Kosten verbunden, da während des Konvertierungsprozesses in der Regel eine Menge irrelevanter Informationen und Variablen erstellt werden. Es ist jedoch immer noch eine gute Möglichkeit, mit dem Lernen zu beginnen.
  4. Wenn Sie Werkzeuge für den persönlichen Gebrauch erstellen, ist die Route in der Regel diejenige, mit der Sie sich am wohlsten fühlen. Ich persönlich benutze beides, je nach meinen Bedürfnissen.
  5. Wenn Sie vorhaben, Ihre Analyse mit anderen zu teilen und Ihr Modell / Skript mit anderen zu teilen, sind diese Teile Ihrer Prozessdokumentation. Ein Modell ist im Allgemeinen für nicht-technische Personen viel einfacher zu verfolgen und zu verstehen.

Es gibt wahrscheinlich keine Antwort auf "was ist besser" für den persönlichen Gebrauch, aber wenn Sie langfristig nach Beschäftigungsmöglichkeiten suchen, werden Sie sich durch das Erlernen von Python von denen abheben, die nur wissen, wie man die vorprogrammierten Werkzeuge verwendet, oder Sie müssen nur wissen, wie Sie ModelBuilder verwenden. Sie können auch die Grenzen von Python for ArcGIS (ArcPy) verlassen und weitaus mehr Aufgaben und Projekte automatisieren, indem Sie andere proprietäre und Open-Source-GIS-Bibliotheken sowie viele Nicht-GIS-Bibliotheken (dh Datenbanken) verwenden , Bildmanipulation, Statistiken usw.).

RyanDalton
quelle
20

Model Builder ist eine großartige und einfach zu erlernende visuelle Programmiersprache und ein guter Einstieg in die GIS-Programmierung im Allgemeinen. Aber in einigen Dingen kann Python mehr.

Ein Beispiel ist die Integration von Nicht-ESRI-GIS-Bibliotheken. Fast alle Open Source GIS können auch über Python angesprochen werden (zB GRASS , Sextante , QGIS , SAGA ). Dies hat mir sehr geholfen, da ich nur eine ArcView-Lizenz besitze. Jedes Mal, wenn ich ein bestimmtes Geoverarbeitungswerkzeug in ArcGIS nicht verwenden kann, überprüfe ich, welche anderen Optionen in Open Source GIS verfügbar sind. Ich nehme diese OpenSource-Tools und kombiniere sie mit ArcGIS-Tools entweder in einem größeren Python-Skript oder binde sie über ein kleineres Python-Skript in ModelBuilder ein.

Ich bin mir sicher, dass andere Mitglieder weitere Vorteile nennen können.

Martin
quelle
9

Wenn Sie Python und ArcGIS verwenden, erhalten Sie zusätzlich zu den Funktionen, die Sie bereits in ArcGIS hatten, die gesamte Funktionalität von Python. Ob Sie diese Kraft und Flexibilität brauchen, hängt von Ihren Wünschen ab. Darüber hinaus dauert es einige Zeit, eine Programmiersprache wie Python kennenzulernen und wirklich einzusetzen. Ob sich diese Investition für Sie lohnt, liegt ganz bei Ihnen. Für eine seriöse Datenverarbeitung ist jedoch eine echte Skriptsprache eine sehr gute Ergänzung in Ihrem Arsenal.

Abgesehen von jeglicher Funktionalität, die der ModelBuilder möglicherweise vermisst, gibt es auch eine grundlegendere Diskussion. Im Allgemeinen eignen sich Skripte viel besser zum Erstellen komplexer Workflows. Der Code wird von oben nach unten abgearbeitet und komplexe Aufgaben können zB mit Funktionen in kleinere Unteraufgaben unterteilt werden. oder Gegenstände. Ein grafisches Werkzeug wie der Modellbauer neigt dazu, eine große Spaghetti zu werden.

Paul Hiemstra
quelle
7

Ich bin ein Teil der Erstellung von Python-Skripten. Es macht mehr Spaß, Code zu schreiben, als mit Verbindungslinien zu Boxen und dergleichen herumzuspielen, zumindest für mich.

Das Tolle an Python-Skripten ist, dass Sie die Ausführung Ihrer Skripten zu einem für Sie günstigen Zeitpunkt planen können. Wenn Sie ein Skript haben, dessen Fertigstellung einige Zeit in Anspruch nimmt oder das außerhalb der regulären Geschäftszeiten ausgeführt werden muss, ist dies sehr praktisch. Sie können ein Beispiel dafür , wie ein Skript planen hier .

Und wie @Aaron erwähnt, können Sie das Looping in einem Python-Skript ganz einfach einrichten.

Wenn Sie nur mit Python-Skripten beginnen, möchten Sie möglicherweise ein Modell mit Model Builder erstellen und als Python-Skript exportieren. Ich mache das manchmal, wenn ich Probleme habe zu verstehen, wie man mehrere Werkzeuge in einem Skript benutzt. Es könnte Ihnen helfen, ein Gefühl dafür zu bekommen, wie Sie Skripte zusammenstellen.

Patty Jula
quelle
5

Ich habe festgestellt, dass ich anscheinend mit keiner Lösung mehr mit Model Builder als mit Python-Scripting hängen bleibe. Die etwas „Black Box“ -Natur des Modellbauers macht es mir schwerer zu finden, wo sich das Problem befindet.

Ich habe auch festgestellt, dass ich viel mehr Hilfe zu Python finden kann. Ich neige dazu, viele Sackgassen und Themen zum Modellbau zu finden. Es gibt auch weniger Beispiele, bei denen Sie wie bei Python wahrscheinlich kleine Ausschnitte der meisten Teile eines Skripts finden, das Sie schreiben.

Rex
quelle