[GIS] WMS 배경을 투명하게 만드는 방법 ( transparent 옵션 )
WMS 객체를 생성하거나 지오서버에서 WMS 이미지를 호출 할 때 기본적으로 배경은 흰색이다. ( 설정 가능 )
그럼 다음과 같은 문제가 발생할 수 있는데..
문제 상황 1은 이미지를 wms로 가져왔는데 뒤에 배경이 흰색..
문제 상항 2는 범례를 wms로 가져왔는데 뒤에 배경이 흰색...
결국 문제는 wms 배경을 투명하게 만들어야 문제가 해결 된다. 이럴 때 transparent 옵션을 사용 할 수 있다.
Transparent 옵션 사용방법
Transparent 옵션을 사용 할 때는 크게 2가지 방법으로 나뉜다.
1. WMS 객체 생성
var nexrad = new L.TileLayer.WMS("URL", {
layers: 'store:sampleLayer',
format: 'image/png',
transparent: true
});
WMS 객체 생성시 옵션으로 Transparent : true 값 설정
2. 지오서버에 Request 요청
transparent=true
--sample
http://localhost:8080/sample/api/map/wms?REQUEST=GetLegendGraphic&VERSION=1.0.0&FORMAT=image/png&transparent=true&WIDTH=20&HEIGHT=20&LAYER=store:sampleLayer&style=&crtfckey=인증키
API 요청시 파라메터로 Transparent = true 추가
이렇게 하면 배경색이 투명하게 된다.. 참고로 직접 브라우저에서 API 호출시 배경이 흰색으로 보이겠지만
실제로 가져와서 확인해보면 투명하다는 것을 알 수 있다.
참고로 문제상황1 같은 경우에는 참조 링크에 있는 이미지를 그대로 가져와서 블로그에 썼다..
저 경우에는 이미지 자체에 문제가 있었다는 것 같다.
즉 Transparent 옵션도 이미지 자체에 배경이 없어야 가능한 것이니 이 방식으로 했는데
안된다고 하면 이미지 자체에 배경이 있을 가능성이 있으므로 확인 해보는 게 좋을 것 같다.
참조 링크 : https://gis.stackexchange.com/questions/119901/make-wms-layer-background-transparent-in-leaflet
------------------------------------------------------------------------ 여담 ---------------------------------------------------------------------------------
이 Transparent 옵션에는 문제가 있는데 ( 아마 지오서버 자체 문제일 거 같다.. 버그... )
Transparent를 true로 주고 범례 이미지를 가져오면 해당 스타일에 있는 <Rule> 태그의 개수만큼
Height가 늘어나서 가져오는 문제가 있었다..
대충 생각한 문제 해결방법은 <Rule> 태그 개수 자체를 줄이거나 이미지를 웹에 가져와서
css를 이용해 잘라내는 방법이 있을 것 같은데.. 이러면 하드코딩이 되서 지양하고 싶다..
시간이 나면 한번 방법을 찾아봐야지