Daha çox

ArcPy's ExportToPDF (), ExportToPNG (), ExportToJPEG () işləyərkən Python çökür


~ 400 .mxd'lik bir qovluğa keçib hər birini başqa bir qovluğa .pdf-ə saxlamağa çalışıram. Bütün sınaqdan keçirilmiş arcpy.mapping ixracat funksiyaları (pdf, jpeg & png) pythonu ayıklama şansı və ya səbəb göstəricisi olmadan öldürür. PythonWin-də işləyən skript "PyWin32 işləməyi dayandırdı" səhv mesajı verir. ArcMap içərisində python isteminden çalıştırıldığında, proqram yalnız bağlanır.

Script uyğunsuz davranır, bəzən qəzaya düşməmişdən əvvəl 10 xəritə hazırlayır, digərləri yalnız 1 və ya 2. Bütün mxds eyni arcpy.mapping skriptindən yaradıldı və hamısı etibarlıdır (ArcMap-da açıla və problemsiz ixrac edə bilərsiniz). Hər xəritədə (Okeanlar) bir ArcGIS Online bazemap təbəqəsi var, ilk bir neçə xəritədə bu təbəqənin işarəsini götürməməyə çalışdım və skript üzərində heç bir təsiri olmadı, python hələ də çökdü.

Eyni nəticə ilə 2 fərqli noutbukda skript sınaqdan keçirildi. Hər ikisi də ArcGIS Desktop 10.2.2, Python 2.7 işləyir ...

Windows 7 Pro 64-Bit SP1, Intel Core i5, 8GB İkili Kanallı RAM, Intel HD Graphics 4000

Windows 7 Pro 64-Bit SP1, Intel Core i7, 16GB İkili Kanallı RAM, Intel HD Graphics 4000, 2048MB NVIDIA Quatro K2000M

Burada və digər mesaj lövhələrində bir neçə oxşar yazını gördüm, lakin işləyən həllər yoxdur.

Arcpy.mapping istifadə edərək 400 xəritə yaratmaqda problem yaşamadım və onları bir fayda saxlaya bilməyəcəyimə inana bilmirəm. Bu səhvdir?

idxal arcpy, os ws = r "C:  temp" map_folder = os.path.join (ws, "maps") pdf_folder = os.path.join (ws, "pdfs") arcpy.env.workspace = map_folder arcpy. env.overwriteOutput = True # map_list = arcpy.ListFiles ("*. mxd") # ## def defArtAISMap (mxd_path, out_path): mxd = arcpy.mapping.MapDocument (mxd_path) # vasitəsilə dövr etmək üçün qovluqdakı xəritə sənədlərinin siyahısını yaradın. arcpy.mapping.ExportToJPEG (mxd, out_path) # arcpy.mapping.ExportToPNG (mxd, out_path) arcpy.mapping.ExportToPDF (mxd, out_path) print "Export map file:" + str (out_path) + "# #" .save () del mxd ### print "Saving" + str (len (map_list)) + "map map  n" map_file for map_list: print map_file mxd_path = os.path.join (map_folder, map_file) pdf_file = map_file.replace (". mxd", ".pdf") pdf_path = os.path.join (pdf_folder, pdf_file) exportAISMap (mxd_path, pdf_path)

ayrı bir prosesi yumurtladığım qədər gc moduluna etibar etmirəm. Ayrı proses iş görəcək və sonra qoşulduqdan sonra öldürüləcək (). Əlavə etməyə çalışın:

çox emal idxal prosesindən

skriptinizin üstünə, sonra dəyişdirin:

exportAISMap (mxd_path, pdf_path)

ilə

p = Proses (hədəf = exportAISMap, args = (mxd_path, pdf_path)) p.start () p.join ()

Arcpy modulunun həqiqətən böyük bir COM kitabxanasının ətrafındakı bir bükücü olduğunu təkrarlamaq lazımdır. Çox vaxt adətən işləyir, amma hər dəfə belə bir şeyə rast gəlirsən. Güman edirəm ki, problem təməlində olan COM kitabxanasındadır, bu halda bununla məşğul olmaq çətin ola bilər.

Bir cəhd edə biləcəyiniz bir şey, bu uzun bir atış olsa da, nəticələrinizi mxd sənədlərindən tamamilə ayrı bir yola salmaqdır. Buna görə C: Temp pdfs əvəzinə C: Outputs pdfs kimi bir şey. Ayrıca, bu vasitələrin arcpy istifadə etmədən birdən çox çıxış xəritənizi yaratmağınıza imkan verəcəyini yoxlamaq üçün Data Driven Pages-a baxmaq istəyə bilərsiniz.


Videoya baxın: Python для аналитиков. Импорт. Импорт таблиц из PDF (Oktyabr 2021).