【问题标题】:Add coordinates to image for use as map in Leaflet, Shiny and Shinydashboard packages in R将坐标添加到图像以用作 R 中 Leaflet、Shiny 和 Shinydashboard 包中的地图
【发布时间】:2016-11-23 12:08:37
【问题描述】:

我计划使用 Leaflet、Shiny 和 Shinydashboard 创建一个带有医院 OHS 事件标记的交互式地图,遵循以下很棒的template for interactive map and histogram

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

我怎样才能将下面的平面图制作成带有 CRS(坐标参考系统)的东西,可以像地图一样对待。

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

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

【问题讨论】:

  • 您需要使用标准 GIS 软件(例如 QGIS)手动对图像进行地理配准。参见例如这里qgistutorials.com/en/docs/georeferencing_basics.html
  • 有没有办法在 R 中做到这一点?
  • 我不知道。它不能通过计算完成,但需要手动完成,因此不太可能在 R 中完成。尤其是当您希望对此任务具有交互性时(尤其是缩放)。

标签: r shiny leaflet shinydashboard


【解决方案1】:

这是一个使用 ma​​pview 的解决方案:

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)角以保持纵横比正确。在这个局部坐标参考系统中添加标记应该很容易。

【讨论】:

  • 我正在尝试将地图合并到闪亮中 - 手动添加了纬度。在 renderLeaflet 命令“output$mymap % addMarkers(data = points()) }) 之后会发生什么
  • 我不明白你的问题。
  • 道歉既神秘又懒惰。我在这里转贴了一个详细的问题。该应用程序将围绕病房可视化构建stackoverflow.com/questions/38607045/…
【解决方案2】:

你可以这样做:

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)

【讨论】:

  • 当然您可以阅读和绘制非参考图像,但这将无法在地理参考地图背景(如 leaflet 中)上绘制它们,因为这需要绝对坐标,而不是任意表坐标。另外,8aSe9.png 到底是什么?我们在哪里可以找到这个?
  • 它来自一组医院平面图(裁剪以查看特定病房)。我认为它是由原始绘图员使用 CAD 软件创建的,但以 .pdf 文件的形式提供给我。
  • 对不起,我想我误解了你的意图。我以为你想要地图背景。对于没有地图背景的解决方案,请参阅下面的答案。
  • 理想情况下,我想要一张地图,因为客户想要缩放,特别是根据传单使用标记。绘制 PNG,然后添加一个发生事件的图层是一种备用方法。
  • 那么你需要地理参考。这是一个地理参考图像的示例,只是为了让您了解可能的结果。 robinlovelace.net/pozmap.html
猜你喜欢
  • 2018-04-23
  • 1970-01-01
  • 2022-07-06
  • 2020-01-04
  • 2021-12-17
  • 2019-02-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
相关资源
最近更新 更多