添加坐标到图像以用作R中的Leaflet,Shiny和Shinydashboard包中的地图

时间:2016-07-20 10:00:50

标签: r shiny leaflet shinydashboard

我计划使用Leaflet,Shiny和Shinydashboard创建一个带有医院OHS事件标记的交互式地图,沿着以下令人敬畏的template for interactive map and histogram

我的问题是我没有坐标参考系统,因为这不是地理对象(没有lat和long)。它也是光栅形式。

如何将以下布局规划制作成CRS(坐标参照系),可以像地图一样对待。Ward 2 East

也就是说,我希望能够平移,缩放,添加标记等。

似乎有一种方法可以使用Java来实现这一点但是我希望在R中这样做,因为我不熟悉Java。见Coordinates to space map

2 个答案:

答案 0 :(得分:1)

你可以这样做:

library(raster)
b <- brick("8aSe9.png")

这为您提供了一个四层地理参考RasterBrick对象(RGB + alpha),您可以使用

查看
plotRGB(b)

当然地理参考与任何其他空间物体无关,但似乎这对你来说无关紧要。

如果你想要一个单层对象(一个RasterLayer),你可以选择三个层中的任何一个(它们都是相同的)

r <- b[[1]]

或直接来自文件:

r <- raster("8aSe9.png")

然后

image(r, col=gray(seq(0,1,.1)))
# or  plot(r, col=gray(seq(0,1,.1)), legend=F)

答案 1 :(得分:1)

这是使用 mapview

的解决方案
library(raster)
library(png)
library(mapview)

web_img <- "http://i.stack.imgur.com/8aSe9.png"

png <- readPNG(readBin(web_img, "raw", 1e6))

rst_blue <- raster(png[, , 1])
rst_green <- raster(png[, , 2])
rst_red <- raster(png[, , 3])

img <- brick(rst_red, rst_green, rst_blue)

m <- viewRGB(img)

m@map %>% addMarkers(lng = 0.5, lat = 0.5)

注意,坐标的原点位于图像的左下角(0,0),在这种情况下,右下角为(0,1),右上角为(0.859,1)角落以保持宽高比正确。在这个局部坐标参考系统中添加标记应该很容易。