개요

WPS (Web Processing Service) 지형 공간 프로세스, 알고리즘 및 계산을 게시하기위한 OGC 서비스.
 
Geoserver에서 WPS extension을 설치하고, 추가로 OpenGXT를 설치하는 방법에 대해 설명하겠습니다.
 
 
위 링크를 타고 들어가서 'Installing the WPS extension' 영역을 확인하면 geoserver download page. 와 함께 WPS 설정 방법도 자세하게 설명하고 있다.
 

1. WPS pluging download

메뉴얼을 살펴보면 Geoserver download page 에서 extension을 다운로드 할 수 있다.

 

설치된 Geoserver의 버전을 확인하여 자신이 설치한 지오서버에 해당하는 버전을 선택한다.

버전확인은 설치된 지오서버 메인 페이지에서 확인하거나 Geoserver 설치 디렉토리 루트에 VERSION.txt 파일에 적혀있다.

 

본인은 2.14.0 버전을 사용하고 있어 해당 버전을 선택

 

geoserver 해당 버전 다운로드 화면에서 아래쪽 'Extensions' 영역에 있는 버튼을 선택한다.

 

해당 라이브러리중 geoserver-2.14.0-wps-plugin.zip 을 찾아 다운로드

 

2. jar 파일 추가 후 Geoserver 재시작

다운로드 받은 zip파일을 압축해제 하여 6개의 jar파일을 지오서버가 설치되어 있는 루트 밑 WEB-INF/lib 위치에 복사해준다.

 

Geoserver에 WPS 메뉴가 활성화되고 Web Processing Service 확인 할 수 있다.

 

GetCapabilities는 작업이 가능한 프로세스를 설명하는 서비스 메타 데이터 및 메타 데이터를 포함하여 서비스 제공의 세부 사항을 요청합니다.

http://localhost:8080/geoserver/ows?service=WPS&version=1.0.0&request=GetCapabilities 

 

3. OpenGTX download

https://sourceforge.net/projects/mango-spatialstatistics/

위 링크를 타고 들어가서 본인의 Geoserver 버전과 같은 버전을 다운로드합니다.

 

다운로드 받은 zip파일을 압축해제 하여 2개의 jar파일을 지오서버가 설치되어 있는 루트 밑 WEB-INF/lib 위치에 복사해준다.

 

이후 Geoserver 를 재시작하면, 데모의 WPS 요청 빌더에 statistics 프로세스들이 추가된 것들 확인 할 수 있다.

 

OpenGXT 설치전에 Geoserver WPS가 사전에 설치되어 있어야 정상적으로 설치된다.

이후 다음포스팅에서 WPS에 사용방법에 대해 설명하도록 하겠습니다.

개요

지오서버는 오라클 지원 기능이 내장되어 있지 않다. 확장을 통해 설치해야하는데 자세한 사항은 geoserver menual을 보면 알 수 있다.


위 링크를 타고 들어가서 'Installing the Oracle extension' 영역을 확인하면 geoserver download page. 로 이동한다. 또한 oracle datastore 설정 방법도 자세하게 나온다.

1. Oracle pluging download

메뉴얼을 확인해 보면 Oracle extension 을 다운로드 하라고 나와 있다.


설치된 geoserver의 버전을 확인하여 자신이 설치한 지오서버에 해당하는 버전을 선택한다.

버전확인은 설치된 지오서버 메인 페이지에서 확인하거나 geoserver 설치 디렉토리 루트에 VERSION.txt 파일에 적혀있다.


geoserver 해당 버전 다운로드 화면에서 아래쪽 'Extensions' 영역에 있는 버튼을 선택한다.


해당 라이브러리중 oracle을 찾아 다운로드

해당 라이브러리를 다운로드 하였다면 이제 ojdbc6.jar or ojdbc7.jar 를 다운로드 하자.

* ojdbc 라이브러리가 추가가 안되면 geoserver에서 사용할 수 있는 oracle저장소는 Oracle NG(JNDI)만 사용 할 수있다. JNDI형식으로 사용하려면 ojdbc를 다운로드 할 필요는없다.


