J'ai un grand nombre de dossiers de projet où chaque dossier de projet peut avoir plusieurs sous-dossiers. Ces sous-dossiers peuvent contenir des mxds, des fichiers de formes, des gdb et fgdb personnels. Dans de nombreux cas, l'utilisateur a oublié de cocher la case "Utiliser les chemins d'accès relatifs" avant d'enregistrer les mxds. Ainsi, lorsque le dossier est copié, les liens de source de données sont rompus.
Je voudrais écrire un script arcpy autonome qui explore les répertoires, ouvre chaque mxd, définit les chemins relatifs sur true, puis enregistre le mxd. Y a-t-il un script qui fait ça quelque part?
La propriété relativePaths sur l' objet MapDocument est en lecture seule. Y a-t-il un autre moyen de changer cela?
Réponses:
Ceci est possible en utilisant le script python suivant (avec merci à Neil Clemmons sur le forum ESRI ). Vous aurez besoin de la comtypes bibliothèque et le Snippets module à partir Pierssen Consulting.
la source
Pas possible dans 10.0 , mais j'ai eu un certain succès en utilisant ArcObjects en Python pour des tâches relativement simples comme celle-ci où l'écriture d'une application .NET serait exagérée, mais les fonctionnalités nécessaires n'étaient pas exposées dans les modules arcpy / arcgisscripting. Utilisez os.walk pour explorer la partie de l'arborescence des répertoires.
Pour le bit ArcObjects, utilisez
IMapDocument.Open()
pour ouvrir le MXD (sans avoir à l'ouvrir dans ArcMap), convertissez-le en trueIMxDocument
et définissez-leRelativePaths
, puis utilisez-leIMapDocument.Save()
pour l'enregistrer.la source