I have some NetCDF files that aren't displaying correcly in ArcMap 10.7 (or when plotted in R...). I found some help fixing the extent here. Here is what I see for the extent:
library(ncdf4)
library(raster)
library(rgdal)
library(gdalUtils)
filename <- "./netcdf_test/comp20180702.120000.nc"
tpw_raster <- brick(filename, varname="tpwGrid")
Result:
> tpw_raster <- brick(filename, varname="tpwGrid")
[1] "vobjtovarid4: **** WARNING **** I was asked to get a varid for dimension named lon BUT this dimension HAS NO DIMVAR! Code will probably fail at this point"
[1] "vobjtovarid4: **** WARNING **** I was asked to get a varid for dimension named lat BUT this dimension HAS NO DIMVAR! Code will probably fail at this point"
tpw_raster; class(tpw_raster)
Result:
> tpw_raster; class(tpw_raster)
class : RasterBrick
dimensions : 721, 1440, 1038240, 1 (nrow, ncol, ncell, nlayers)
resolution : 1, 1.998611 (x, y)
extent : 0.5, 1440.5, 0.0006944444, 1440.999 (xmin, xmax, ymin, ymax)
crs : +proj=longlat +datum=WGS84 +no_defs
source : comp20180702.120000.nc
names : layer
varname : tpwGrid
[1] "RasterBrick"
attr(,"package")
[1] "raster"
Here I check the extent info, then fix the extent, and try to write the file:
polnc <- nc_open(filename)
#Get extent info
ncvar_get(polnc, "lonArr")
ncvar_get(polnc, "latArr")
extent(tpw_raster) <- c(-180, 179.75, -90, 90)
#plot(tpw_raster)
writeRaster(tpw_raster, "./netcdf_test/test01.nc", format="CDF", varname="tpw", xname="lon", yname="lat", overwrite=TRUE)
#Creates a .nc file, but it is does not open in ArcGIS: "ERROR 000237 One or more dimensions are invald"
#writeGDAL(tpw_raster, "./netcdf_test/test01.adf",drivername = "AIG", type = "Float32")
#Error in (function (classes, fdef, mtable) :
# unable to find an inherited method for function ‘gridded’ for signature ‘"RasterBrick"’
When I use writeRaster
a file is produced but I get the stated error when I try to open it in ArcGIS. I first tried writeGDAL
because ultimately I want it to be in GRID format but I get an error for that also. Here's what I see when I look at in in R (it seems to plot fine):
filename2 <- "./netcdf_test/test01.nc"
tpw_out <- brick(filename2, varname="tpw")
tpw_out; class(tpw_out)
Result:
> tpw_raster; class(tpw_raster)
class : RasterBrick
dimensions : 721, 1440, 1038240, 1 (nrow, ncol, ncell, nlayers)
resolution : 0.2498264, 0.2496533 (x, y)
extent : -180, 179.75, -90, 90 (xmin, xmax, ymin, ymax)
crs : +proj=longlat +datum=WGS84 +no_defs
source : comp20180702.120000.nc
names : layer
varname : tpwGrid
[1] "RasterBrick"
attr(,"package")
[1] "raster"
> filename2 <- "./netcdf_test/test01.nc"
> tpw_out <- brick(filename2, varname="tpw")
> tpw_out; class(tpw_out)
class : RasterBrick
dimensions : 721, 1440, 1038240, 1 (nrow, ncol, ncell, nlayers)
resolution : 0.2498264, 0.2496533 (x, y)
extent : -180, 179.75, -90, 90 (xmin, xmax, ymin, ymax)
crs : +proj=longlat +datum=WGS84 +no_defs
source : test01.nc
names : X1
min values : 0.0625
max values : 106.9375
z (unknown): 1
varname : tpw
[1] "RasterBrick"
attr(,"package")
[1] "raster"
Could ArcMap not liking it have something to do with the "z (unknown)?"
I don't have or need a time dimension or any other z dimension.
res(x) <- c(0.2498264, 0.2498264)
res(tpw_raster) <- c(0.2498264, 0.2498264)
beforeextent(tpw_raster) <- c(-180, 179.75, -90, 90)
and I getWarning message: In .local(x, filename, ...) : all cell values are NA
. When I switch the order I getWarning message: In .couldBeLonLat(x, warnings = warnings) : raster has a longitude/latitude CRS, but coordinates do not match that
. Either way I still get the same error in ArcGIS.