R传单地图上的叠加图像

时间:2017-11-08 02:54:12

标签: 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

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

1 个答案:

答案 0 :(得分:1)

如果您需要附加图像而不是之后更改它(bbox或source),那么您应该能够使用htmlwidgets来访问本机leaflet.js:

  

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

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

library(leaflet)

m <- leaflet() %>%
  addTiles() %>%  # Add default OpenStreetMap map tiles
  addMarkers(lng=-74.22655, lat=40.712216, popup="Bottom Right Corner") %>%
  htmlwidgets::onRender("
      function(el, x) {
        console.log(this);
        var myMap = this;
        var imageUrl = 'http://www.lib.utexas.edu/maps/historical/newark_nj_1922.jpg';
        var imageBounds = [[40.712216, -74.22655], [40.773941, -74.12544]];

        L.imageOverlay(imageUrl, imageBounds).addTo(myMap);
      }
      ")
m  # Print the map