如何在正确的xy坐标中绘制提取的栅格?

时间:2018-12-29 05:53:09

标签: r coordinates raster

我有一个ndvi栅格。我必须使用阈值条件来提取值。当我绘制提取的栅格的图时,协调的x y并不长。

我尝试了ggplot(),也使用了rastertopointsrasterfromXYZ来绘制栅格,但徒劳无功。 代码如下。 无法绘制。 xy coordiantes的时间不长。

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中具有适当的纬度长坐标。

1 个答案:

答案 0 :(得分:1)

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

首先,您应该将栅格转换为WGS84 coordiante。

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 coodiate的地图很不方便。