我有一个.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图像,然后将其覆盖在传单地图上。我最初有一个图像,只想将其添加为图层而不是需要栅格格式。谢谢。
答案 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