2011년 8월 3일 수요일

[GeoServer] Styling : GeoExt Styler

GeoServer를 사용하다 보면 레이어가 많을 경우 Styling이 난감할 때가 많죠?

물론 ArcGIS Server나 GeoNURIS Desktop 등 상용제품을 사용하는 경우에는 Desktop 편집기를 사용하여 심볼 설정 후 바로 Publishing이 가능(일부 제품에 한함)합니다.

하지만 OpenSource GIS의 경우 사용자에게 친숙한 UI(시간과 비용을 많이 투자해야 하는데 쉽지가 않지요...) 기능이 현재까지는 아쉬운게 현실입니다.

아래는 GeoServer의 Extension인 GeoExt Styler의 사용법을 알아봅니다.

■ GeoExt Styler 설치
○ 참고: http://docs.geoserver.org/latest/en/user/extensions/styler.html
○ REST plugin 설치 확인
GeoExt Styler는 GeoServer REST API Extension을 사용하며, 2.1.x 버전부터는 REST plugin이 Default 패키지로 포함되어 있으므로 설치할 필요는 없습니다.

만약 2.0.x 버전을 사용한다면 다음 순서로 설치하면 됩니다.
Download page의 Other -> REST Config 항목을 선택하여 REST plugin을 다운로드 합니다.
다운로드한 파일을 GeoServer 설치 폴더의 WEB-INF/lib 폴더 아래 압축을 해제합니다.

○ GeoExt Styler 설치
GEoExt Styler는 OpenGeo Suite에서는 기본으로 제공하는 Style 편집기이며, GeoExt Styler extension을 다음 URL에서 다운로드 할 수 있습니다.
 : http://downloads.sourceforge.net/geoserver/styler-1.7.3.zip

GeoServer data directory(GEOSERVER_DATA_DIR)에 다음 그림과 같이 압축해제 합니다.

이제  GeoServer를 재시작합니다.

■ 사용법
다음의 URL로 접속합니다. : http://GEOSEVER_URL/www/styler/index.html
ex)http://localhost:8080/geoserver/www/styler/index.html

최초 접근시 geoserver에 로그온 다이얼로그가 나타나고 geoserver 계정을 입력합니다.


○ 지도가 보이지 않을 때
 GeoExt Styler는 구글맵을 BaseMap 으로 사용합니다. 혹시 지도가 안보이는 경우 다음을 참고하세요.
 styler/index.html 을 텍스트 편집기로 열고 아래 그림과 같이 구글 지도 API KEY를 새로 발급받아 사용합니다.




Layers panel에서 스타일을 편집할 레이어를 체크하면 해당 레이어의 기본 스타일과 함께 지도가 표시됩니다.

Legend panel에서는 Rule을 하나씩 추가하거나 삭제할 수 있으며 순서(상->하)대로 그려지게 됩니다. 또한 Legend panel에서 심볼을 드래그 후 상/하 순서를 변경할 수 있습니다.

편집 후 저장하면 실제 SLD가 저장되며, 저장된 파일을 확인하려면 GeoServer data directory(GEOSERVER_DATA_DIR)의 styles 폴더를 확인하면 됩니다.

물론 이 파일을 직접 편집해도 되고 GeoServer에서 제공하는 Styles 편집기능(텍스트 편집기를 이용해서 XML을 직접 수정/편집해야 함)을 활용해도 됩니다.

○ 위 편집된 고속도로 SLD 예
<?xml version="1.0" encoding="UTF-8"?>
<sld:StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:sld="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml" version="1.0.0">
  <sld:NamedLayer>
    <sld:Name>highway</sld:Name>
    <sld:UserStyle>
      <sld:Name>highway</sld:Name>
      <sld:Title>highway</sld:Title>
      <sld:Abstract>highway</sld:Abstract>
      <sld:FeatureTypeStyle>
        <sld:Name>name</sld:Name>
        <sld:Rule>
          <sld:Name>default</sld:Name>
          <sld:Title>outline</sld:Title>
          <sld:LineSymbolizer>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#898686</sld:CssParameter>
              <sld:CssParameter name="stroke-width">3</sld:CssParameter>
            </sld:Stroke>
          </sld:LineSymbolizer>
        </sld:Rule>
        <sld:Rule>
          <sld:Name>default</sld:Name>
          <sld:Title>fillcolor</sld:Title>
          <sld:LineSymbolizer>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#FFAA00</sld:CssParameter>
              <sld:CssParameter name="stroke-width">2</sld:CssParameter>
            </sld:Stroke>
          </sld:LineSymbolizer>
        </sld:Rule>
      </sld:FeatureTypeStyle>
    </sld:UserStyle>
  </sld:NamedLayer>
</sld:StyledLayerDescriptor>


현재까지는 복잡한 심볼이나 폰트 설정 등은 불가능하지만 템플릿으로 정의한 후 SLD를 직접 편집할 수 있기 때문에 SLD에 익숙하지 않은 사용자들에게는 편리한 도구로 활용 될 수 있겠네요.


■ 기타 외부 Style 편집기
GeoServer의 Styles 편집기능 및 GeoExt Styler 외에도 SLD를 편집할 수 있는 Open Source 도구들이 있습니다. 아래 사이트를 참고하세요

○ AtlasStyler: http://en.geopublishing.org/AtlasStyler
 - GeoTools를 이용하며 Standalone 버전과 JavaWebStart 버전의 Style 편집기를 사용할 수 있습니다.
Shapefile, External WFS, PostGIS에 직접 접속하여 Style 편집이 가능하며 SLD 미리보기 및 내보내기 기능까지 포함되어 있습니다.


○ QGIS plugin : http://pyqgis.org/repo/contributed
 - Save As SLD : 0.2.0
 - SLD Export : 0.0.1

○ uDig: http://udig.refractions.net/