أكثر

حدد نقطية من مجلد يتقاطع مع مربعات ملف شكل مضلع


من الناحية المثالية ، أرغب في إنشاء نموذج في ArcGIS ModelBuilder يقوم بتكرار مجلد من البيانات النقطية وإخراج تلك التي تتقاطع مع مربعات المضلع في ملف أشكال آخر.

لدي ملفات أشكال المضلع المحفوظة في موقع ملف ويمكنني قراءتها في النموذج ، ولدي مكرر يقوم بقراءة مجلد البيانات النقطية.
ما الأداة (إن وجدت) التي ستسمح لي بإخراج البيانات النقطية التي تتقاطع مع المضلعات في ملف الأشكال؟

فهرس البلاط

التحديد من Tile Index: Desired Rasters للسحب من المجلد

جدول السمات للاختيار من فهرس المربعات. يتطابق عمود الاسم المميز مع اصطلاح التسمية لـ DEMs النقطية

مجلد Raster DEM ، تم توسيعه في Arc Catalog

تحرير: كنت قادرًا على تشغيل عملية مجمعة نظرًا لأن أسماء مربعات المضلع تطابق الأسماء المرتبطة بـ DEMs النقطية: إنشاء قائمة ملف لاستخدامها في العمليات الدفعية إنشاء قائمة ملف (جدول سمات التصدير كـ dbf في ArcMap) افتح حتى قائمة الملفات في Excel (احذف جميع الأعمدة باستثناء حقل الاسم الشائع)

العمود ب - اكتب نسخة "" واكتب موقع الملفات التي تريد نسخها

مثال: نسخ Y: Data RasterDEMs

العمود C - نسخ / لصق عمود خاص A كقيم حذف محتويات العمود A.

العمود د -. *

العمود E - اكتب الموقع لحفظ الملفات

العمود F - ربط الأعمدة B - E على سبيل المثال: = CONCATENATE (B1، C1، D1، ""، E1)

الورقة 2 ، العمود A - نسخ / لصق عمود خاص F كقيم

احفظ الورقة 2 بعلامات جدولة محددة .txt أغلق excel وافتح Sheet2.txt حفظ باسم بامتداد .bat (ملف دفعي) انقر نقرًا مزدوجًا فوق هذا الملف ويجب أن يفتح مربع CMP ويبدأ التشغيل

["" = مسافة]

بالنسبة لأولئك الذين يريدون رؤية البيانات قمت بإضافة الصور.

أقوم بتشغيل امتدادات ArcGIS 10.3.1: محلل مكاني ثلاثي الأبعاد


هذه مشكلة واجهتها عدة مرات ، أحصل على قرص ممتلئ بالبلاط وأحتاج إلى العثور على الأقراص الموجودة في / بالقرب من منطقة لتعيين البيانات النقطية لإنشاء VRT أو مجموعة بيانات الفسيفساء أو الفسيفساء (حسب المتطلبات) ...

لست على علم بأي أداة في Model Builder من شأنها أن تساعد في ذلك ، فهناك حد لما يمكن القيام به في منشئ النماذج ، ولكن هذا النوع من العمليات سهل للغاية في Python:

import os، sys، arcpy AOI = sys.argv [1] # المجال الذي يهم البحث عن البيانات النقطية لـ rFolder = sys.argv [2] # المجلد الذي يحتوي على البيانات النقطية للبحث من oFolder = sys.argv [3] # المجلد المراد نسخه إلى desc = arcpy.Describe (AOI) # احصل على مدى AOI sExt = desc.extent arcpy.env.workspace = rFolder for ThisRas في arcpy.ListRasters (): rDesc = arcpy.Describe (ThisRas) rExt = rDesc.extent # تحقق مما إذا كان هذا النطاق مرتبطًا مكانيًا # باستخدام not disjoint if sExt.disjoint (rExt): arcpy.AddMessage ("النقطية٪ s خارج"٪ (ThisRas)) وإلا: arcpy.AddMessage ("Raster٪ s تتداخل "٪ (ThisRas)) outFile = os.path.join (oFolder، ThisRas) arcpy.Copy_management (ThisRas، outFile)

هذه أداة متقطعة للغاية أستخدمها بانتظام ؛ احذر الهيئة العربية للتصنيع والخطوط النقطية يجب كن في نفس نظام الإحداثيات ... يمكنك استخدام هذا في منشئ النماذج بعد إنشاء صندوق الأدوات الخاص بك وإضافة أداة نصوص Python ، والمعلمات هي Feature Class و Folder و Folder (اجعلهم جميعًا مدخلات من أجل البساطة).

أستخدم sys.argv [] على arcpy.GetParameterAsText () - كلاهما يقوم بنفس الشيء ولكن أقل في الكتابة.

يمكن تحسين ذلك باستخدام الأشكال الهندسية الموجودة في الملف (نقطة أو خط أو مضلع - لا يهم):

import os، sys، arcpy AOI = sys.argv [1] # المجال الذي يهم البحث عن البيانات النقطية لـ rFolder = sys.argv [2] # المجلد الذي يحتوي على البيانات النقطية للبحث من oFolder = sys.argv [3] # المجلد المراد نسخه إلى desc = arcpy.Describe (AOI) # احصل على مدى AOI sExt = desc.extent arcpy.env.workspace = rFolder # يمكن استخدام المشي هنا للقيام بهذا المجلد وجميع المجلدات الفرعية لـ ThisRas في arcpy. (): rDesc = arcpy.Describe (ThisRas) rExt = rDesc.extent # تحقق مما إذا كان هذا النطاق مرتبطًا مكانيًا # باستخدام not disjoint if sExt.disjoint (rExt): arcpy.AddMessage ("Raster٪ s خارج"٪ ( ThisRas)) else: arcpy.AddMessage ("Raster٪ s عبارة عن ترشيح"٪ (ThisRas)) outFile = os.path.join (oFolder، ThisRas) # صقل أكثر باستخدام الهندسة باستخدام arcpy.da.SearchCursor (AOI، "SHAPE @ ") كـ sCur: IntersectsShape = خطأ لـ ft في sCur: إذا لم يكن ft [0] .disjoint (rExt): IntersectsShape = True break if IntersectsShape: arcpy.AddMessage (" نسخ نقطية٪ s "٪ (ThisRas)) arcpy. Copy_management (ThisRas، outFile)

شكرًا يا مايكل ، لقد استخدمت بايثون الخاص بك ولكنني حصلت على الخطأ التالي:

خطأ 000840: القيمة ليست عنصر بيانات. فشل تنفيذ (نسخ).

لقد تغيرت للتوarcpy.Copy_management (ThisRas، outFile)لarcpy.Copy_management (os.path.join (rFolder، ThisRas)، outFile)

وهي تعمل بشكل جيد الآن.


شاهد الفيديو: التضليع Traversing (شهر اكتوبر 2021).