أكثر

تكرار Intersect_analysis على ملف شكل المضلع باستخدام ArcPy؟

تكرار Intersect_analysis على ملف شكل المضلع باستخدام ArcPy؟


أنا أستخدم ArcGIS 10.3.1 لسطح المكتب ولدي ملفان لشكل:

  1. مجموعة من بيانات الدفق (خط متجه)
  2. شبكة صيد من المضلعات

أريد أن أعرف ، لكل مضلع في شبكة صيد السمك تلك ، ما هو الطول الإجمالي للتيارات داخل ذلك المضلع. حتى الآن ، حاولت تكرار أداة تحليل التقاطع على جدول شبكة صيد السمك ، مع تلخيص أطوال المخرجات وكتابة ذلك في الحقل ذي الصلة ، لكن كل تكرار يؤدي التقاطع على الشبكة بأكملها ، وليس المضلع المحدد في تلك الشبكة.

رمز:

import arcpy # set بعض المتغيرات البيئية arcpy.env.workspace = "C:  Users  Alex  Documents  SoilMoisture" arcpy.env.overwriteOutput = 1 # تعريف المتغيرات لجميع فئات الميزات الضرورية وتدفقات الحقول = "pathto / str_split_lamb.shp "## ملف شكل لشبكة التدفق مقسم عند الرؤوس ، في إسقاط لامبرت ، مع حقل قيمة الطول RainGrid المحسوب مسبقًا =" pathto / net_test.shp "## مضلعات لخلايا المطر ، مع مؤشر الحقل" DRN_LENGTH "الفارغ = arcpy.UpdateCursor ( rainGrid) ## سيتكرر عبر كل صف من ميزة شبكة هطول الأمطار للصف في المؤشر: intStreams = arcpy.Intersect_analysis ([streams، rainGrid]، "output.shp"، "ALL"، ""، "LINE") ## يصبح intStreams جميع مقاطع الدفق داخل المضلع strCursor = arcpy.SearchCursor (intStreams) ## كرر عبر التدفقات في تقاطع totalLen = 0 لـ rowmore في strCursor: totalLen + = rowmore.length ## جمع كل قيم الطول في إجمالي طباعة متغير واحد هنا فقط للتحقق مما يحدث في الصف. DRN_LENGTH = totalLen ## إضافة قيمة إلى fi eld cursor.updateRow (صف) اطبع "تم!"

أيه أفكار؟


تحتاج إلى تحديد مضلع واحد مع كل تكرار أولاً ؛ عندئذٍ ستأخذ أداة التقاطع في الاعتبار هذا المضلع الواحد فقط. يمكنك التحديد حسب السمة (http://pro.arcgis.com/en/pro-app/tool-reference/data-management/select-layer-by-attribute.htm) ، باستخدام معرّفات FID فريدة.


يجب ألا تكرر أي تحديدات SQL على الإطلاق ، لأن ذلك بطيء جدًا وغير ضروري على الإطلاق. بدلاً من ذلك ، تتقاطع جميع الأسطر من خلال جميع المضلعات ، ثم استخدم مؤشر البحث على نتائج التقاطع لإنشاء قاموس باستخدام مضلع FID كمفتاح القاموس مع القيم التي تحتوي على مجاميع أطوال السطور. أخيرًا ، استخدم مؤشر التحديث للكتابة على كل مضلع بعد البحث عن مفتاح قاموس المضلع FID. بمجرد اكتمال التقاطع ، ستنتهي العملية الفعلية لتلخيص بيانات التقاطع للشبكة الكاملة وكتابة الأطوال إلى مجموعة البيانات المستهدفة في ثوانٍ لـ 10000 سجل.

راجع مدونتي حول معالجة بيانات الشحن التوربيني باستخدام مؤشرات وقواميس بايثون. انظر بشكل خاص إلى القسم "استخدام قاموس Python المصمم باستخدام da SearchCursor لاستبدال جدول ملخص للإحصائيات" في نهاية المدونة.


بناءً على إجابةPaulo Raposo ، إذا كان سيتم تشغيل البرنامج النصي خارج نافذة Python في ArcMap ولم تكن الطبقة موجودة في الخريطة الحالية ، فستحتاج إلى استخدام طريقة Make Feature Layer قبل إجراء تحديد الميزة باستخدام Select Layer by Attribute.