أكثر

إنتاج عملية من ArcGIS ToolValidator

إنتاج عملية من ArcGIS ToolValidator


لقد حاولت إنتاج عملية منفصلة من البرنامج النصي ArcGIS ToolValidator. لسوء الحظ ، يتم تشغيل مثيل آخر من ArcCatalog.

  1. ما الذي يحدث خلف الكواليس الذي يتسبب في إطلاق ArcCatalog ، عندما أحاول فقط تنفيذ نص بيثون ثانٍ في عملية منفصلة والحصول على النتائج؟

  2. كيف يمكنني بدء عملية منفصلة ، وانتظر حتى تنتهي ، والحصول على النتائج (قياسي)؟

لا تقلق ، فأنا لا أحاول القيام برفع الأحمال الثقيلة من داخل مربع حوار الأداة. كنت أحاول فقط تجاوز نافذة معالجة الخلفية عند الاتصال بـ GetCount_management. تم حل هذه المشكلة ، ولكن ما زلت أشعر بالفضول بشأن سبب إطلاق ArcCatalog.


يعمل ما يلي بالنسبة لي في فئة ToolValidator:

استيراد sys ، عملية فرعية ، os.path subprocess.call ([os.path.join (sys.exec_prefix ، 'pythonw') ، path_to_script ، script_arg_1 ، ... ، script_arg_N])

إذا كنت تتطلع إلى تنفيذ جزء من التعليمات البرمجية بدلاً من نص كامل ، فقد يكون من المفيد لك أن تنظر إلى وحدة المعالجة المتعددة.

ستنشئ عملية جديدة بموارد منفصلة ، على الرغم من السماح لك بمشاركة المعلومات بين العمليات ، إذا اخترت ذلك. سيكون الإطار النموذجي لهذا هو:

استيراد العمليات المتعددة كـ _mp def _target (var1، var2): import arcpy # (إذا لزم الأمر) # do work here pass def main (): process = _mp.Process (target = target، kwargs = (var1 = 'data'، var2 = "البيانات") جرب: process.start () print process.pid باستثناء استثناء ، على سبيل المثال: طباعة ex أخيرًا: process.terminate () process.join ()

إذا كنت ترغب في نقل البيانات بين العمليات ، فتحقق من صفحات معالجة بيثون المتعددة


شاهد الفيديو: الاخراج النهائي للخريطة ArcGis - Layout View