如何在适当的 xy 坐标中绘制提取的栅格?

How to plot a extracted raster in proper xy coordinates?

我有一个 ndvi 光栅。我必须使用阈值 conditon.When 来提取值 我绘制了提取的栅格图,x y 坐标并不长。

我已经尝试过 ggplot() ,也尝试过使用 rastertopointsrasterfromXYZ 来绘制光栅但没有成功。 代码如下。 无法绘制 s。 xy坐标不是lat long.

library(raster)
library(rgdal)
raster <- ("D:/Project/ndvisoybean.tif")
plot(ndvi)
ndvi[is.na(ndvi)] <-0
s <- ndvi[ndvi@data@values<maxValue(ndvi) & ndvi@data@values>0.3*maxValue(ndvi)]

我想要一个提取的光栅 s 的图形,在 x y 中具有适当的经纬度坐标。

据我所知,如果栅格不是 WGS84 投影,则没有合适的情况来绘制 lon/lat xy 坐标图。 一种方法是将栅格图层转换为 WGS84 projection.So,绘图坐标为 lon/lat。它只适用于小地图或世界地图。 另一种方法是在 ggplot.But 中使用 coord_map 函数,导入数据必须是 lon/lat 数据帧而不是其他投影坐标。所以绘制地图效率低下。更严重的是,将 data.frame 点坐标转换为另一个点坐标时非常慢。这种方式只适用于小 width/height 栅格。代码示例:

首先,您应该将光栅转换为 WGS84 坐标。

df=rasterToPoint(raster_WGS84)
ggplot(df, aes(y=lon, x=lat, color=values)) +
   geom_point(size=2, shape=15) +
   theme() + 
   scale_color_distiller(palette='Spectral') +
   coord_map('lambert', lat0=30, lat1=65, xlim=c(-20, 39), ylim=c(19, 75)) 

总结:如果你的光栅是投影坐标,比如Alberslambert而不是lon/lat WGS84坐标,用lon/lat绘制地图是不方便的xy坐标。