2. jar 파일 추가 후 geoserver 재시작

ojdbc-6.jar 와 gt-jdbc-oracle-20-SNAPSHOT.jar 이두개의 jar를 지오서버가 설치되어 있는 루트 및 WEB-INF/lib 위치에 복사해준다.


이후 지오서버를 재기동하고 저장소 생성화면으로 가보자.

오라클 관련 extension이 추가된 것을 확인 할 수 있다.

개요

geoserver 대용량 데이터를 이미지 서비스에 사용하기 위하여 GeoWebCache를 사용하려고함

대상 데이터는 연속지적도 경북지역 데이터로 Postgresql에  해당 데이터를 적재하여 사용하려고 한다. 

1. 데이터 작업

1GB의 연속지적도_경북 지역의 데이터를 QGIS통해 Postgresql에 import한다.



2. GeoServer 레이어 등록

https://progworks.tistory.com/6?category=810021를 참고하여 저장소(postgresql)를 추가한다.

이후 해당 레이어에 타일레어를 생성한다.


GeoWebCache 생성

  • Number of tasks to use : 사용할 작업 수
  • Type of operation : 작업 유형
  • Grid Set : 좌표계 (4326, 900913)
  • Format : 이미지 포맷
  • Zoom start : 타일 생성 줌 레벨 시작
  • Zoom stop : 타일 생성 줌 종료 
  • Modifiable Parameters : geoserver 스타일 정보
  • Bounding box : minX, minY, maxX, maxY

submit 버튼을 전송한다.

이후에 해당 레이어에대한 task가 위 리스트로 보여지는데

현재 해당 레이어에 타일이 생성되고 있는 시간과 완료예정시간 등 작업에 대한 정보가 보여진다.

연속지적도_경북 지역에 데이터다 보니 약 6시간 정도의 예상시간이 보인다


지오서버에 데이터 디렉토리 루트에 'gwc' 라는 폴더가 있고 기본적으로 이폴더에 레이어에 이미지 파일이 저장된다.


해당 레이어를 확인

이미지를 가져오는데 네트워크 속도 대략 8ms 0.008초 정도걸렸다.



개요

geoserver에 wms 스타일 중 ogc:Filter를 사용하여 필드 값에 따라 특정 스타일을 부여하는 작업을 하려고 함

이전에 만들었던 경량화 읍면동 파일에 mesure_cnt 명의 컬럼을 추가하고 이 컬럼에 1~ 16 까지의 랜덤한 숫자를 부여하여 일정 구간 마다 opacity 값을 변경 아래의 결과물을 만들었다.


1. 스타일 작업

geoserver 폴리곤 스타일 가이드를 참고하였다. https://docs.geoserver.org/stable/en/user/styling/sld/cookbook/polygons.html

Attribute-based polygon

   <FeatureTypeStyle>
     <Rule>
       <Name>SmallPop</Name>
       <Title>Less Than 200,000</Title>
       <ogc:Filter>
         <ogc:PropertyIsLessThan>
           <ogc:PropertyName>pop</ogc:PropertyName>
           <ogc:Literal>200000</ogc:Literal>
         </ogc:PropertyIsLessThan>
       </ogc:Filter>
       <PolygonSymbolizer>
         <Fill>
           <CssParameter name="fill">#66FF66</CssParameter>
         </Fill>
       </PolygonSymbolizer>
     </Rule>
     <Rule>
       <Name>MediumPop</Name>
       <Title>200,000 to 500,000</Title>
       <ogc:Filter>
         <ogc:And>
           <ogc:PropertyIsGreaterThanOrEqualTo>
             <ogc:PropertyName>pop</ogc:PropertyName>
             <ogc:Literal>200000</ogc:Literal>
           </ogc:PropertyIsGreaterThanOrEqualTo>
           <ogc:PropertyIsLessThan>
             <ogc:PropertyName>pop</ogc:PropertyName>
             <ogc:Literal>500000</ogc:Literal>
           </ogc:PropertyIsLessThan>
         </ogc:And>
       </ogc:Filter>
       <PolygonSymbolizer>
         <Fill>
           <CssParameter name="fill">#33CC33</CssParameter>
         </Fill>
       </PolygonSymbolizer>
     </Rule>
     <Rule>
       <Name>LargePop</Name>
       <Title>Greater Than 500,000</Title>
       <ogc:Filter>
         <ogc:PropertyIsGreaterThan>
           <ogc:PropertyName>pop</ogc:PropertyName>
           <ogc:Literal>500000</ogc:Literal>
         </ogc:PropertyIsGreaterThan>
       </ogc:Filter>
       <PolygonSymbolizer>
         <Fill>
           <CssParameter name="fill">#009900</CssParameter>
         </Fill>
       </PolygonSymbolizer>
     </Rule>
   </FeatureTypeStyle>

