أكثر

مشكلة في إنشاء معلمات لأداة

مشكلة في إنشاء معلمات لأداة


ما زلت مبتدئًا في Arcpy ، لكنني أعتقد أن لدي فهمًا أساسيًا للأساسيات بما في ذلك بناء الجملة والمتغيرات والوحدات النمطية وما إلى ذلك. سؤالي يتعلق باستخدام المعلمات أثناء إنشاء أداة.

أحاول إنشاء أداة تقوم بحساب وتلخيص منطقة "مستويات" طبقة المعالم. لدي البرنامج النصي الذي يعمل لحساب وتلخيص طبقة المعالم التي يتم إخراجها كجدول ، لكنني غير قادر على الحصول على مدخلات المعلمات لأداة العمل. يتم التحقق من بناء الجملة (باستخدام PyScripter كـ IDE) ولكن عندما أحاول تشغيل الأداة في ArcMap يظهر "لا تحتوي هذه الأداة على معلمات". من الناحية المثالية ، أود أن يقوم المستخدم بإدخال "مستويات" طبقة المعالم كمعامل وإرجاع جدول الملخص ، ولكن ستكون نافذة رسالة تعرض ملخص المنطقة أفضل إذا كان ذلك ممكنًا. يرجى إعلامي بما قد يحدث خطأ في المعلمات ، أو كيف يمكنني تغيير الإخراج إلى نافذة رسالة.

استيراد فئة arcpy GeoArea (كائن): def __init __ (self): "" "تحديد مربع الأدوات (اسم صندوق الأدوات هو اسم ملف .pyt)." "" self.label = "GeoArea" self.alias = "Tom" # قائمة فئات الأدوات المرتبطة بصندوق الأدوات self.tools = [LevelsCalcTool] class LevelsCalcTool (كائن): def __init __ (self): self.label = "LevelsCalcTool" self.description = "يحسب ويلخص منطقة المستويات في الأمتار المربعة "self.canRunInBackground = False def getParameterInfo (self): param0 = arcpy.Parameter (displayName =" Input features "، name =" in_features "، datatype =" GPFeatureLayer "، parameterType =" Required "، direction =" Input " ) params = [param0] تنفيذ تنفيذ معلمات إرجاع (ذاتي ، معلمات ، رسائل): "" "التعليمات البرمجية المصدر للأداة." "" arcpy.AddField_management (params، "area"، "DOUBLE"، "#"، " # "،" # "،" # "،" NULLABLE "،" NON_REQUIRED "،" # ") arcpy.CalculateField_management (params،" area "،"! [email protected]! "،" PYTHON_9.3 "،" # ") arcpy.Statistics_analysis (params،" out_table.dbf "، [[" area "،" SUM "]]) إرجاع

لن يعمل صندوق الأدوات الخاص بك بشكل صحيح إلا إذا قمت بتغيير اسم الفصل إلىصندوق الأدواتكما هو موضح في المساعدة:

لضمان التعرف على مربع أدوات Python بشكل صحيح بواسطة ArcGIS ، يجب أن تظل فئة مربع الأدوات مسماةصندوق الأدوات.

بمجرد إجراء هذا التغيير ، فتحت أداتك بشكل صحيح:

هناك بعض التعليقات الإضافية:

  1. أنت تقوم بتمرير قائمة المعلمات إلى Arcpy الخاص بك. يستدعي SomTool في طريقة التنفيذ الخاصة بك ، بدلاً من معلمة واحدة ، أيarcpy.AddField_management (params [0]، etc…)
  2. أنت تحددالمعلماتكالحجة الثانية للنفذ - اعدمطريقة ولكن محاولة استخدامهابارامزفي جسم الطريقة. تحتاج إما إلى:

    1. تغيير الوسيطة الثانية مننفذ - اعدمطريقة منالمعلماتلبارامزأو
    2. يتغيرونبارامزلالمعلماتفي جسم الطريقة

كود ثابت:

استيراد فئة arcpy Toolbox (كائن): def __init __ (self): "" "تحديد مربع الأدوات (اسم صندوق الأدوات هو اسم ملف .pyt)." "" self.label = "GeoArea" self.alias = "Tom" # قائمة فئات الأدوات المرتبطة بصندوق الأدوات self.tools = [LevelsCalcTool] class LevelsCalcTool (كائن): def __init __ (self): self.label = "LevelsCalcTool" self.description = "يحسب ويلخص منطقة المستويات في الأمتار المربعة "self.canRunInBackground = False def getParameterInfo (self): param0 = arcpy.Parameter (displayName =" Input features "، name =" in_features "، datatype =" GPFeatureLayer "، parameterType =" Required "، direction =" Input " ) params = [param0] تنفيذ تنفيذ معلمات إرجاع (self ، params ، messages): "" "كود المصدر للأداة." "" arcpy.AddField_management (params [0]، "area"، "DOUBLE"، "# "،" # "،" # "،" # "،" NULLABLE "،" NON_REQUIRED "،" # ") arcpy.CalculateField_management (params [0]،" area "،"! [email protected]! "،" PYTHON_9.3 "،" # ") arcpy.Statistics_analysis (params [0]،" out_table.dbf "، [[" area "،" SUM "]]) re منعطف أو دور

نظرًا لأنك قمت بنشره هنا ، يبدو أن هناك مشكلة في التنسيق على ملفgetParameterInfoطريقة. تحتاج إلى التأكد من أن المسافة البادئة الخاصة بك متسقة في جميع أنحاء الملف. أعتقد أنه يجب أن يبدو كالتالي:

def getParameterInfo (self): param0 = arcpy.Parameter (displayName = "Input features"، name = "in_features"، datatype = "GPFeatureLayer"، parameterType = "Required"، direction = "Input") المعلمات = [param0] معلمات الإرجاع

كما تم نشره ، يبدو مثلعودة البارامزالبيان ليس في الواقع جزء منgetParameterInfo، مما يعني أن هذه الوظيفة تعودلا أحد. هذا من شأنه أن يفسر سبب عدم ظهور أي معلمات في أداتك.


شاهد الفيديو: Load Parameter Cnc machine Fanuc OM เรองงาย ๆ