import arcpy InNetCDF = r"C:\temp\tos_O1_2001-2002.nc" try: ncFP = arcpy.NetCDFFileProperties(InNetCDF) ncDim = ncFP.getDimensions() # loop through all dimension and show the value for dim in ncDim: print dim top = ncFP.getDimensionSize(dim) for i in range(0,top): print ncFP.getDimensionValue(dim,i) except: print arcpy.GetMessages(2)
#Make a separate raster *.img file for each dimension value (time) in a netcdf file import arcpy from arcpy import env from arcpy.sa import * import os # Set local variables inNetCDF = r"D:/DSE_work/FFDInetcdf/FEB2009FFDI/IDZ00026_VIC_ADFD_FFDI_SFC.nc" env.workspace="D:/DSE_work/FFDInetcdf/FEB2009FFDI" outRasterFolder = "D:/data/FFDInetcdf/OutputRasters" variable = "FFDI_SFC" XDimension = "longitude" YDimension = "latitude" bandDimension = "" dimensionValues = "time" valueSelectionMethod = "BY_VALUE" # loop through all dimension and show the values ncFP = arcpy.NetCDFFileProperties(inNetCDF) ncDim = ncFP.getDimensions() for dim in ncDim: print "dimension name is:", dim dimsize = ncFP.getDimensionSize(dim) for i in range(0,dimsize): dimvalues=ncFP.getDimensionValue(dim,i) print dimvalues # Execute MakeNetCDFRasterLayer arcpy.MakeNetCDFRasterLayer_md(inNetCDF, variable, XDimension, YDimension, (outRasterFolder,dimvalues), #output folder named by dimension value bandDimension, (dimensionValues,dimvalues), #need to feed in each day (value from the time dimension e.g time 2/02/2009) valueSelectionMethod) #export raster layer (from scratch workspace) to raster output folder as *.img Rasters_List=[] for Rasters in arcpy.ListRasters(): Rasters_List.append(Rasters) arcpy.CopyRaster_management(outRasterFolder, ((os.path.join(outRasterFolder, "netcdf_"+rasters))), "", "", "NONE", "NONE", "") print "end of processing"
Hy. How are you guys?
I am also using the same code to import .nc files to raster (.tif). But when I open the converted raster in ENVI, its spatial reference is distorted. Its longitude (x-axis) is from 0 to 360. which should be -180 to 180.
However, the latitudes are ok and showing data from -50 to 50.
I think I need to georefrence the raster. But i am not sure.
Below is my code. "I AM REALLY IN A TROUBLE. ANY HELP WOULD REALLY BE APPRECIATED."
import arcpy, os, time, datetime, calendar, glob
from arcpy import env
from arcpy.sa import *
arcpy.env.workspace = "C:/Users/UmairPC/Desktop/TRMM"
arcpy.env.overwriteOutput = True
arcpy.env.scratchWorkspace = "C:/Users/UmairPC/Desktop/TRMM"
InMemory_netcdf_raster = "r"
NetCDFfiles = arcpy.ListFiles("*.nc")
for filename in NetCDFfiles:
print("Processing: " + filename)
inNetCDF = arcpy.env.workspace + "/" + filename
# Process: Make NetCDF Raster Layer
arcpy.MakeNetCDFRasterLayer_md(inNetCDF, "r", "longitude", "latitude", InMemory_netcdf_raster, "", "", "BY_VALUE")
outRasterFolder = "C:/Users/UmairPC/Desktop/TRMM/check1"
fileroot = filename[0:(len(filename)-3)]
outTIFF = outRasterFolder + "/" + filename + ".tif"
# Process: Copy Raster
arcpy.CopyRaster_management(InMemory_netcdf_raster, outTIFF, "", "", "", "NONE", "NONE", "")
print "DONE"