<title> : 타이틀의 값이 범례에 표현될 값을 의미함

<ogc:PropertyIsLessThan> : 미만

<ogc:PropertyIsGreaterThanOrEqualTo> : 같거나 큼

<ogc:PropertyIsGreaterThan> : 이상


데이터 > 스타일 > Layer Preview(탭 매뉴)



사용 SLD CODE
<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0"
  xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"
  xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc"
  xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <NamedLayer>
    <Name></Name>
    <UserStyle>
      <Title>A azure polygon style</Title>
      <FeatureTypeStyle>
       <Rule>
         <Name>0</Name>
         <Title>0</Title>
         <ogc:Filter>
           <ogc:PropertyIsLessThan>
             <ogc:PropertyName>mesure_cnt</ogc:PropertyName>
             <ogc:Literal>1</ogc:Literal>
           </ogc:PropertyIsLessThan>
         </ogc:Filter>
         <PolygonSymbolizer>
           <Fill>
             <CssParameter name="fill">#FF0000</CssParameter>
             <CssParameter name="fill-opacity">0.0</CssParameter>
           </Fill>
           <Stroke>
             <CssParameter name="stroke">#000000</CssParameter>
             <CssParameter name="stroke-width">0.5</CssParameter>
           </Stroke>
         </PolygonSymbolizer>
       </Rule>
       <Rule>
         <Name>1 ~ 5</Name>
         <Title>1 ~ 5</Title>
         <ogc:Filter>
           <ogc:And>
             <ogc:PropertyIsGreaterThanOrEqualTo>
               <ogc:PropertyName>mesure_cnt</ogc:PropertyName>
               <ogc:Literal>1</ogc:Literal>
             </ogc:PropertyIsGreaterThanOrEqualTo>
             <ogc:PropertyIsLessThan>
               <ogc:PropertyName>mesure_cnt</ogc:PropertyName>
               <ogc:Literal>5</ogc:Literal>
             </ogc:PropertyIsLessThan>
           </ogc:And>
         </ogc:Filter>
         <PolygonSymbolizer>
           <Fill>
             <CssParameter name="fill">#FF0000</CssParameter>
             <CssParameter name="fill-opacity">0.3</CssParameter>
           </Fill>
           <Stroke>
             <CssParameter name="stroke">#000000</CssParameter>
             <CssParameter name="stroke-width">0.5</CssParameter>
           </Stroke>
         </PolygonSymbolizer>
       </Rule>
        <Rule>
         <Name>6 ~ 10</Name>
         <Title>6 ~ 10</Title>
         <ogc:Filter>
           <ogc:And>
             <ogc:PropertyIsGreaterThanOrEqualTo>
               <ogc:PropertyName>mesure_cnt</ogc:PropertyName>
               <ogc:Literal>6</ogc:Literal>
             </ogc:PropertyIsGreaterThanOrEqualTo>
             <ogc:PropertyIsLessThan>
               <ogc:PropertyName>mesure_cnt</ogc:PropertyName>
               <ogc:Literal>10</ogc:Literal>
             </ogc:PropertyIsLessThan>
           </ogc:And>
         </ogc:Filter>
         <PolygonSymbolizer>
           <Fill>
             <CssParameter name="fill">#FF0000</CssParameter>
             <CssParameter name="fill-opacity">0.6</CssParameter>
           </Fill>
           <Stroke>
             <CssParameter name="stroke">#000000</CssParameter>
             <CssParameter name="stroke-width">0.5</CssParameter>
           </Stroke>
         </PolygonSymbolizer>
       </Rule>
       
        <Rule>
         <Name>11 ~ 15</Name>
         <Title>11 ~ 15</Title>
         <ogc:Filter>
           <ogc:And>
             <ogc:PropertyIsGreaterThanOrEqualTo>
               <ogc:PropertyName>mesure_cnt</ogc:PropertyName>
               <ogc:Literal>11</ogc:Literal>
             </ogc:PropertyIsGreaterThanOrEqualTo>
             <ogc:PropertyIsLessThan>
               <ogc:PropertyName>mesure_cnt</ogc:PropertyName>
               <ogc:Literal>15</ogc:Literal>
             </ogc:PropertyIsLessThan>
           </ogc:And>
         </ogc:Filter>
         <PolygonSymbolizer>
           <Fill>
             <CssParameter name="fill">#FF0000</CssParameter>
             <CssParameter name="fill-opacity">0.8</CssParameter>
           </Fill>
           <Stroke>
             <CssParameter name="stroke">#000000</CssParameter>
             <CssParameter name="stroke-width">0.5</CssParameter>
           </Stroke>
         </PolygonSymbolizer>
       </Rule>
        
       <Rule>
         <Name>16 ~ </Name>
         <Title>16 ~ </Title>
         <ogc:Filter>
           <ogc:PropertyIsGreaterThan>
             <ogc:PropertyName>mesure_cnt</ogc:PropertyName>
             <ogc:Literal>16</ogc:Literal>
           </ogc:PropertyIsGreaterThan>
         </ogc:Filter>
         <PolygonSymbolizer>
           <Fill>
             <CssParameter name="fill">#FF0000</CssParameter>
             <CssParameter name="fill-opacity">1</CssParameter>
           </Fill>
           <Stroke>
             <CssParameter name="stroke">#000000</CssParameter>
             <CssParameter name="stroke-width">0.5</CssParameter>
           </Stroke>
         </PolygonSymbolizer>
       </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>



