Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何在正确的xy坐标中绘制提取的光栅?_R_Coordinates_Raster - Fatal编程技术网

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

R 如何在正确的xy坐标中绘制提取的光栅?,r,coordinates,raster,R,Coordinates,Raster,我有一个ndvi光栅。我必须使用阈值条件来提取值。当我绘制提取的光栅图时,x-y坐标不是lat长 我尝试了ggplot(),也尝试了使用rastertopoints和rasterfromXYZ来打印光栅,但没有成功。 代码如下。 无法绘制s。xy坐标不长 library(raster) library(rgdal) raster <- ("D:/Project/ndvisoybean.tif") plot(ndvi) ndvi[is.na(ndvi)] <-0 s <- ndv

我有一个ndvi光栅。我必须使用阈值条件来提取值。当我绘制提取的光栅图时,x-y坐标不是lat长

我尝试了ggplot(),也尝试了使用
rastertopoints
rasterfromXYZ
来打印光栅,但没有成功。 代码如下。 无法绘制s。xy坐标不长

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)]
库(光栅)
图书馆(rgdal)

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

首先,您应该将光栅转换为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)) 
小结:如果光栅是投影坐标,例如
Albers
lambert
,而不是lon/lat WGS84坐标,则使用lon/lat xy坐标绘制地图很不方便