Daha çox

ArcPy istifadə edərək netCDF-ni Raster-ə toplu şəkildə çevirmək?


Arcpy.MakeNetCDFRasterLayer_md-də Ölçü Dəyərləri (Könüllü) arqumentini istifadə etməkdə problem yaşayıram.

Çıxış rasterini nə etsəm də, hər zaman standart dəyər olan ilk təbəqədir.

Aşağıda zaman ölçüsündə bütün təbəqələri rasterə ixrac etmək cəhdim var.

Kod:

def extractAllNetCDF (): değişken = "RRt_10m" x_dimension = "lon" y_dimension = "lat" band_dimension = "" 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 ölçüsü üçün: top = nc_FP.getDimensionSize (dimension) i for üçündür (0, top): if ": dimension_values ​​= nc_FP.getDimensionValue (dimension, i) nowFile = str (dimension_values) arcpy.MakeNetCDFRasterLayer_md (inNetCDF, dəyişən, x_dimension, y_dimension, nowFile, band_dimension, dimension_values, valueSelectionM now. img "," "," "," "," NONE "," NONE "," ") çap ölçüsü_ dəyərləri, i

Sonda yazdırma üsulu tarixləri olduğu kimi göstərəcək və i indeksi də bir tərəfdən hərəkət edir, buna görə kodun Ölçü Dəyərinin səhv olması və standart vəziyyətə gətirilməsi xaricində başqa problemlər olduğunu düşünmək üçün bir səbəb yoxdur.

Kimsə sonrakı təbəqələrin ixracını necə əldə edəcəyinə dair bir fikri varmı?

Boş sitatlardan başqa Ölçü Dəyəri arqumentini istifadə edərək bunun xüsusi bir nümunəsi olan onlayn bir kod varmı?


Tamam, buna görə ESRI Yardım Səhifəsində bir Dəyər Cədvəli olaraq göstəriləndən istifadə etməyin bir neçə fərqli yolu olduğu göründüyü üçün bu bir az çətin idi:

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

Sintaksisdən həqiqətən əmin deyilsinizsə, çətin ola biləcək mötərizələrin bir neçə istifadəsi də var, inşallah aşağıdakı nümunəni istifadə edə bilsəniz işləyəcəkdir.

Beləliklə, həqiqətən istədiyiniz cavablardır, buna görə burada bir düzəlişlə

def extractAllNetCDF (): değişken = "RRt_10m" x_dimension = "lon" y_dimension = "lat" band_dimension = "" 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 ölçüsü üçün: top = nc_FP.getDimensionSize (dimension) i for üçündür (0, top): if ": dimension_values ​​= nc_FP.getDimensionValue (dimension, i) nowFile = str (dimension_values) # BU YERDƏ YENİ KODDUR dv1 = [" time ", dimension_value] dimension_values ​​= [dv1] #END YENİ KOD arcpy.MakeNetCDFRasterLeter_ , x_dimension, y_dimension, nowFile, band_dimension, dimension_values, valueSelectionMethod) arcpy.CopyRaster_management (nowFile, outLoc + nowFile + ".img", "", "" "", "NONE", "NONE", "") çap ölçüsü , mən

Yəni mahiyyətcə budur. 'Dəyər Cədvəli' tipli bir nümunə yaratmağa ehtiyac yoxdur, məs.

vtab = arcpy.ValueTable (2)

arqumentin 'Dəyər Cədvəli' etiketli olması ilə göründüyü kimi.

Misalda göstərdikləri mötərizələrin hamısını qıvrım, yuvarlaq və ya başqa şəkildə istifadə etməyə ehtiyac yoxdur. Yuxarıda göstərilənləri izləyin və nəticə verməlidir.


Sadəcə çəkərək yuxarıdakı cavabın səmərəliliyini artırırıqəgər ölçü == "vaxt":təkrar-təkrar lüzumsuz bir şəkildə qiymətləndirməmək üçün döngədən çıxın. MakeNetCDFRasterLayer_md-nin icrasında bir səhv olması üçün, çıxış fayl adlarından irəli əyikləri çıxardı.

def extractAllNetCDF (): değişken = "çöküntü" x_dimension = "lon" y_dimension = "lat" band_dimension = "" 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 ölçüsü üçün: = "time": top = nc_FP.getDimensionSize (dimension) for i (0, top): dimension_values ​​= nc_FP.getDimensionValue (dimension, i) nowFile = str (dimension_values) nowFile = nowFile.translate (None, '/') # Int (nowFile [-2])> 4: dv1 = ["time", dimension_values] dimension_values ​​= [dv1] arcpy.MakeNetCDFRasterLayer_md (inNetCDF, dəyişən, x_dimension, y_dimension, nowFile, band_dimension, dimension_values, valueSelectionMethod) print "success" outname = outLoc + nowFile arcpy.CopyRaster_management (nowFile, outname, "", "", "", "NONE", "NONE", "") başqa: 195-dən əvvəl yazdırın 0 "


Videoya baxın: how to convert netcdf to raster in batch in arcgis, nc file to geo tiff file, netcdf arcgis (Oktyabr 2021).