将 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 的意思)。您可以这样做,但将矢量数据转换为栅格数据的坐标参考系统更有意义。
我有一个包含测深数据的 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 的意思)。您可以这样做,但将矢量数据转换为栅格数据的坐标参考系统更有意义。