【问题标题】:How to plot a extracted raster in proper xy coordinates?如何在适当的 xy 坐标中绘制提取的栅格?
【发布时间】:2018-12-29 05:53:08
【问题描述】:

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

我已经尝试过 ggplot() ,也尝试过使用 rastertopointsrasterfromXYZ 来绘制栅格但徒劳无功。 代码如下。 无法绘制 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)]

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

【问题讨论】:

    标签: r coordinates raster


    【解决方案1】:

    据我所知,如果栅格不是 WGS84 投影,则没有合适的情况来绘制 lon/lat xy 坐标图。 一种方法是将栅格图层转换为 WGS84 投影。因此绘图坐标为 lon/lat。它只适用于小地图或世界地图。 另一种方法是在ggplot中使用coord_map函数。但是导入数据必须是lon/lat数据帧而不是其他投影坐标。所以绘制地图的效率很低。更严重的是,将 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坐标绘制地图很不方便。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-14
      • 2023-04-01
      • 2016-06-30
      • 2015-08-03
      • 2018-08-20
      • 2020-11-28
      相关资源
      最近更新 更多