Anwenden der Versionskontrolle auf ArcGIS ModelBuilder-Modelle?

16

Die Versionskontrolle ist ein unverzichtbares Werkzeug für die Softwareentwicklung, mit dem Sie zuverlässig und sauber in die Vergangenheit zurückkehren können, als X seinen Job genau richtig gemacht hat, oder um zu sehen, was sich zwischen damals und heute geändert hat - normalerweise, wenn Sie herausfinden möchten, warum X funktioniert nicht mehr genau richtig.

Alle mir bekannten Tools funktionieren jedoch nur für reine Textdateien. Toolboxen (Standard- Toolboxen , nicht die in 10.1 eingeführten Python-Toolboxen ) und damit ihre Modelle sind binär. Hat jemand eine praktikable Methode, um Versionierung zu bringen?

Hinweis: Die Versionierung unterscheidet sich von der Sicherung . Es gibt eine Reihe von einfachen Methoden Schnappschüsse von Dateien für eine bestimmtes Datum / Uhrzeit erstellen - Windows - Backup, frühere Versionen , xcopy /s d:\foobar\ x:\foobar_%date%, zip stuff_%date%.zip stuff\*, und so weiter.

Das Anwenden eines Tools wie " git" , " fossil" , " mercurial" , " subversion" oder " ..." auf eine Binärdatei ist einen Schritt besser als die Verwendung von "xcopy" oder "zip in", da eine Festschreibungsmeldung hinzugefügt werden kann. "Model foobar% date% überschreibt jetzt die vorherige Ergebnisse nur, wenn Baz nicht existiert " , aber immer noch anämisch im Vergleich zu dem, was dasselbe Toolset für Textdateien tun kann: Zeigen Sie mir beispielsweise genau, was sich zwischen dem letzten Jahr und dem heutigen Tag geändert hat .

WinMerge-Screenshot

Matt Wilkie
quelle

Antworten:

9

Jede gängige Versionskontrollsoftware, sei es eine zentrale Versionskontrolle wie SVN oder verteilte Lösungen wie Git, Mercurial, Bazaar usw., ermöglicht die Speicherung von Binärdateien. Sie sind alle sehr effektiv, sowohl in Bezug auf die Leistung als auch in Bezug auf den belegten Raum.

Die Überprüfung von Unterschieden zwischen Revisionen / Versionen einer Datei ist natürlich eine andere Geschichte. Wenn Sie ArcGIS-Modelle vergleichen möchten, die tatsächlich binär sind, können Sie nicht viel tun. Ich kenne keine Diff-Tools für Modelle, ich bezweifle, dass es welche geben wird, da die meisten Leute diese spezifische Funktionalität nicht benötigen.

Petr Krebs
quelle
Aber Sie könnten trotzdem ein Rollback durchführen und / oder frühere Versionen abrufen, oder?
Chad Cooper
1
Nun ja, aber ich denke, die Frage geht eher dahin, die tatsächlichen Unterschiede zwischen den Modellen zu erkennen, wenn ich sie richtig verstehe.
Petr Krebs
Das ist richtig. Ich habe die binäre TBX-Datei bereits in VC abgelegt (mithilfe von Mercurial), aber das unterscheidet sich nicht wesentlich davon, nur die gleiche Datei aus einer regulären Sicherung abzurufen.
Matt Wilkie
1
Mit git attributes können Sie einige Binärdateien mit einfachen Programmen versionieren. Es gibt bereits Programme für .docx- und image exif-Metadaten. ArcGIS-Modelle benötigen ein ähnliches benutzerdefiniertes Programm.
James Conkling
Gute Idee, @JamesConkling. Wollen sich irgendwelche Esri-Mitarbeiter freiwillig melden?
nmpeterson
7

Derzeit wird der Workflow von ArcCatalog ausgeführt: Öffnen der Toolbox> Auswählen des Modells> Bearbeiten> Datei> Exportieren> In Python , Wechseln zum SCM-Tool > Aktualisieren von Änderungen> Festschreiben von Änderungen (Geben Sie einen Protokollkommentar ein) .

Es ist umständlich, deshalb mache ich es nicht so oft und verliere dadurch viele der Vorteile der Versionierung.

Matt Wilkie
quelle
1
Ich akzeptiere die Antwort vorerst, weil es das ist, was ich tue. Ich werde gerne zu einem besseren wechseln, wenn es auftaucht!
Matt Wilkie
kein problem matt. Trotzdem kann man kein Kopfgeld gewinnen
Below the Radar
@ unten bin ich mir dessen bewusst, nach Lösungen nicht Kopfgeld (und akzeptierte Antwort, bevor ich das Kopfgeld trotzdem geöffnet)
matt Wilkie
6

