أكثر

التكرار خلال السجلات لإنشاء تقارير ArcGIS

التكرار خلال السجلات لإنشاء تقارير ArcGIS


أنا أستخدم ArcGIS 10.1 Standard مع Python 2.7. أحاول إجراء حلقة عبر السجلات في فئة المعلم باستخدام مؤشر البحث ولكل سجل ، قم بتشغيل تقرير ArcGIS مخصص. لقد قمت بإنشاء ملف تخطيط التقرير (rlf) ويمكنني جعل هذا العمل خارج حلقة. المشكلة التي واجهتها عندما أحاول التشغيل داخل الحلقة هي أن مؤشر البحث يعمل مع فئات الميزات بينما تعمل وظيفة ExportReport مع الطبقات. لقد حاولت استخدام وظيفة MakeFeatureLayer لإجراء التحويل من فئة المعالم إلى طبقة المعالم داخل الحلقة ، ولكن يبدو أن شيئًا ما ينقصه في وسيطات MakeFeatureLayer. هذا هو الكود الذي استخدمته بنجاح لإنشاء تقرير لمرة واحدة.

import arcpy mxd = arcpy.mapping.MapDocument (r "G:  505573  MGT  40-ENG  4E-ENV  GIS  Misc  StreamCrossingReports  Figures  MXD  AGOL  CreateReports.mxd") df = arcpy.mapping. ListDataFrames (mxd، "Layers") [0] fccrossings = arcpy.mapping.ListLayers (mxd، ""، df) [0] arcpy.mapping.ExportReport (fccrossings، r "G:  505573  MGT  40-ENG  4E-ENV  GIS  Misc  StreamCrossingReports  Reports  ArcGIS_Report_Templates  Report_SCRField_v6.rlf "، r" G:  505573  MGT  40-ENG  4E-ENV  GIS  Misc  StreamCrossingReports  Reports  SCR  Test  Test. pdf "،" SELECTED ")

ديل مكسد

وهذا ما توصلت إليه باستخدام الحلقة.

استيراد arcpy fccrossings = r "G:  505573  MGT  40-ENG  4E-ENV  GIS  Misc  StreamCrossingReports  Download_AGOL  NF  SCR_04Nov2015_ReducedPhotos  366c11ade3cb4b95a3772296a1brossCursing with" StreamCrossing OBJECTID "]، '" OBJECTID "= 1337') كمؤشر: للصف في المؤشر: report = arcpy.MakeFeatureLayer_management (row،" templayer ") arcpy.mapping.ExportReport (report، r" G:  505573  MGT  40 -ENG  4E-ENV  GIS  Misc  StreamCrossingReports  Reports  ArcGIS_Report_Templates  Report_SCRField_v6.rlf "، r" G:  505573  MGT  40-ENG  4E-ENV  GIS  Misc  StreamCrossingReports  Reports  SCR  Test  Test.pdf ") del cursor

هذه هي رسالة الخطأ التي أتلقاها ...

التتبع (آخر مكالمة أخيرة): ملف "G: 505573 MGT 40-ENG 4E-ENV GIS Misc Python Scripts CreateSCR_v2" ، السطر 7 ، في report = arcpy.MakeFeatureLayer_management (row، "templayer" ) ملف "C: Program Files (x86) ArcGIS Desktop10.1 arcpy arcpy management.py" ، السطر 5748 ، في MakeFeatureLayer رفع e RuntimeError: الكائن: خطأ في تنفيذ الأداة


جرب هذا:

استيراد arcpy fccrossings = r "G:  505573  MGT  40-ENG  4E-ENV  GIS  Misc  StreamCrossingReports  Download_AGOL  NF  SCR_04Nov2015_ReducedPhotos  366c11ade3cb4b95a3772296a1brossCursing with" StreamCrossing OBJECTID "]) كمؤشر: للصف في المؤشر: oid = row [0] whereClause = 'OBJECTID = {0}'. format (oid) fLyr = 'tempLayer' report = arcpy.MakeFeatureLayer_management (fccrossings، fLyr، whereClause) arcpy .mapping.ExportReport (تقرير ، r "G:  505573  MGT  40-ENG  4E-ENV  GIS  Misc  StreamCrossingReports  Reports  ArcGIS_Report_Templates  Report_SCRField_v6.rlf"، r "G:  505573  MGT  40- ENG  4E-ENV  GIS  Misc  StreamCrossingReports  Reports  SCR  Test  {0} .pdf ".format (oid)) del fLyr

أولاً ، أستخدم شرط where في إنشاء طبقة المعالم. في هذه الحالة ، يحدث ذلك داخل الحلقة بحيث يتم إنشاء طبقة معالم لكل معلم على حدة.

لاحظ أن الصف [0] يحصل على معرف الكائن. سيكون الصف (1337) ؛ تحتاج إلى استخراج العنصر من المجموعة.

كما هو مكتوب ، سيتم تسمية ملفات PDF الناتجة وفقًا لمعرفات OID الخاصة بالميزات.

لاحظ أنه عند استخدام عبارة with لمؤشر ، فلن تحتاج إلى حذف المؤشر بشكل صريح.

آمل أن يساعد هذا.