티스토리 뷰

QGIS - postGIS- GeoServer - Leaflet을 이용하여 웹에 gis의 데이터를 뿌려주는 페이지를 만들고 있다.

오늘은 GeoServer(이하 지오서버)의 레이어를 Leaflet을 이용해 웹에서 활용할 수 있게 만드는 과정을 기록한다.

 

-----

 

지오서버의 레이어를 웹으로 퍼블리싱할 때 사용할 수 있는 지도는 Openlayers와 Leaflet이 있다.

 

- openlayers.org

- leafletjs.com

 

어떤걸 선택해야 하는지 조차 모르는 상황에 처음에는 오픈 레이어스로 시작했다가 이런저런 삽질을 하면서 리플릿으로 왔다.

 

나중에 구글링을 좀 해보니...

오픈레이어스는 더 오래됐고, 더 크고, 더 많은 것들을 할 수 있지만 lower level API라고 표현하고 있었고,

리플렛은 어느 정도 정리가 되어있어 심플하게 사용할 수 있는 라이브러리, higher level API라고 한다.

 

내 프로젝트에는 리플렛으로 충분할 것 같았고, 무엇보다 geoserver의 데이터를 웹으로 퍼블리싱하는데 코드가 훨씬 더 간단하고 따라 하기 쉬웠다.

 

(이 당시 내 지식의 수준은.. 뭘 모르는지조차 모르는 수준이였다.)

 

---

 

geoserver에서 만든 레이어를 리플렛으로 가져올때는 wms라는 방식을 통해 가져오면 되더라.

 

리플렛 공식 홈페이지의 튜토리얼 문서

leafletjs.com/examples/wms/wms.html

 

---

 

아래는 내가 사용한 코드

<html>
    <head>
        <title>My first leaflet webviewer</title>
        <!--Load the style stylesheet of leaflet -->
        <link rel="stylesheet" href="https://unpkg.com/leaflet@1.3.1/dist/leaflet.css" integrity="sha512-Rksm5RenBEKSKFjgI3a41vrjkw4EVPlJ3+OiI65vTjIdo9brlAacEuKOiQ5OFh7cOI1bkDwLqdLw3Zg0cRJAAQ==" crossorigin=""/>
        <!--Load leaflet -->
        <script src="https://unpkg.com/leaflet@1.3.1/dist/leaflet.js" integrity="sha512-/Nsx9X4HebavoBvEBuyp3I7od5tA0UzAxs+j83KgC8PU0kgB4XiK4Lfe4y4cgBtaRJQEIFCW+oC506aPT2L1zw==" crossorigin=""></script>
        <style>
            .map {
                height: 100%;
                width: 100%;
            }
        </style>
    </head>
    <body>

        <!--Create our map object -->
        <div id="map" class="map"></div>

        <script>
            // Find our map id
            // initialize the map on the "map" div with a given center and zoom
            var map = L.map('map', {
                center: [37.568,126.993035],
                zoom: 17
            });
            // openstreetmap으로 지도의 베이스를 설정합니다.
            L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(map);
            // geoserver에서 가져오는 wmsLayer를 설정합니다.
            var wmsLayer = L.tileLayer.wms('여기에 geoserver wms base url을 넣으세요', {
                layers: '여기에 geoserver 레이어 명을 넣으세요',
                transparent: true,
                format: 'image/png'
            }).addTo(map);
        </script>
        
    </body>
</html>

 

여기서

두 군데를 설정하면 된다.

 

'여기에 geoserver wms base url을 넣으세요'라고 쓴 데에는

지오서버의 레이어 미리보기에서 가져온 주소를 썼다.

 

예를 들어 레이어 미리보기에서 openlayers를 누르면

 

이렇게 나오는데

 

이 주소의 물음표(?) 앞에 부분까지를 쓰면 된다.

 

http://주소!~~!!!@!@!#!@$/wms  이렇게.

 

그 아래 레이어 명에는 '레이어의 이름'을 쓰면 된다. (제목 말고)

 

 

---

 

여튼, 이렇게 오픈스트리트맵 위에 QGIS에서 그린 객체를 가져오는 데 성공했다.

 

 

 

다음 포스팅에는 이 객체를 클릭했을 때 메타 정보가 나오게 하는 방법을 써둘 예정입니다.

 

 

 

----

 

thinkoutbox.tistory.com/55

 

Leaflet - GeoServer - WMS, popup 레이어로 데이터 가져오기

QGIS - postGIS- GeoServer - Leaflet을 이용하여 웹에 gis의 데이터를 뿌려주는 페이지를 만들고 있다. 지난번에는 리플렛을 이용해 QGIS의 데이터를 퍼블리싱하는 것까지 성공했다. thinkoutbox.ti..

thinkoutbox.tistory.com

 

 
댓글
최근에 올라온 글
Total
Today
Yesterday