أكثر

يعتمد حقل السمة على مضلع متقاطع

يعتمد حقل السمة على مضلع متقاطع


أحتاج إلى إضافة مضلع لكل إشارة مرجعية (وهو ما يعمل بشكل جيد) ثم إسناد حقل استنادًا إلى الرموز البريدية التي تتقاطع مع مضلع الإشارة المرجعية.

لا أعرف ما إذا كنت على الطريق الصحيح. اكتمل الرمز لذا ليس هناك خطأ في إظهاره ولكن حقل كل مضلع فارغ.

cur = arcpy.da.InsertCursor (outFC، ["SHAPE @"، "ZipCode"]) المصفوفة = arcpy.Array () لـ bkmk في arcpy.mapping.ListBookmarks (mxd): array.add (arcpy.Point (bkmk. range.XMin، bkmk.extent.YMin)) array.add (arcpy.Point (bkmk.extent.XMin، bkmk.extent.YMax)) array.add (arcpy.Point (bkmk.extent.XMax، bkmk.extent. YMax)) array.add (arcpy.Point (bkmk.extent.XMax، bkmk.extent.YMin)) array.add (arcpy.Point (bkmk.extent.XMin، bkmk.extent.YMin)) polygon = arcpy.Polygon (المصفوفة) # حساب الرمز البريدي arcpy.MakeFeatureLayer_management (zipCodesSHP، "zipCodesLYR") arcpy.SelectLayerByLocation_management ("zipCodesLYR"، "INTERSECT"، polygon، ""، "NEW_SELECTION") zipCodes = [row [0] for. da.SearchCursor ("zipCodesLYR"، "Zip_Code")] zipCode = "،" .join ("" "+ str (zipCodes) +"  "") # Insert polygon and information cur.insertRow ([polygon، zipCode] ) array.removeAll ()

هذا الخط هو خطأك:

zipCode = "،" .join ("" "+ str (رموز zipCodes) +" "")

باختصار ، "الانضمام" تتوقع تسلسلًا متكررًا وأنت تدمره باستخدام str (الرموز البريدية). بدلاً من ذلك ، يجب أن يكون الخط شيئًا مثل:

zipCode = '،' .join ([str (i) for i in zipCodes])

[ملاحظة: إن str (الرموز البريدية) هي في الواقع قابلة للتكرار ، ولكن في حالتك لا معنى لها لأن الصلة تتكرر عن طريق "تشريح" السلسلة الناتجة بدلاً من التسلسل المقصود (قائمة) من الرموز البريدية.]


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

استيراد arcpy ، os arcpy.env.overwriteOutput = True # الخريطة ذات الإشارات المرجعية mxd = arcpy.mapping.MapDocument (r "C:  Users  USER_NAME  Desktop  gissta  rkws.mxd") outFC = r'C:  المستخدمون  USER_NAME  المستندات  ArcGIS  Default.gdb  إشارة مرجعية 'bookmark_centroid = r'C:  Users  USER_NAME  Documents  ArcGIS  Default.gdb  bookmark_centroid' bookmark_joined = r'C:  Users  USER_NAME  Documents  ArcGIS  Default.gdb  bookmark_joined 'template = r'C:  Users  USER_NAME  Documents  ArcGIS  Default.gdb  template' if arcpy.Exists (outFC): arcpy.Delete_management (outFC) arcpy.CreateFeatureclass_management (os.path.dirname (outFC)، os.path.basename (outFC)، "POLYGON"، template، spatial_reference = template) cur = arcpy.da.InsertCursor (outFC، ["SHAPE @"، "Name"]) المصفوفة = arcpy.Array ( ) لـ bkmk في arcpy.mapping.ListBookmarks (mxd): array.add (arcpy.Point (bkmk.extent.XMin ، bkmk.extent.YMin)) array.add (arcpy.Point (bkmk.extent.XMin ، bkmk. range.YMax)) array.add (arcpy.Point (bkmk.extent.XMax، bkmk.extent.YMax)) bkmk.extent.YMin)) # لإغلاق المضلع ، أضف النقطة الأولى مرة أخرى array.add (arcpy.Point (bkmk.extent.XMin ، bkmk.extent.YMin)) cur.insertRow ([arcpy.Polygon (مجموعة) ، bkmk.name]) array.removeAll () del cur arcpy.FeatureToPoint_management (outFC، bookmark_centroid، "CENTROID") arcpy.Intersect_analysis ([bookmark_centroid، template]، bookmark_joined)

شاهد الفيديو: نسخ قيمة حقل الى حقل فى نفس الجدول تسجيل القراءة السابقة تلقائى