أكثر

غير قادر على استبدال القيم الخالية باستخدام محلل Python لـ ArcGIS 10.0 Field Calculator؟


أنا أستخدم كود python التالي لاستبدال القيم الخالية بـ 0 ، باستخدام حاسبة الحقول:

def nulls (p1): إذا كانت p1 لا شيء: إرجاع 0 else: إرجاع p1

لكن لا شيء يحدث ، تبقى القيم الفارغة. أنا أستخدم ArcGIS Desktop 10.0.


نظرًا لأن الكود الخاص بك يعمل معي ، فإن الحل البديل سيكون استخدام "التحديد حسب السمة" لتحديد صفوف فارغة ، على سبيل المثال MyField غير موجود. بمجرد تحديدهم جميعًا ، ما عليك سوى استخدام الآلة الحاسبة الميدانية ، على سبيل المثال MyField = 0.


اضطررت مؤخرًا إلى استبدال قيم Null أيضًا ، ولكن بدلاً من آلة حاسبة الحقول ، استخدمت نصًا قصيرًا من Python يتضمن UpdateCursor ، ربما يساعدك ذلك:

باستخدام arcpy.da.UpdateCursor ("feature_class، [" field_with_null_values ​​"]) كمؤشر: للصف في المؤشر: إذا كان الصف [0] == بلا: صف [0] = 0 cursor.updateRow (صف) اطبع" اكتملت المعالجة " صف ديل

الشيء الوحيد الذي لا أعرفه هو ما إذا كان هذا يعمل مع 10.0 أم لا ، فأنا أعمل مع 10.2

في 10.0 ، والتي لا تحتوي على وحدة الوصول إلى البيانات (arcpy.da) ، سيبدو الرمز الذي يستخدم مؤشرات النمط القديم أكثر مثل هذا:

cursor = arcpy.UpdateCursor (inFeatureClass) للصف في المؤشر: if row.getValue (inFalue) == بلا: row.setValue (inField، 0) cursor.updateRow (row) del row، cursor

يبدو أن السبب الأساسي لهذه المشكلة هو رقم الخطأ NIM059424 الذي كان موجودًا في ArcGIS Desktop 10.0 وتم حله بواسطة ArcGIS 10.1 for Desktop:

لا يتم استبدال القيم الخالية في فئة المعالم عند استخدام Python في Field Calculator.


سيعمل الرمز الأصلي الخاص بك فقط إذا كنت في جلسة التحرير. ابدأ في تحرير الميزة وقم بتشغيل الكود مرة أخرى. أواجه نفس المشكلة التي يجب حسابها في Model Builder. أنا أستخدم ArcGIS 10.4.