从地图对象中提取颜色值

时间:2013-05-26 15:46:06

标签: r list map colors

我创建了一个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 ...

1 个答案:

答案 0 :(得分:1)

使用openmapRaster*的结果转换为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)