2013년 8월 20일 화요일

GeoServer Chart Extension 소개

OGC SLD(Styled Layer Descriptor)를 사용하여 차트 심볼을 설정하기는 어렵습니다.

GeoServer는 이를 위해 External References(PointSymbolizer의 ExternalGraphic)를 이용한 차트 익스텐션을 제공합니다.

Google Charts API 사용법과 같으므로 구글 차트 API를 이용해 본 경험자라면 쉽게 이해할 수 있을 듯 합니다.

구글 차트 API의 모든 파라미터를 지원하지는 않지만 SLD를 잘 적용하면 멋진 통계지도 서비스가 가능하리라 봅니다.

▣ Sample data & sld files
 - shapefile : https://www.dropbox.com/s/31cay65nr1v9yzm/admin_sgg.zip
 - pichart sld : https://www.dropbox.com/s/8nmvx9edqmpxojo/admin_sgg_pichart.sld
 - barchart sld : https://www.dropbox.com/s/d27kdv5lrgo55gl/admin_sgg_barchart.sld
 - shapefile에는 cnt_eve, cnt_sub, cnt_sto, pop_den 필드(numeric)가 있음

▣ Pi Chart
아래 이미지는 위 pichart sld를 적용한 결과이며 바탕, 파이 차트, 레이블 3가지의 룰을 사용했습니다.
차트 크기는 pop_den이라는 필드를, 차트 데이터는 cnt_eve, cnt_sub, cnt_sto 필드를 사용하며, 차트 데이터의 경우 여러 필드의 연산을 적용해도 됩니다.

▣ Pi Chart SLD

<Rule>
  <Name>Chart</Name>
  <MinScaleDenominator>100</MinScaleDenominator>
  <MaxScaleDenominator>500000</MaxScaleDenominator>
  <PointSymbolizer>
    <Graphic>
      <ExternalGraphic>
        <OnlineResource
          xlink:href="http://chart?cht=p&amp;chd=t:${cnt_eve},${cnt_sub},${cnt_sto}&amp;chco=FF0000,00FF00,0000FF&amp;chf=bg,s,FFFFFF00" />
        <Format>application/chart</Format>
      </ExternalGraphic>
      <Size>
        <ogc:Add>
          <ogc:Literal>20</ogc:Literal>
          <ogc:Mul>
            <ogc:Div>
              <ogc:PropertyName>pop_den</ogc:PropertyName>
              <ogc:Literal>35000.0</ogc:Literal>
            </ogc:Div>
            <ogc:Literal>60</ogc:Literal>
          </ogc:Mul>
        </ogc:Add>
      </Size>
    </Graphic>
  </PointSymbolizer>
</Rule>

▣ Bar Chart
아래 바 차트 외에 스택 차트도 지원합니다. 아래 SLD에서 cht=bvg 옵션을 구글 API를 참고하여 변경하면 됩니다.

▣ Bar Chart SLD
<Rule>
  <Name>Chart</Name>
  <MinScaleDenominator>100</MinScaleDenominator>
  <MaxScaleDenominator>500000</MaxScaleDenominator>
  <PointSymbolizer>
    <Graphic>
      <ExternalGraphic>
        <OnlineResource
          xlink:href="http://chart?cht=bvg&amp;chd=t:${cnt_eve}|${cnt_sub}|${cnt_sto}&amp;chco=FF0000,00FF00,0000FF&amp;chf=bg,s,FFFFFF00" />
        <Format>application/chart</Format>
      </ExternalGraphic>
      <Size>
        <ogc:Add>
          <ogc:Literal>50</ogc:Literal>
          <ogc:Mul>
            <ogc:Div>
              <ogc:PropertyName>pop_den</ogc:PropertyName>
              <ogc:Literal>25000.0</ogc:Literal>
            </ogc:Div>
            <ogc:Literal>60</ogc:Literal>
          </ogc:Mul>
        </ogc:Add>
      </Size>
    </Graphic>
  </PointSymbolizer>
</Rule>

▣ 참조
  - http://blog.geoserver.org/2009/06/01/geoserver-chart-extension/
  - http://blog.geoserver.org/2008/12/08/dynamic-symbolizers-part-1/
  - https://developers.google.com/chart/image/docs/chart_params

2013년 8월 17일 토요일

한국오픈소스GIS 솔루션데이 안내

안녕하세요?
상업적 오픈 소스 GIS 기업체의 연대인 '한국오픈소스GIS포럼'에서 제1회 '오픈소스GIS솔루션데이' 행사를 오는 8월 28일, 상암동 누리꿈 스퀘어 비즈니스 타워 4층에서 개최합니다.

이번 행사를 통해 '한국오픈소스GIS포럼'이 어떤 조직이며, 오픈소스GIS가 어떻게 현업에서 실제로 잘 적용되고 있는지 등을 살펴 보실 수 있습니다.

상세한 프로그램은 첨부된 그림을 참고하시기 바랍니다.

이제 오픈소스GIS는 회의와 의심을 넘어서 새로운 성장 동력으로 전 세계적으로 인정받고 있습니다. 이런 흐름 속에서 '믿고 쓰는 오픈 소스 GIS'를 만드는데 한국오픈소스GIS포럼이 적극적인 역할을 수행하도록 하겠습니다.

경품 추첨도 있으니 많은 분들을 8월 28일에 뵐 수 있기를 기대합니다.

감사합니다.

신상희



출처: OSGeo(Open Source GeoSpatial) 한국어 지부 - OSGeo Korean Chapter