Wenn mit der Methode mxd.findAndReplaceWorkspacePaths und, wenn MXD aktualisiert wird und der Pfad, in den die .sde-Verbindungsdatei erneut verschoben wird, alle Datenquellen erneut unterbrochen werden.
Gibt es eine Methode zum dauerhaften Aktualisieren jeder SDE-Schicht in einem MXD-Inhaltsverzeichnis, um den SDE-Server und -Dienst dauerhaft zu speichern? Dh. Ersetzen Sie einfach SERVER und INSTANCE für jede SDE-Ebene in einer MXD mithilfe von Python oder ArcObjects in Pyhton.
"Database Connections\Connection to Foobar.sde"
, und es gibt keine Möglichkeit, die SERVER- und SERVICE-Informationen direkt zu übergeben oder zu speichern. Ich würde mich freuen , wenn ich mich als falsch erweisen würde. Ich kann mir einen Hack vorstellen, um eine dynamisch generierte SDE-Datei im selben Verzeichnis wie das MXD oder sogar im MXD zu speichern und stattdessen darauf zu verweisen. Ich weiß allerdings nicht, wie ich es implementieren soll.Antworten:
Ich habe eine Lösung gefunden, um die Abhängigkeit vom Pfad zur .sde-Verbindungsdatei mithilfe von ArcPy und der folgenden Methode aufzuheben.
So funktioniert es:
Sie können die Verbindungsdatei umbenennen oder löschen, nachdem der MXD repariert und gespeichert wurde. Es wird weiterhin ohne Probleme geöffnet, nachdem die Verbindungsdatei nicht mehr vorhanden ist.
Diese Methoden funktionieren NICHT:
Sie können die Verbindungsdatei nach der Reparatur des MXD NICHT umbenennen oder löschen. Das MXD sucht bei jedem Öffnen immer am selben Speicherort nach der .sde-Verbindungsdatei.
quelle
Sie müssen verschachtelte Gruppenebenen durchlaufen und dann
arcpy.CreateArcSDEConnectionFile_management
eine neue SDE mit Parametern von erstellenlyr.serviceProperties
und Parameter alsservProp.get
oder übergebenarcpy.GetParameterAsText(0)
.Vergiss nicht zu benutzen
os.remove(temp_sde) if os.path.exsists(temp_sde) else None
.quelle
Dies mag zu einfach sein, aber ...
Wenn Sie die alte Verbindung umbenennen und die neue mit dem alten Namen benennen, führt dies zu einem besseren Ergebnis?
quelle