【问题标题】:Display coordinates when plotting a raster layer made from netcdf file?绘制由 netcdf 文件制成的栅格图层时显示坐标?
【发布时间】:2018-04-15 04:12:43
【问题描述】:

我下载了一个显示叶绿素浓度的 netcdf 文件。我正在尝试将此信息绘制为 shapefile 地图上的栅格文件。当我绘制栅格图层时,我遇到了两件事

  1. 我不知道如何显示与叶绿素层的坐标 - 它不会让我将 lat 和 lon 转换为栅格层

  2. 我想将栅格图层覆盖在 shapefile 地图上……但似乎 NA 值也显示了一种颜色,所以它不会覆盖任何东西?

这是我目前的代码:

library(sp)
library(maptools)
library(RNetCDF)
library(ncdf4)
library(raster)

# retrieving chlorophyll info
attributes(mycdf$var)
attributes(mycdf$var$chlor_a)

# get lat lon info
attributes(mycdf$dim)
nc_lat <- ncvar_get(mycdf, attributes(mycdf$dim)$names[1])
nc_lon <- ncvar_get(mycdf, attributes(mycdf$dim)$names[2])
mycdf <- nc_open(file.choose(), verbose = TRUE, write = FALSE)

rasternew <- raster(chlor)
projection(rasternew)<- CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 
+no_defs")
rasternew<- t(rasternew)

# get map
library(rworldmap)
library(rworldxtra)
newmap<- getMap(resolution = "high")
View(newmap)
projection(newmap)<- CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 
+no_defs")

# plot
brks <- c(0, 01, 0.2, 0.3, 0.4, 0.5)
col<- c("aliceblue", "lightblue", "green", "yellow", "orange", "red")
par(mfrow=c(1,1), font.axis = 4, mai = rep(.1,4), pin = c(5, 4))
plot(rasternew, breaks = brks, col=col, legend = F)
par(mfrow=c(1,1), new = TRUE, font.axis = 4, mai = rep(.1,4), pin = 
c(5, 4))
plot(newmap, xlim=c(150,152), ylim=c(-12, -9), asp = 1, axes = F, col = 
"lightgrey", yaxt = "n", xaxt = "n", add = T)
legend(x='bottomleft', legend = c("0", "0.1", "0.2", "0.3", "0.4", 
"0.5"), fill = col)

【问题讨论】:

  • 非常感谢@RobertH 的帮助。我只是让它太复杂了

标签: r raster netcdf


【解决方案1】:

从 ncdf 文件中的数据创建 Raster* 对象通常可以这样完成:

library(raster)
r <- raster("filename.nc", var="chlor_a")
plot(r)

那么你应该可以像这样添加 SpatialPolygons:

plot(pols, add=TRUE)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 2019-07-07
    • 2013-01-21
    • 1970-01-01
    • 2016-04-17
    相关资源
    最近更新 更多