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

Add coordinates to image for use as map in Leaflet, Shiny and Shinydashboard packages in R

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

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

如何将下面的平面图制作成可以像地图一样处理的 CRS(坐标参考系统)。

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

似乎有一种使用 Java 来执行此操作的方法,但是我希望在 R 中执行此操作,因为我不熟悉 Java。参见 Coordinates to space map

你可以这样做:

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)

这是一个使用 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)右上角以保持纵横比正确。在这个本地坐标参考系统中添加标记应该很容易。