GIS

[GIS] WMS 배경을 투명하게 만드는 방법 ( transparent 옵션 )

모찌바라기 2023. 3. 9. 19:26
728x90
반응형

 

 

 

 

WMS 객체를 생성하거나 지오서버에서 WMS 이미지를 호출 할 때 기본적으로 배경은 흰색이다. ( 설정 가능 )

그럼 다음과 같은 문제가 발생할 수 있는데..

 

문제 상황 1

 

문제 상황 2

 

문제 상황 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

 

결과2

 

참고로 문제상황1 같은 경우에는 참조 링크에 있는 이미지를 그대로 가져와서 블로그에 썼다..

저 경우에는 이미지 자체에 문제가 있었다는 것 같다. 

 

Transparent 옵션도 이미지 자체에 배경이 없어야 가능한 것이니 이 방식으로 했는데

안된다고 하면 이미지 자체에 배경이 있을 가능성이 있으므로 확인 해보는 게 좋을 것 같다.

 

 

참조 링크 : https://gis.stackexchange.com/questions/119901/make-wms-layer-background-transparent-in-leaflet

 

 

Make WMS layer background transparent in Leaflet

I have inserted the following layer from a GeoServer WMS in the following Leaflet map : var nexrad = new L.TileLayer.WMS("URL", { layers: 'Wrecks:WrecksGreaterNorthSea', format: 'image/pn...

gis.stackexchange.com

 

 

 

------------------------------------------------------------------------ 여담 ---------------------------------------------------------------------------------

 

이 Transparent 옵션에는 문제가 있는데 ( 아마 지오서버 자체 문제일 거 같다.. 버그... )

Transparent를 true로 주고 범례 이미지를 가져오면 해당 스타일에 있는 <Rule> 태그의 개수만큼

Height가 늘어나서 가져오는 문제가 있었다.. 

대충 생각한 문제 해결방법은 <Rule> 태그 개수 자체를 줄이거나 이미지를 웹에 가져와서

css를 이용해 잘라내는 방법이 있을 것 같은데.. 이러면 하드코딩이 되서 지양하고 싶다..

시간이 나면 한번 방법을 찾아봐야지

 

 

728x90
반응형