Please activate JavaScript!
Please install Adobe Flash Player, click here for download

arcAKTUELL 3.2015 - Über und unter der Erde - Umgang mit Ressourcen

TIPPS UND TRICKS Für Anwender Den meisten Anwendern sind zum Anpassen der Datenverbindungen die Methoden in ArcMap (Datenquelle reparieren) und ArcCatalog (Da- tenquelle festlegen) bekannt. Während auf diese Art und Weise in vie- len Fällen das gewünschte Ergebnis erzielt werden kann, ist jedoch un- ter gewissen Umständen eine größere Flexibilität beim Anpassen der Datenverbindungen erforderlich. Hier kommt das ArcPy Mapping Mo- dul ins Spiel. Mit der Methode findAndReplaceWorkspacePaths des MapDocument-Objekts ist ebenfalls eine globale Suche nach zu erset- zenden Workspace-Pfaden möglich. Die wesentlichen Vorteile dabei sind das Suchen und Ersetzen multipler Workspaces unterschiedlichen Typs mittels einer einzigen Funktion und somit die Auto­matisierung des Prozesses für eine Vielzahl von Kartendokumenten (zum Beispiel nach einem Serverwechsel) sowie insgesamt die wesentlich größere Flexi- bilität gegenüber den beiden weiter oben genannten Methoden. Die Syntax ist wie folgt: Datenverbindungen anpassen und reparieren mit ArcPy MapDocument.findAndReplaceWorkspacePaths(find_workspace_path, replace_workspace_path, {validate}) Die Parameter find_workspace_path und replace_workspace_path kön- nen unterschiedliche Workspace-Typen, UNC-Pfade, gemappte Ver- zeichnisse oder auch Teilpfade sein. Der optionale Parameter validate gibt an, ob es sich bei replace_workspace_path um einen gültigen Pfad handeln muss. Standardmäßig ist dieser Parameter True. Setzen Sie den Wert explizit auf False, wenn es erforderlich wird, die Datenquelle auf einen nicht existenten Pfad zu legen. Hier nun als Beispiel ein einfacher Aufruf aus dem Python-Fenster in ArcMap: mxd = arcpy.mapping.MapDocument(„current“) mxd.findAndReplaceWorkspacePaths(r“C:\project\data“, r“W:\project\data“) mxd.saveACopy(„project2.mxd“) Ein Verweis auf das gerade geöffnete Kartendokument wird durch die Angabe des Schlüsselworts current in der Variable mxd gespeichert. In der zweiten Zeile werden alle Layer dieses Dokuments nach dem Pfad C:\project\data durchsucht und die einzelnen Vorkommen durch den neuen Pfad W:\project\data ersetzt. Das Präfix „r“ (für rawstring) vor je- dem String literal verhindert, dass ein Backslash in der Pfadangabe von Python als Escape Sequence interpretiert wird. Verwenden Sie das obi- ge Skript in ArcCatalog, so geben Sie in der ersten Zeile als Parameter den kompletten Pfad zum Kartendokument an. Die ArcPy Methode reagiert dabei unempfindlicher bei der Auswahl der Ordnertiefe. Dies macht sich vorallem dann bemerkbar, wenn im Kartendokument eigenständige Tabellen als Join-Tabellen verwendet werden, sie aber nicht im Inhaltsverzeichnis des Kartendokuments vor- handen sind. Sollte es also über die ArcCatalog-eigene Methode zum Verlust solch verknüpfter Tabellen im Kartendokument kommen, so ver- suchen Sie mittels ArcPy die Datenquellen anzupassen. Hier kann eine größere Ordnertiefe gewählt werden. Die bisherigen Ausführungen sind durchaus für ArcGIS Anwender ohne explizite Programmierkenntnisse nutzbar. Nun folgt ein kurzes Beispiel eines eigenständigen Python-Skripts zur iterativen Anpassung aller Kar- tendokumente innerhalb eines Ordners: import arcpy, os folder = r“C:\project“ for file in os.listdir(folder): fullpath = os.path.join(folder, file) if os.path.isfile(fullpath): basename, ext = os.path.splitext(fullpath) if ext.lower() == „.mxd „: mxd = arcpy.mapping.MapDocument(fullpath) mxd.findAndReplaceWorkspacePaths(r“C:\project\data“, r“G:\project\data“) mxd.findAndReplaceWorkspacePaths(r“C:\raster\DEM“, r“G:\raster\DEM“, False) mxd.save () In diesem Beispiel wird über die Dateiendung .mxd das Vorhanden- sein von Kartendokumenten geprüft und bei Übereinstimmung die find- AndReplaceWorkspacePaths-Methode für zwei verschiedene Teilpfade ausgeführt, wobei die Rasterdaten zum Zeitpunkt der Skriptausführung noch nicht im Zielordner vorhanden sein müssen. In der Online-Hilfe finden Sie neben vielen weiteren nützlichen Infor- mationen auch zusätzliche Funktionen wie MapDocument.replaceWork- spaces zum Wechseln von Workspace-Typen oder Layer.findAndReplace­ WorkspacePath, um hier die behandelte Funktionalität auf einzelne Layer anzuwenden: http://desktop.arcgis.com/de/desktop/latest/analyze/ arcpy-mapping/updatingandfixingdatasources.htm. Markus Meyer Esri Deutschland GmbH Kranzberg ++ 4949t ipps u nd t ric k s

Seitenübersicht