개요

geoserver에 레이어그룹 설정 방법에 대하여 설명하려 한다.

브라우저에서 레이어를 호출 할 때 다수의 레이어를 호출하면 속도 저하의 원인이 된다. 이를 해결하기위해 레이어를 그룹화 하여

한번의 호출로 레이어를 그룹화된 레이어를 호출한다. (단 개별 레이어 온/오프 에 있어 문제가 생길 수 있다.)


레이어 생성과 스타일 적용에 대한 내용은 이전에 게시한 지오서버 서비스 설정을 참고하면 된다. https://progworks.tistory.com/6?category=810021

용도지역에 대한 데이터는 국가공간정보포털 오픈마켓을 이용하였다. http://data.nsdi.go.kr/dataset


레이어 그룹 설정

지오서버 사이드 메뉴 데이터 > 레이어 그룹을 선택하고 '새로운 레이어 그룹 생성하기' 버튼을 클릭한다.


레이어 그룹 생성하기 화면에서 '레이어 추가하기' 버튼을 선택하여 추가할 레이어를 선택한다.


레이어를 추가 하고, 작업공간 지정 및 '데이터 최소경계 영역 계산하기' 버튼을 눌러 바운더리를 생성한후 저장한다.

* 레이어 그룹화 하려는 레이어의 좌표계는 동일하게 설정하고 그리기 순서를 조정한다.


저장한 그룹레이어를 확인해 보자




개요

지오서버를 설치하고 SHP파일을 이용하여 서비스를 발행하는 방법을 설명


1. 지오서버 설치

공식 지오서버설치 사용자 메뉴얼 

설치 후 GeoServer 메인화면

기본 아이디 비밀번호는  admin/geoserver 이다.


2. 작업공간 추가

레이어를 발행 하거나 등록하려면 작업공간을 추가해야 한다.
왼쪽 사이드 메뉴 데이터 > 작업공간  버튼을 클릭하면 작업공간을 생성하는 페이지가 나온다.

