2017-11-08 8 views
3

근본적으로 나타내는 .PNG 이미지는 래스터이지만 래스터 형식은 아닙니다. 이것들은 나에게 제공된다. 그렇지 않으면 나 자신을 래스터로 생성하여이 문제를 피할 것이다.R 전단지의 오버레이 이미지

이미지를 R의 전단지 기본 이미지에 오버레이하고 싶습니다. 이미지 오버레이는 사용자가 영역 주위에 경계 상자를 그리고 래스터를 생성 한 원시 데이터를 쿼리하기위한 참조를 제공합니다 그 지역에서.

이미지 오버레이는 지금까지이 R에서이 작업을 수행 할 것 같습니다

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 

이 방법으로 가능하다 전단지의 파이썬의 구현에

, 내가 변환 나타나는 다음 addRasterImage()을 사용하여 래스터 객체를 필요 래스터를 RGB 이미지로 변환 한 다음 리플렛 맵에 오버레이합니다. 처음에는 이미지가 있고 래스터 형식이 필요하기보다는 레이어로 추가하고 싶습니다. 고맙습니다.

답변

1

이미지를 추가하고 나중에 (BBOX 또는 소스)를 변경할 필요가 있다면, 당신은 htmlwidgets를 사용하는 네이티브 leaflet.js에 액세스하는 것을 할 수 있어야한다 :

htmlwidget ::하는 onRender을 함수는 네이티브 자바 스크립트를 사용하여 리플릿 맵에 사용자 정의 동작 을 추가하는 데 사용할 수 있습니다. 이것은 어떤 것입니까 고급 사용 예제이며 Javascript를 알아야합니다. onRender 을 사용하면 Leaflet.js 문서에 으로 정의 된 API 중 하나를 사용하여지도의 동작을 맞춤 설정할 수 있습니다. (리플릿 r documentation에서)

이렇게하면 더 광범위한 기본 기능을 보여줌으로써 좀 더 유연 해집니다. 이미지 오버레이를 추가하는 것은 다소 직관적이며 (example) 파이썬 구현과 유사합니다. 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