1

我创建了一个 OpenStreetMap 对象,并在其上绘制了一些点。现在,我正在尝试获取这些点的网格值的颜色值。(例如 - 如果其中一个点在海洋中,我希望 RGB 颜色值是蓝色的)。但是 - 我正在努力寻找访问 Map 对象中 colourData 的正确方法(下面的结构副本),然后提取各个点的值。

非常欢迎任何高级提示来帮助我;非常感谢提前,W

创建地图对象和绘图点的代码:

library(rJava)
library(OpenStreetMap)
library(ggplot2)
map <- openmap(c(70,-179),
               c(-70,179),zoom=1, type="mapquest-aerial")
map <- openproj(map)

reclat <- c(50,20,30,40)
reclong <- c(30,40,30,50)         
autoplot(map) + geom_point(aes(x=reclong,y=reclat))

地图对象的结构

str(map)
List of 2
 $ tiles:List of 1
  ..$ :List of 5
  .. ..$ colorData : chr [1:106590] NA NA NA NA ...
4

1 回答 1

1

用 将结果转换为openmap对象Raster*raster然后提取您需要的点。结果是一个包含 RGB 值的三列矩阵。用于rgb获取颜色。

library(OpenStreetMap)
library(raster)

myMap <- openmap(c(70,-179),
               c(-70,179),zoom=1, type="mapquest-aerial")
myMap <- openproj(myMap)

reclat <- c(50,20,30,40)
reclong <- c(30,40,30,50)

rMap <- raster(myMap)

myPoints <- cbind(reclong, reclat)

myRGB <- extract(rMap, myPoints)
myColors <- rgb(myRGB[,1], myRGB[,2], myRGB[,3], maxColorValue=255)
于 2013-05-27T10:05:15.497 回答