أكثر

تتعطل لغة Python عند تشغيل ExportToPDF () في ArcPy's ، و ExportToPNG () ، و ExportToJPEG ()

تتعطل لغة Python عند تشغيل ExportToPDF () في ArcPy's ، و ExportToPNG () ، و ExportToJPEG ()


أحاول إجراء حلقة عبر مجلد بحجم 400 mxd تقريبًا وحفظ كل ملف في ملف pdf. في مجلد آخر. جميع وظائف تصدير arcpy.mapping المختبرة (pdf و jpeg & png) تقتل Python دون فرصة لتصحيح الأخطاء أو أي إشارة إلى السبب. تشغيل البرنامج النصي في PythonWin يعطي رسالة خطأ "توقف PyWin32 عن العمل." عند التشغيل من موجه python داخل ArcMap ، يتم إغلاق البرنامج.

يتصرف البرنامج النصي بشكل غير متسق ، وأحيانًا يصنع 10 خرائط قبل التعطل ، وفي أحيان أخرى يتم إنشاء 1 أو 2. تم إنشاء جميع mxds من نفس البرنامج النصي للخرائط arcpy وجميعها صالحة (يمكن فتحها في ArcMap والتصدير بدون مشاكل) توجد طبقة خريطة أساس ArcGIS Online في كل خريطة (محيطات) ، حاولت إلغاء تحديد هذه الطبقة في الخرائط القليلة الأولى ولم يكن لها تأثير على البرنامج النصي ، وما زالت لغة python معطلة.

تم اختبار البرنامج النصي على جهازي كمبيوتر محمول مختلفين بنفس النتيجة. كلاهما يعمل بنظام ArcGIS Desktop 10.2.2 و Python 2.7 ...

Windows 7 Pro 64-Bit SP1 ، Intel Core i5 ، ذاكرة وصول عشوائي مزدوجة القناة سعة 8 جيجا بايت ، بطاقة رسومات Intel HD Graphics 4000

Windows 7 Pro 64-Bit SP1 ، Intel Core i7 ، ذاكرة وصول عشوائي مزدوجة القناة 16 جيجا بايت ، بطاقة رسومات Intel HD Graphics 4000 ، 2048 ميجا بايت NVIDIA Quatro K2000M

شاهدت بعض المنشورات المماثلة هنا وعلى لوحات الرسائل الأخرى ، لكن لا توجد حلول عملية.

لم أواجه أي مشكلة في إنشاء 400 خريطة باستخدام arcpy.mapping ولا أصدق أنني لا أستطيع حفظها في ملف. هذا الخلل؟

import 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 exportAISMap (mxd_path، out_path): mxd = arcpy.mapping.MapDocument (mxd_path) # arcpy.mapping.ExportToJPEG (mxd، out_path) # arcpy.mapping.ExportToPNG (mxd، out_path) arcpy.mapping.ExportToPDF (mxd، out_path) اطبع "ملف الخريطة المصدرة:" + str (out_path) + " n" # mxd .save () del mxd ### طباعة "الحفظ" + str (len (map_list)) + "مستندات الخريطة  n" لملف الخريطة في map_list: طباعة 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) تصدير AISMap (mxd_path، pdf_path)

لا أثق في وحدة gc بقدر ما أثق في إنشاء عملية منفصلة. ستؤدي العملية المنفصلة العمل ثم يتم إيقافها بعد الانضمام (). حاول إضافة:

من عملية الاستيراد المتعددة المعالجات

في الجزء العلوي من النص ثم استبدل:

تصدير AISMap (mxd_path، pdf_path)

مع

p = العملية (الهدف = exportAISMap ، args = (mxd_path ، pdf_path)) p.start () p.join ()

عليك أن تتذكر أن وحدة arcpy هي في الحقيقة مجرد غلاف حول مكتبة COM ضخمة. عادة ما تعمل في معظم الأحيان ولكن من حين لآخر تواجه شيئًا كهذا. أعتقد أن المشكلة تكمن في مكتبة COM الأساسية ، وفي هذه الحالة قد يكون من الصعب التعامل معها.

شيء واحد يمكنك تجربته ، على الرغم من أن هذه لقطة طويلة ، هو وضع مخرجاتك في مسار منفصل تمامًا عن ملفات mxd. لذا فبدلاً من C: Temp pdfs ، هناك شيء مثل C: Outputs pdfs. قد ترغب أيضًا في الاطلاع على الصفحات المستندة إلى البيانات لمعرفة ما إذا كانت هذه الأدوات ستسمح لك بإنشاء خرائط إخراج متعددة دون استخدام arcpy.


شاهد الفيديو: لغة بايثون شرح الفصل السابع المقطع الثاني