将 R 中的 netCDF 栅格数据的地理坐标系设置为 WGS84

Set Geographic Coordinate System to WGS84 for netCDF Raster Data in R

我有一个包含测深数据的 netCDF 文件,我正试图将这些数据与 WGS84 中的 shapefile 合并到同一个地块上。当我绘制 netCDF 数据时,它没有任何坐标系,我如何为 netCDF 数据设置坐标系,以便我可以在同一个图上绘制所有空间文件?

library(ncdf4) 
library(raster) 
library(rgdal) 
library(ggplot2)

# READ IN AND PARSE BATHYMETRY DATA
# from https://www.ngdc.noaa.gov/thredds/catalog/regional/catalog.htmldataset=regionalDatasetScan
#/albemarle_sound_s010_30m.nc

nc_data <- nc_open('albemarle_sound_s010_30m.nc')

# Get Data from netCDF File
x_coord <- ncvar_get(nc_data, "x")
y_coord <- ncvar_get(nc_data, "y")
Band1 <- ncvar_get(nc_data, "Band1")

# Close connection
nc_close('albemarle_sound_s010_30m.nc')

# Melt data into dataframe for plotting in ggplot2
Band1_df = melt(Band1)

# Plot Data
ggplot() + 
  geom_raster(aes(x = X1, y = X2, fill = value), data = Band1_df) +
  scale_fill_continuous(na.value = "transparent") +
  ylab("") +
  xlab("") +
  theme(panel.grid.major = element_line(color = gray(.5), linetype = "dashed", size = 0.7),
    panel.background = element_rect(fill = "black"),
    plot.title = element_text(color = "black", size = 16, hjust = 0.5))

您提供的 URL 无效。但我认为这是您正在使用的文件

furl <- "https://www.ngdc.noaa.gov/thredds/fileServer/regional/albemarle_sound_s010_30m.nc"
f = basename(furl)
download.file(furl, f, mode="wb")

您可以使用 ncdf 文件

library(terra)
x <- rast(f)
x
#class       : SpatRaster 
#dimensions  : 3536, 4013, 1  (nrow, ncol, nlyr)
#resolution  : 30, 30  (x, y)
#extent      : 325249.1, 445639.1, 3945457, 4051537  (xmin, xmax, ymin, ymax)
#coord. ref. : NAD83 / UTM zone 18N (EPSG:26918) 
#source      : albemarle_sound_s010_30m.nc 
#varname     : Band1 (GDAL Band Number 1) 
#name        : Band1 
 
plot(x)

现在您可以使用 lines()points() 添加空间矢量数据(“shapefile”)。或使用 ggplot 或更面向映射的变量,例如 tmap.

正如您在上面看到的,栅格数据具有“UTM zone 18N”坐标参考系统 (CRS)。你说你想使用 longitude/latitude (我假设这就是你对 WGS84 的意思)。您可以这样做,但将矢量数据转换为栅格数据的坐标参考系统更有意义。