我创建了一个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 ...
答案 0 :(得分: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)