أكثر

دفعة تحويل netCDF إلى النقطية باستخدام ArcPy؟

دفعة تحويل netCDF إلى النقطية باستخدام ArcPy؟


أواجه مشكلة في استخدام وسيطة قيم الأبعاد (اختياري) في arcpy.MakeNetCDFRasterLayer_md.

كل ما يبدو أنني أفعله ، فإن النقطية الناتجة هي دائمًا الطبقة الأولى وهي القيمة الافتراضية.

فيما يلي محاولتي لتصدير جميع الطبقات إلى خطوط المسح في البعد الزمني.

رمز:

def extractAllNetCDF (): متغير = "RRt_10m" x_dimension = "lon" y_dimension = "lat" band_dimension = "" البعد = "time" valueSelectionMethod = "BY_VALUE" outLoc = "E: / New Folder /" inNetCDF = "E: / netCDFFiles / RRt.nc "nc_FP = arcpy.NetCDFFileProperties (inNetCDF) nc_Dim = nc_FP.getDimensions () للأبعاد في nc_Dim: top = nc_FP.getDimensionSize (البعد) لـ i في النطاق (0 ، أعلى): إذا كان البعد ==" الوقت ": Dim_values ​​= nc_FP.getDimensionValue (البعد ، i) nowFile = str (Dim_values) arcpy.MakeNetCDFRasterLayer_md (inNetCDF، variable، x_dimension، y_dimension، nowFile، band_dimension، Dim_values، valueSelection. img "،" "،" "،" "،" NONE "،" NONE "،" ") print_values_values، i

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

هل لدى أي شخص أي فكرة عن كيفية الحصول على الطبقات اللاحقة للتصدير؟

هل هناك أي رمز على الإنترنت يحتوي على مثال محدد لهذا باستخدام وسيطة قيمة البعد بخلاف علامات الاقتباس الفارغة؟


حسنًا ، كان هذا صعبًا بعض الشيء حيث يبدو أن هناك عدة طرق مختلفة لاستخدام ما تم وصفه كجدول قيم في صفحة تعليمات ESRI:

http://help.arcgis.com/ar/arcgisdesktop/10.0/help/index.html#//004300000006000000.htm

هناك أيضًا عدد قليل من استخدامات الأقواس التي قد تكون صعبة إذا لم تكن متأكدًا حقًا من بناء الجملة ، لذا نأمل أن تتمكن من استخدام المثال أدناه فقط.

إذن ما تريده حقًا هو الإجابات ، لذا فهذه الإجابة هي الإصلاح

def extractAllNetCDF (): متغير = "RRt_10m" x_dimension = "lon" y_dimension = "lat" band_dimension = "" البعد = "time" valueSelectionMethod = "BY_VALUE" outLoc = "E: / New Folder /" inNetCDF = "E: / netCDFFiles / RRt.nc "nc_FP = arcpy.NetCDFFileProperties (inNetCDF) nc_Dim = nc_FP.getDimensions () للأبعاد في nc_Dim: top = nc_FP.getDimensionSize (البعد) لـ i في النطاق (0 ، أعلى): إذا كان البعد ==" الوقت ": Dim_values ​​= nc_FP.getDimensionValue (البعد ، i) nowFile = str (Dim_values) #THIS IS THE NEW CODE HERE dv1 = [" time "، element_value] البعد_values ​​= [dv1] #END NEW CODE arcpy.MakeNetCDFRasterLayer_md (in ، x_dimension، y_dimension، nowFile، band_dimension، Dim_values، valueSelectionMethod) arcpy.CopyRaster_management (nowFile، outLoc + nowFile + ".img"، ""، ""، ""، "NONE"، "NONE"، "") print length_values ، أنا

هذا كل شيء في الأساس. ليست هناك حاجة لإنشاء مثيل من نوع "جدول القيمة" ، على سبيل المثال

vtab = arcpy.ValueTable (2)

كما يبدو أن هذا يعني ضمنيًا حقيقة أن الحجة كانت تسمى "جدول القيمة".

ليست هناك حاجة لاستخدام كل الأقواس التي تظهر في الأمثلة سواء كانت مجعدة أو مستديرة أو غير ذلك. اتبع ما ورد أعلاه ويجب أن تعمل.


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

def extractAllNetCDF (): متغير = "precip" x_dimension = "lon" y_dimension = "lat" band_dimension = "" البعد = "time" valueSelectionMethod = "BY_VALUE" outLoc = r "C:  Users  jkadmin  Downloads  Shirin  a "inNetCDF = r" C:  Users  jkadmin  Downloads  Shirin  precip.mon.total.v7.nc "nc_FP = arcpy.NetCDFFileProperties (inNetCDF) nc_Dim = nc_FP.getDimensions () للبعد في nc_Dim: إذا كان البعد == "الوقت": أعلى = nc_FP.getDimensionSize (البعد) لـ i في النطاق (0 ، أعلى): Dim_values ​​= nc_FP.getDimensionValue (البعد ، i) nowFile = str (Dim_values) nowFile = nowFile.translate (بلا ، '/') # احتجت فقط إلى السنوات 1950 فصاعدًا إذا كان int (nowFile [-2])> 4: dv1 = ["time"، Dim_values] Dim_values ​​= [dv1] arcpy.MakeNetCDFRasterLayer_md (inNetCDF، variable، x_dimension، y_dimension، nowFile، band_dimension Dim_values، valueSelectionMethod) اطبع "Success" outname = outLoc + nowFile arcpy.CopyRaster_management (nowFile، outname، ""، ""، ""، "NONE"، "NONE"، "") else: print "before 195 0 بوصة

شاهد الفيديو: how to convert netcdf to raster in batch in arcgis, nc file to geo tiff file, netcdf arcgis