Vairāk

Arcpy.mapping.MapDocument (“CURRENT”) neizdodas, palaižot python skriptu fonā kā rīku

Arcpy.mapping.MapDocument (“CURRENT”) neizdodas, palaižot python skriptu fonā kā rīku


Inženieri, ar kuriem es strādāju, ir pieprasījuši ArcGIS automātiskās saglabāšanas funkciju, tāpēc domāju, ka izveidošu viņiem python rīku, kas regulāri saglabā. Skripts darbojas labi, ja tas darbojas priekšplānā, bet neizdodas, ja nav atzīmēta opcija “Vienmēr darboties priekšplānā”.

Atgrieztās ziņas:

Vai šai problēmai ir risinājums?

Kods:

"" "Automātiskā saglabāšana" "" importēšana arkas importēšanas laika importēšana os arcpy.env.overwriteOutput = True autosaveFolder = arcpy.GetParameterAsText (0) autosaveFile = arcpy.GetParameterAsText (1) waitTime = arcpy.GetParameter (2), ja nav autosaveFile. ) .endswith (".mxd"): autosaveFile = autosaveFile + ".mxd" waitSeconds = int (waitTime * 60) autosaveMxd = os.path.join (autosaveFolder, autosaveFile), bet True: time.sleep (waitSeconds) mxd = arcpy .mapping.MapDocument ("CURRENT") mxd.saveACopy (autosaveMxd) del mxd

Palaižot skriptu fonā, tiek radīts pitona process, kas ir atsevišķi no ArcMap. Tātad būtībā,arcpy.mapping.MapDocument ("CURRENT")mēģina atvērt kartes dokumentu, ko tas nevar redzēt. Tas ir loģiski, ja iedomājaties problēmas, ja jums bija vairākas.mxdatvērts: Python nezinātu, kuru jūs domājat"AKTUĀLĀ".

To varat redzēt pats, aktivizējot python (nevis no ArcMap) un izpildot iepriekš minēto.

Traceback (pēdējais pēdējais zvans): fails "", 1. rinda  arcpy.mapping.MapDocument ("CURRENT") Fails "C:  Program Files  ArcGIS  Server  arcpy  arcpy  arcobjects  mixins.py", 610. rinda, __init__ super (MapDocumentMethods, self) .__ init __ (mxd) Fails "C:  Program Files  ArcGIS  Server  arcpy  arcpy  arcobjects  _base.py", 47. rinda, __init__ for arg in args)) RuntimeError: Object: CreateObject nevar atvērt kartes dokumentu

Es saprotu, ka fona ģeopārstrāde darbojas kā atsevišķs process un atšķirībā no priekšplāna ģeoprocesēšanas nezina par jūsu pašreizējo ArcMap vidi.

Līdz ar to es nedomāju, ka jūs gūsit panākumus ar savu pašreizējo pieeju.

Automātiskās saglabāšanas kartes nav tas pats, kas automātiskās saglabāšanas labojumi, taču jūs varētu apskatīt papildu automātisko saglabāšanu ArcMap rediģēšanas sesijā un pievienot savu balsi ArcGIS idejai (-ām) par šo funkcionalitāti.

Vietne, kuru es mēģinātu ieviest, nevis Python Toolbox, būtu kā Python AddIn paplašinājums, taču es neesmu mēģinājis izmantot paplašinājumu, lai to izdarītu, tāpēc notikums, kas aktivizē jūsu kodu, var būt vai nebūt pieejams.

Iespējams, vēlēsities apskatīt arī ArcGIS Pro, jo tajā ir veikta automātiskā saglabāšana, taču es neesmu pārliecināts par automātiskās saglabāšanas projektiem/kartēm/utt.


Jūs varētu mēģināt izmantot XTools Pro, kurā ir iebūvēta MXD automātiskās saglabāšanas funkcija. Tas novērš nepieciešamību pēc pielāgota rīka un novērš priekšplāna/fona problēmas, vienlaikus ļaujot lietotājam iestatīt savu automātiskās saglabāšanas intervālu.