Suite

Mapping.mapDocument() ne fonctionne pas, mais ne lance pas d'exception. problème de chemin ?

Mapping.mapDocument() ne fonctionne pas, mais ne lance pas d'exception. problème de chemin ?


Je travaille sur les recettes du livre de recettes Python et j'obtiens des résultats étranges.

Lorsque j'exécute le script (copié ci-dessous) avec

  • la référence de carte répertoriée comme "CURRENT" à partir d'un mxd ouvert

  • à partir de la fenêtre Python dans Arcmap

J'obtiens les résultats attendus -- une couche est ajoutée à la carte.

Cependant, lorsque je :

  • changer la référence de la carte en un chemin
  • enregistrez le script en tant que .py, et
  • lancez-le à partir de l'inactivité

aucune erreur n'est générée, mais aucune couche n'est ajoutée. J'ai même essayé d'imbriquer le tout dans une instruction try/except/else, et j'ai récupéré la réponse else.

Je sais que le chemin mxd est correct, car je l'ai copié à partir d'ArcCatalog.

Des idées?

# Importer le module arcpy.mapping import arcpy.mapping as mapping # Créer une référence de carte mxd = mapping.MapDocument(r"H:PythonPython_CookbookMapsTravisCounty.mxd") # Créer une référence au bloc de données principal où le le calque sera ajouté df = mapping.ListDataFrames(mxd)[0] # Définir le calque de référence refLayer = mapping.ListLayers(mxd, "Building_Permits*", df)[0] # Définir le calque à insérer par rapport au calque de référence : insertLayer = mapping.Layer(r"H:PythonPython_CookbookdataTravisCountySchool_District_2.lyr") # Insérez le calque dans le mappage df.InsertLayer(df,refLayer,insertLayer,"BEFORE")

Essayez d'enregistrer le mxd à l'aide de la méthode save() ou de rafraîchir simplement l'affichage/la table des matières.

Si des scripts sont utilisés pour modifier l'apparence de certains éléments de la carte lors de l'utilisation de la carte EN COURS (par exemple, modifier le nom d'une couche, l'étendue du bloc de données, etc.), la carte peut ne pas se mettre à jour automatiquement avec chaque ligne de code exécutée. . Pour actualiser la carte afin de refléter les modifications, utilisez les fonctions RefreshActiveView ou RefreshTOC. Ces fonctions actualiseront respectivement l'affichage de la carte ou la mise en page et la table des matières. Les fonctions de rafraîchissement ne sont nécessaires que si vous souhaitez voir l'application mise à jour. Les fonctions d'exportation, de sauvegarde et d'impression d'Arcpy.mapping généreront les résultats mis à jour attendus sans utiliser ces fonctions.

Documentation ici.


Essayez d'utiliser le chemin absolu en Python. Au lieu de H :, vers quoi H : pointe-t-il ? Par exemple:

mxd = mapping.MapDocument(r"FileServerThisIsWhereHPointsPythonPython_CookbookMapsTravisCounty.mxd")

En savoir plus sur le référencement de chemin ici.