작업공간 페이지


새로운 작업공간 제출


3. 저장소 생성

작업공간을 추가한 뒤에 저장소를 생성한다.

저장소 생성


새로운 데이터 저장소

"벡터 데이터 저장소", "레스터 데이터 저장소", "기타 데이터 저장소" 3가지의 저장소가 존재 하는데 기본적으로 shp파일을 저장할 저장소를 생성 하겠다.

* oracle 데이터베이스를 사용한다면 이곳을 참고하기 바란다.

https://docs.geoserver.org/latest/en/user/data/database/oracle.html


새로운 벡터 데이터 저장소 추가


저장소를 생성하면 새로운 레이어 화면이 나오는데 여기서 발행하기 버튼을 선택하여 발행 할 수도 있으나 레이어 메뉴에서 레이어를 발행해보겠다.


4. 레이어 발행



새로운 레이어 추가하기 버튼을 선택하면 저장소를 선택하는 셀렉트 박스가 나오고 위에서 만든 progworks:tl_emd 를 선택한다.

우후 새로운 레이어 메뉴로 이동하며, 리스트에 해당 데이터의 발행하기 버튼을 선택한다.


발행하기 버튼을 선택하면 레이어 편집 메뉴로 이동한다.

여기서 제일 중요한 부분은 아래 쪽 공간 좌표 체계, 레이어 최소경계 영역 부분이다.

원본 데이터 좌표체계는 위에서 올린 shp 파일 디렉토리에 같은 이름의 prj 파일이 존재하면 해당 좌표계를 자동 선택해준다.

레이어 최소 경계영역에 '데이터로부터 계산하기' 와 '원본 영역으로부터 계산하기' 버튼을 선택하여 최소경계 영역을 설정해준다.


저장이 완료되면 데이터 > 레이어 미리보기 버튼을 클릭하여 이동 후 발행한 레이어에 Openlayers 버튼을 선택하여 레이어를 확인 할 수 있다.

5. 스타일 등록


이름과 작업공간을 지정하고, "기본 스타일을 생성합니다." 영역에 있는 생성하기 ...  버튼을 클릭하여 기본 스타일을 불러온다.

아래의 주소에서 폴리곤 스타일에 대한 사용자 메뉴얼을 참고하였다.

https://docs.geoserver.org/stable/en/user/styling/sld/cookbook/polygons.html


메뉴얼 내용중 Polygon with styled label 타이틀의 SLD 내용을 카피하여 저장했다.

<FeatureTypeStyle>
     <Rule>
       <PolygonSymbolizer>
         <Fill>
           <CssParameter name="fill">#40FF40</CssParameter>
         </Fill>
         <Stroke>
           <CssParameter name="stroke">#FFFFFF</CssParameter>
           <CssParameter name="stroke-width">2</CssParameter>
         </Stroke>
       </PolygonSymbolizer>
       <TextSymbolizer>
         <Label>
           <ogc:PropertyName>name</ogc:PropertyName>
         </Label>
         <Font>
           <CssParameter name="font-family">Arial</CssParameter>
           <CssParameter name="font-size">11</CssParameter>
           <CssParameter name="font-style">normal</CssParameter>
           <CssParameter name="font-weight">bold</CssParameter>
         </Font>
         <LabelPlacement>
           <PointPlacement>
             <AnchorPoint>
               <AnchorPointX>0.5</AnchorPointX>
               <AnchorPointY>0.5</AnchorPointY>
             </AnchorPoint>
           </PointPlacement>
         </LabelPlacement>
         <Fill>
           <CssParameter name="fill">#000000</CssParameter>
         </Fill>
         <VendorOption name="autoWrap">60</VendorOption>
         <VendorOption name="maxDisplacement">150</VendorOption>
       </TextSymbolizer>
     </Rule>
   </FeatureTypeStyle>



레이어 메뉴에서 레이어 편집


지오서버에서 제공하는 기본 polygon 스타일을 변경 시켰다.



+ Recent posts