在 R 传单地图上叠加图像

Nat*_*ler 5 python r leaflet

我有一个 .PNG 图像,它从根本上表示是光栅,但不是光栅格式。这些是提供给我的,否则我会自己将它们生成为栅格并避免这个问题。

我想将图像叠加在 R 中的传单底图上。图像叠加只会为用户提供一个参考,以在区域周围绘制边界框,并查询数据库以获取在该区域生成栅格的原始数据。

在 Python 的传单实现中,图像覆盖可以通过这种方式实现

center = [0,0]
zoom = 2

m = Map(center=center, zoom=zoom)
layer = ImageOverlay(url="filename.png", bounds=(( min_lat, min_lon), 
                                             (max_lat, max_lon)))
m.add_layer(layer)
return m
Run Code Online (Sandbox Code Playgroud)

到目前为止,它看起来像在 R 中执行此操作,我需要一个光栅对象,然后使用addRasterImage(),它似乎将光栅转换为 RGB 图像,然后将其覆盖在传单地图上。我最初有一个图像,只想将其添加为图层而不是需要光栅格式。谢谢你。

And*_*eid 5

如果您需要附加图像并且之后不更改它(bbox 或源),那么您应该能够使用 htmlwidgets 访问本机 leaflet.js 来做到这一点:

\n\n
\n

htmlwidget::onRender 函数可用于使用本机 Javascript 将自定义行为添加到传单地图。这是一个高级用例,需要您了解 Javascript。使用 onRender\n,您可以使用 Leaflet.js 文档中定义的任何 API 自定义地图\xe2\x80\x99s 行为。(来自传单 r文档

\n
\n\n

这通过揭示更广泛的本机功能为您提供了更多的灵活性。添加图像叠加层相当简单(示例)并且类似于 python 实现。从 r 和 js 文档版本中采用的简单示例可能如下所示:

\n\n
library(leaflet)\n\nm <- leaflet() %>%\n  addTiles() %>%  # Add default OpenStreetMap map tiles\n  addMarkers(lng=-74.22655, lat=40.712216, popup="Bottom Right Corner") %>%\n  htmlwidgets::onRender("\n      function(el, x) {\n        console.log(this);\n        var myMap = this;\n        var imageUrl = \'http://www.lib.utexas.edu/maps/historical/newark_nj_1922.jpg\';\n        var imageBounds = [[40.712216, -74.22655], [40.773941, -74.12544]];\n\n        L.imageOverlay(imageUrl, imageBounds).addTo(myMap);\n      }\n      ")\nm  # Print the map\n
Run Code Online (Sandbox Code Playgroud)\n