ModelBuilder ist alt, klobig und wird mit ArcGIS Pro nicht mehr aktualisiert, wenn dieser Tweet ein Hinweis ist. Ich war noch nie ein großer Fan davon (obwohl ich es immer noch missbilligend benutze, wenn ich muss), daher könnten Sie diese Antwort als Umgehung der Frage und als Empfehlung betrachten, nach Alternativen zu suchen .

FME ist wohl die naheliegendste ModelBuilder-Alternative, da sie eine ähnliche Flussdiagramm-Benutzeroberfläche hat. Ein relevanter Vorteil ist, dass die Dokumente im Nur-Text-Format vorliegen und daher unterschiedlich sein können (obwohl es oft bedeutungslose, automatisch generierte Cruft gibt, deren Ignorieren Sie erst lernen müssen). Da es sich jedoch um kommerzielle Software handelt, sind die Kosten für einige möglicherweise nicht in Reichweite.

Andere, mit denen ich weniger vertraut bin, sind die Orfeo Toolbox , die Whitebox Geospatial Analysis Tools und der grafische Modellierer von QGIS (basierend auf SEXTANTE ). Dies sind alles Open Source-Modellierungsumgebungen mit GUIs.

Ein großer Schub, den ich in den letzten Jahren bei GIS und Open Data-Konferenzen beobachtet habe, geht in Richtung "reproduzierbare Forschung", dh Daten und Prozesse, die leicht mit anderen geteilt und reproduziert werden können. Dies bedeutet häufig die Verwendung offener Datenformate, Open Source-Software und freigegebener Repositorys. Python und R sind dafür sehr beliebt.

Ich dachte, dass Dharhas Pothinas Präsentation zu Python und GIS Anfang dieses Jahres ein gutes Argument dafür ist. Ich stimme voll und ganz zu, dass eine zu starke Abhängigkeit von einer grafischen Benutzeroberfläche die Reproduzierbarkeit beeinträchtigt. Mit Code können Sie, solange Sie mit der Sprache vertraut sind, diese ziemlich schnell durchsuchen und herausfinden, was los ist. Mit einer grafischen Benutzeroberfläche müssen Sie durch viele verschiedene Fenster scrollen, die oft tief ineinander verschachtelt sind , um an Werte und Einstellungen zu gelangen.

Natürlich gibt es hier einen Kompromiss, aber meiner Meinung nach sollte jeder, der ernsthafte Arbeit leistet (wissenschaftliche Forschung, Politikgestaltung usw.), Werkzeuge verwenden, die die Reproduzierbarkeit erleichtern.

Entschuldigung, dass dies Ihre Frage nicht direkt beantwortet (obwohl ich nicht glaube, dass es eine einfache Antwort gibt).

blah238
quelle
3
Konnte nicht mehr über das Konzept der reproduzierbaren Forschung übereinstimmen. Für mich ist es der überzeugendste Grund, warum Forscher OSS einsetzen sollten.
1.
2
Ich kann mich nicht mehr darauf einigen, dass das starke Vertrauen in die grafische Benutzeroberfläche häufig die Reproduzierbarkeit beeinträchtigt. Der Rubel mit Code lautet "solange Sie mit der Sprache vertraut sind" . Die geringe Größe dieses Tores hält viele kluge und produktive Menschen draußen in der Wildnis. Wirklich ist der Kern dieser Frage die Suche nach einer Möglichkeit, dieses Tor zu erweitern. Es ist frustrierend, weil Modeller fast sowohl GUI als auch Code hat. Du hast recht, es verdorrt am Rebstock durch mangelnde Aufmerksamkeit. Traurig, wir haben Leute, die gerade Mojo in der Automatisierung und im Scripting finden, durch die Annäherung von Modeller.
Matt Wilkie
4

Die Einführung von Python-Toolboxen in ArcGIS 10.1 for Desktop macht Ihre vier Jahre alte Aussage ungültig, dass alle :

Toolboxen und damit ihre Modelle sind binär.

Standard-Toolboxen sind Binärdateien, aber Python-Toolboxen (* .pyt) sind Textdateien.

Folglich denke ich, dass Python-Toolboxen in Betracht gezogen werden sollten, wenn die Versionskontrolle des Quellcodes die Anforderungen an eine GUI zur Modellbildung übertrifft.

