أكثر

العثور على نسخة مكررة في مسافة المخزن المؤقت؟

العثور على نسخة مكررة في مسافة المخزن المؤقت؟


أنا أبحث بشدة عن حل لمشكلة واحدة. لديّ ملف Shapefile واحد ، أحتاج إلى التحقق مما إذا كانت هناك أي نقاط مكررة قريبة (دعنا نقول 10 أمتار).

لست على دراية بـ ArcObjects ، فهل هناك أي طريقة للقيام بذلك في نص Python.


ستحتاج إلى استخدام arcpy.Geometry للحصول على كائنات هندسة المضلعات (النقاط المخزنة - استخدم أداة Buffer GP لذلك) والنقاط نفسها ؛ ثم اكتشف ما إذا كانت المضلعات تحتوي على أي نقاط لها نفس الهوية (تختار الحقل المراد مقارنته).

مسودة سريعة أدناه ؛ سيعطيك هذا فكرة عن كيفية البدء. اعتمادًا على حجم مجموعة البيانات الخاصة بك ، قد تحتاج إلى التخلي عن Arcpy في مرحلة ما والقيام بالحسابات فقط (النقطة في مشكلة المضلع). إذا كنت ترغب في البقاء مع Arcpy مع مجموعات بيانات أكبر ، فإن استخدام أداة Spatial Join GP (اختياريًا مع الفهارس المكانية) وإخراج المعالجة اللاحقة لمعرفة التكرارات هو خيار آخر.

استيراد arcpy pnt_fc = r "C:  Default.gdb  _PointDistanceFc" buff_fc = r "C:  Default.gdb  _PointDistanceFc_Buffer" ident_field = "هوية" مع arcpy.da.SearchCursor (buff_fc، ["SHAPE @"، ident_field، "PolyID"]) كـ buff_cur: لـ buff في buff_cur: باستخدام arcpy.da.SearchCursor (pnt_fc، ["SHAPE @"، ident_field، "PntID"]) مثل pnt_cur: لـ pnt في pnt_cur: إذا كان Buff [0] .contains (pnt [0]) وصقل [1] == pnt [1]: طباعة "polyID {0} يحتوي على نسخة مكررة". تنسيق (buff [2]) ، "pntID {0}". تنسيق (pnt [2])

سأستخدم أداة دمج (فئة ميزات أداة إدارة البيانات).

  • تأكد من أن لديك نسخة احتياطية وأن النقاط لها معرّف فريد
  • أداة الجري بطبقة واحدة والمسافة - 10 م. ستنهار النقاط داخل المخزن المؤقت إلى نقاط متداخلة.
  • استخدم حذف المتطابق لإزالة التكرارات المكانية ، وبدلاً من ذلك استخدم اقتراح من هل يمكن دمج / دمج التسميات الخاصة بالنقاط المتداخلة في تسمية واحدة؟ لاختيارهم.

يمكنك ضم الجدول الثاني إلى الجدول الأصلي للعثور على "التكرارات" في الأصل

حل Qicker باستخدام Spatial Join to نفسه ، واحد لواحد ، يتقاطع ، نصف قطر البحث = 10. سيكون الناتج Join_Count = 1 للنقاط التي ليس لها جيران ، والباقي عبارة عن "نسخ مكررة"


مرحبًا ، لقد تمكنت من تحقيق هدف m من خلال تحديد النقاط القريبة ، ووضع كل قيمة الحقل في المصفوفة وحساب قيمة المصفوفة ولصق القيم في حقل آخر

fc = r "C:  Akhil_Office_1  Python  test  PATest1.shp" الحقول = ["FEATURE_ID"، "ADDRESS"] باستخدام arcpy.da.SearchCursor (الحقول fc) كمؤشر: للصف في المؤشر: القيمة = الصف [0] حقل #get value "FEATURE_ID" - قيمة فريدة ؟؟؟ field = "FEATURE_ID" exp = field + "= '" + value + "" "point_lyr = arcpy.SelectLayerByAttribute_management (fc،" NEW_SELECTION "، exp) arcpy.SelectLayerByLocation_management (point_lyr، overap_type =" WITHIN_A_DISTANCE = "، selectLayer_type =" يحدث "25 مترًا" ، select_type = "NEW_SELECTION") Twice = [] cursor = arcpy.da.SearchCursor ("PAtest2"، ['ADDRESS']) للصف في المؤشر: يحدث Twice.append (الصف [0]) مؤشر المؤشر = arcpy.da.UpdateCursor ("PAtest2"، ['ADDRESS'، 'Dup']) للصف في المؤشر: row [1] = يحدث Twice.count (صف [0]) cursor.updateRow (row) del cursor del point_lyr المؤشر ديل

هذا يعمل بشكل جيد ، لكن هذا بطيء للغاية ، يستغرق الأمر ساعة واحدة مقابل 500 نقطة أحيانًا يتم شنقها ، ولدي ملف نقاط ضخم ، لا يقل عن 100000 نقطة في واحدة ، لذلك لا يستحق.