أكثر

استخراج الدُفعة بواسطة القناع ، لكن قم بتخصيص أسماء الإخراج الفردية


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

يحرر:

هذا هو الكود الدقيق الذي أحاوله:

استيراد مجلد arcpy import glob import os arcpy.CheckOutExtension ('Spatial') "" "يحتوي فقط على البيانات النقطية للإدخال ولا شيء آخر" "" indir = r'D:  Sheyenne  Atmospherically Corrected Landsat  Practice_bands '"" "المسار المطلق للقناع layer "" "mask = r'D:  Sheyenne  sheyenne_area_poly.shp '" "" إنشاء قائمة إمبلي للاحتفاظ بالمسارات لإدخال البيانات النقطية "" "inrasters = []" "" قم بملء القائمة في الملفات بجميع المسارات إلى .tif في الدليل "" "os.chdir (indir) لـ r في glob.glob ('*. tif'): inrasters.append (r) # #" "" كرر على كل المدخلات .tif من قائمة inrasters "" "لـ inraster في inrasters: # # "" "أنشئ اسمًا فريدًا لكل نقطية ناتجة" "" outraster = inraster.replace ('. tif'، '_ clip.tif') # "" "قص كل خط نقطي باسمه الفريد كناتج" " arcpy.sa.ExtractByMask (inraster ، قناع)

لكنها ترجع الخطأ:

ExecuteError: فشل في التنفيذ. المعلمات غير صالحة. خطأ 000865: البيانات النقطية للإدخال: LT50290282011268PAC01_sr_band1.tif غير موجود. فشل تنفيذ (ExtractByMask).

LT50290282011268PAC01_sr_band1.tif هو الملف الأول في ملفinrastersقائمة

يحرر:

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

يحرر:

حصلت عليه للعمل باستخدام هذا الرمز:

استيراد arcpy arcpy.env.workspace = 'D:  Sheyenne  Practice_bands' arcpy.CheckOutExtension ('Spatial') "" "المسار المطلق إلى طبقة القناع" "Mask = r'D:  Sheyenne  sheyenne_area_poly.shp '" "" التكرار خلال البيانات النقطية وإلحاق الأسماء وحفظ الملفات "" "rasters = arcpy.ListRasters () للنقطية في البيانات النقطية: outraster = raster.replace ('. tif'، '_ clip.tif') arcpy.gp.ExtractByMask_sa (النقطية ، القناع الغريب)

يمكنك نسخ الحقل من مُنشئ الدُفعات ولصقه في Excel لعمل أسماء إخراج مخصصة إذا كنت لا تستخدم python. يمكن بعد ذلك نسخها مرة أخرى إلى دفعة من Excel.

أوصي بشدة باستخدام هذا كفرصة لتجربة Python ، هذا تطبيق مثالي للمبتدئين. شيء من هذا القبيل يجب أن يفي بالغرض:

استيراد مجلد glob import os "" "الذي يحتوي فقط على البيانات النقطية للإدخال ولا شيء آخر" "" indir = 'c: / GIS / input_rasters /' "" "المسار المطلق إلى طبقة القناع" "" mask = 'c: / GIS / clip_mask.shp '"" "إنشاء قائمة تجريبية للاحتفاظ بمسارات لإدخال البيانات النقطية" "" inrasters = [] "" "ملء قائمة inrasters بكل المسارات إلى .tif في الدليل" "" os.chdir (indir) لـ r في glob.glob ('*. tif'): inrasters.append (r) "" "التكرار على كل المدخلات .tif من قائمة inrasters" "" لـ inraster في inrasters: "" "أنشئ اسمًا فريدًا لكل ملف نقطي ناتج" " "outraster = inraster.replace ('. tif'، '_ clip.tif')" "" قص كل خط نقطي باسمه الفريد كإخراج "" "r = arcpy.sa.ExtractByMask (inraster، Mask) r.save (outraster )

ليست هناك حاجة للتكرار خلال قائمة البيانات النقطية التي تم إنشاؤها منglob.glob ()وإلحاقهم بقائمة جديدة. سأتبع النهج التالي:

  1. تحديد مساحات عمل الإدخال والإخراج
  2. قائمة بجميع البيانات النقطية باستخدامالكرة الأرضية
  3. حلقة من خلال القائمة
  4. حدد اسم الإخراج والمسار
  5. أداء استخراج بالقناع
  6. احفظ المستخلص بالقناع

import arcpy، glob، os arcpy.CheckOutExtension ('Spatial') # مجلد يحتوي فقط على البيانات النقطية للإدخال ولا شيء آخر inws = r'D:  Sheyenne  Atmospherically Correct Landsat  Practice_bands 'outws = r'D:  Sheyenne  Atmospherically Corrected Landsat  Practice_bands  out '# لاحظ مجلد مساحة الإخراج الجديد # المسار المطلق لقناع طبقة القناع = r'D:  Sheyenne  sheyenne_area_poly.shp' # إنشاء قائمة بجميع ملفات .tif (لاحظ أن هذا يسرد المسارات الكاملة) النقطية = glob .glob (os.path.join (inws، "* .tif")) # كرر على كل المدخلات. os.path.basename (ras) .split (".") [0] + "_clp.tif") # نفذ EBM out_extract = arcpy.sa.ExtractByMask (ras، mask) # احفظ الإخراج out_extract.save (الاسم الخارجي )


شاهد الفيديو: Lama Shreif - Youmma Ana Li Rido Official Video 2021. لمى شريف - يما أنا اللي ريدو (شهر اكتوبر 2021).