Sie kennen dies aus Ihrer Antwort auf Warum sollten Sie Python-Toolboxen über Python-Skript-Tools lernen / verwenden? Aber ich dachte, ich sollte dies hier als Antwort aufnehmen, damit die Option, Python-Toolboxen anstelle von Standard-Toolboxen zu verwenden (um einen einfachen Zugriff auf die Versionskontrolle zu erhalten), von zukünftigen Lesern dieser Fragen und Antworten nicht übersehen wird.

PolyGeo
quelle
Vielen Dank, dass Sie diesen wichtigen Unterschied gemacht haben. Es ist bedauerlich, dass dasselbe Wort, Toolbox, für tatsächlich ganz unterschiedliche Kreaturen verwendet wird. Ich werde den Wortlaut entsprechend aufarbeiten.
Matt Wilkie
1

Ich bin in vielerlei Hinsicht froh, dass ESRI mit der Umstellung auf ArcGIS Pro nicht das gesamte Geoprocessing Framework und Modelbuilder überarbeitet hat. Es gibt viele (Forschungs-) Organisationen, die massiv in den Bau von riesigen kundenspezifischen Modellen investiert haben, die zweifellos eine vollständige Überarbeitung benötigen würden, wenn ESRI die Kompatibilität nicht mehr gewährleisten würde.

Wie beim Übergang zu Python / Geoverarbeitung aus dem Hintergrund von Arc / Info-AML-Makros würde dies zweifellos eine enorme Auswirkung haben und viele Menschen in Gefahr sein. Sogar 5 - 8 Jahre nach der ersten Veröffentlichung von ArcGIS gab es immer noch Forscher und Regierungsorganisationen, die gelegentlich in Foren wie diesem auf AML-Modelle Bezug nahmen und die aus Zeit-, Geld- oder Kostengründen noch nicht in Python konvertiert werden konnten andere Einschränkungen. Dies verdeutlicht nur die möglichen Auswirkungen eines solchen Übergangs, der zweifellos gewaltig sein würde.

Ich bin damit einverstanden, dass ModelBuilder manchmal "klobig" sein kann, wenn Sie es nicht genau kennen, aber seit ich wirklich Python lerne und die Tool-Validierungs-Programmierung verstehe ( http://resources.arcgis.com/en/help/main) /10.2/index.html#//00150000000v000000 ), ein Großteil des "Schmerzes" wurde gelindert. Ich verstehe jetzt einige der "kryptischen" Fehlermeldungen, die die Toolvalidierung auslösen kann, viel besser und weiß nicht, welcher Teil des Modells defekt ist. Ich kann sie jetzt effektiver beheben oder verhindern, indem ich den richtigen Toolvalidierungscode schreibe . Dies ist besonders dann von Nutzen, wenn Sie Nicht-Python-Toolboxen / -Modelle in Python-Skripte "integrieren".

Einen Wunsch habe ich allerdings noch, und das würde das Leben mit ModelBuilder sehr bereichernEinfacher ist es, wenn die automatische Toolvalidierung die Tools tatsächlich hervorhebt und automatisch die Modelle öffnet, die die Warnungen oder Fehler in Bezug auf Variablen verursachen. Alternativ sollten die Fehler- und Warnhinweise, die angezeigt werden, wenn Sie bei einem ungültigen Modell auf "OK" klicken, mindestens den genauen Werkzeugnamen und den Namen des Modells enthalten, in dem sich das ungültige Werkzeug befindet. Wenn Sie über viele verschachtelte Modelle verfügen, kann es manchmal mühsam sein, das Tool zu finden, das einen bestimmten Überprüfungsfehler verursacht hat, wenn nur eine Auflistung von Fehlern ohne den Namen des Tools oder des (Unter-) Modells, sondern nur den ungültigen Variablennamen angezeigt wird. Ich bin mir nicht sicher, warum ESRI das Tool und den Modellnamen nicht in die Liste aufgenommen hat. Dies scheint eine einfache Lösung für dieses Problem zu sein.

Auch eine Art "Such" -Funktionalität, um Werkzeuge nach Namen zu finden, wie sie in den Modellen definiert sind, wäre praktisch.

Marco_B
quelle
Marco, danke für deine Sichtweise und Perspektive! Es ist hier jedoch nicht thematisch relevant, wo das Ziel darin besteht, eine verwendbare Versionskontrolle für Model Builder zu finden (zu versuchen). Gehen wir zum Chat: chat.stackexchange.com/rooms/939/gis
matt wilkie