공간정보산업 발전을 위한 성찰의 시간을 갖고자 합니다.


서론

곧 다음 해(2019년) 정보 예산안의 심의가 열릴 것이다. 작 년 이 맘때즘 기사화된 신문 지면을 참조하면 국가정보화 부문의 2018년도 실행 예산은 약 5조 2천억원으로, 중앙정부가 4조 2천억원, 지자체가 약 1조원을 투입하는 것으로 되어 있다. 어느 정도 규모인지 가늠하기도 힘든 금액임에도 불구하고 정보화사업을 주업으로 하는 대다수의 중소기업, 특히 공간정보 분야의 국가정보화사업을 주업으로 하는 중소기업들이 더욱 힘들 수 밖에 없는지 원인을 고민해 본다.


 공간정보 분야의 중소기업을 유독 힘들게 하는 여러 문제점들을 살펴보면, 상대적으로 미미한 공간정보산업규모, 신규 발주되는 사업의 축소와 기 구축 시스템의 유지관리비용 증가, 외산 솔루션 또는 공개SW 에 종속된 기반 기술력 부족으로 신규 시장 창출 역량 부족, 저임금과 잦은 출장으로 고용의 질이 좋지 못한 것, 마지막으로 경영난 타개를 위하여 전문 분야가 아닌 부문의 사업수행 실패로 인한 기업 신뢰도 하락 등을 들 수 있다.


본론

1. 상대적으로 미약한 공간정보산업 규모 및 신규 사업의 감소

국토교통부의 "2017년 공간정보산업조사 통계보고서"를 보면 2016년 기준 공간정보사업체수는 4,569개사이며, 그 중 약 67%가 공간 정보 관련 기술 서비스업에 종사하는 것으로 조사되고 있다. 또한 세부 매출 항목을 보면 "공간정보 시스템 통합 자문 및 구축 서비스업"이 약 1조 1천억원으로 조사되고 있다. 동 보고서에 기술된 한국산업은행의 "한국은행 기업분석 매출액 비교"를 보면 공간정보기업이 발생시키는 매출은 전체에서 약 0.8%이고, 이중 12%가 흔히 말하는 공간정보분야의 정보화사업부문 매출인 것이다.

정보화사업 부문 매출은 세부적으로 컨설팅 및 자문, 신규 구축, 유지보수(유지관리 및 운영)로 나뉘어 진다. 소프트웨어정책연구소 이슈리포트에는 2015년 기준으로 유지보수 부문의 비중이 50%를 넘어선 것으로 조사되었고 그 비중은 계속 증가하고 있는 추세이다. 이는 공공 및 민간 부문을 포함하여 약 5,000억원 규모의 공간정보 시장에서 3,000개 이상의 업체가 경쟁하는 시장이라는 것을 의미한다.

복지 및 교육 예산의 증가로 인해 실제 공공정보화산업 분야의 예산은 늘어나기 어려운 형편임을 고려할 때 산업계 스스로 정부에 의지하는 사업구조를 개편하지 못한다면, 이런 어려움에서 벗어나기 힘들 것이다.


2. 외산 솔루션에 의존적인 기술 환경

2000년대 중반 프리랜서와 함께 일할 경우 고급의 경우 월별 약 800만원부터 1,000만원까지 금액으로 계약을 진행했다. 현재 관리하고 있는 사이트의 경우 특급임에도 월 900만원 미만의 금액으로 계약을 진행할 수 있었다. 그 동안의 물가 상승률 등을 고려할 때, 오히려 프리랜서와의 계약 단가는 낮아졌는데 왜 경영난은 계속되는지 고민해보니 의외로 단순한 결론을 얻게 되었다.
외산 솔루션 의존도가 높다보니 최초 도입 후 유지관리비용이 지속적으로 상승했다. 이러한 유지관리예산이 지속적으로 증가함에 따라 과거대비 동일 비용으로 수행해야하는 업무가 많아졌고 고용을 창출할 수 있는 신규사업도 감소했다. 하지만 단순히 정보화 예산 부족만으로 원인을 따지기에는 뭔가 부족해 보인다.

첫째, ESRI사의 솔루션, Oracle을 선호하는 발주기관이 대다수를 차지하는 환경에서 기업은 요건에 따라 사업을 진행했으며 이는 기구축시스템의 유지관리비용(SW라이센스 비용)을 증가시켰고 신규 사업을 기획하고 진행할 수 있는 예산 축소의 원인이 되었다.
Oracle의 경우 유지관리를 위한 Subscription을 구매하지 않을 경우, 다음 해 유지관리 서비스를 받고자하면 이 전에 구매하지 못한 것까지 포함해서 구매해야 한다. 이 비용이 의외로 커서 두 해만 거르더라도 신규로 Oracle을 구매하는 비용에 도달하곤 한다.
또한 시스템을 구성하는 장비의 예비 파트비용은 모두 정보화 예산에 포함되는 금액으로 개발예산을 줄이는 원인이 된다. 국내의 많은 공간정보 또는 GIS 관련 시스템은 최초 구축 시 시군구서버, 시도서버, 중앙서버를 연계하는 방식으로 업무양 대비 과도한 장비를 도입하였고 현재는 이를 위한 유지관리에 많은 예산을 투입하는 실정이다.
(지자체가 발주하는 공간정보관련 사업은 대부분이 유지관리 사업임 : 나라장터 조회)


둘째, 더 이상 특별하지 않은 공간정보 어플리케이션을 들 수 있다. 서비스 부문으로 한정하면 대부분의 사이트에서 Geoserver를 이용하고, 웹 브라우저에서 OpenLayers 등을 이용하여 사용자페이지를 구성한다. 누구라도 공간정보 앱을 개발할 수 있게 된 것으로써 굳이 본사의 정규직 인력이 아닌 계약직 인력으로도 계약을 이행할 수 있도록 해주었다. 

그러나 발주처의 눈높이가 높아지고 정보화 기술의 발전에 따라 처리해야하는 데이터 양은 기하급수적으로 늘고 있는데 비해 공공부문 공잔정보시스템 개발에 적용하는 기술요소 또는 공개SW는 이를 따라가지 못하고 있다. 이는 사업 성과물에 대한 고객 불만족과 기업 불신의 원인이 되고 있다.
업체 스스로가 4차산업혁명, ICBM 등 최신 기술 트렌드에 맞는 뭔가를 제시할 수 없다면 공간정보서비스란 누구나 할 수 있는 그저 그런 것이 될 수 밖에 없을 것이다. 


3. 근속 년수 부족 및 인력 이탈

국토교통부의 "2017년 공간정보산업조사 통계보고서"를 보게 되면 근속년수가 1~3년 미만이 전체의 약 62% 정도를 차지하는 것을 볼 수 있다. 인력 이탈 원인은 누구라도 급여에 대반 불만족이 가장 크다는 것을 쉽게 짐작할 수 있다. 동일 년 수 대비 계약직(프리랜서) 직원이 받는 급여와 내 급여의 차이가 현저하다면 누구든 불만을 갖기 마련이다.(이직에 대한 고민을 하게 될 것이다.)

기업은 고용을 유지하기 위해 지속적으로 급여를 인상해야 하지만, 내가 만든 재화를 판매하는 것이 아닌 사업을 수주하여 발생하는 매출이라면 미래 불확실성으로 직원의 급여 인상에 소극적일 수 밖에 없고 양질의 일자리를 제공하기 위한 정규직 채용에도 적극적이지 못할 것이다.


근속 년수가 길지 않으므로 기술 개발의 연속성을 가져갈 수 없다. 공간정보분야의 대부분 국산 SW는 최초 개발된 원형에서 발전이 더디며 유지관리서비스 또는 외산 솔루션 대비 미흡한 것이 사실이다.

지속적으로 기술을 발전시키기 위한 인력확보의 전제조건은 만족할만한 보상의 제공이다. 소프트웨어산업협회는 매년 "SW대가산정가이드"를 공표하지만 실제 이를 준수하는지 관리감독하지는 않는다.  FP(Function Point)기준으로 개발규모를 산정하고 일일생산성 기준에 따라 투입인원을 산정하는 현재 방식에는 문제가 없지만 현장에 적용되는 괴리를 줄이지 못한다면 발주기관 또한 납품되는 시스템의 품질을 보장받기 어려울 것이고,  기업은 소비되는 자원 투입 방식의 인력관리를 진행 할 수 밖에 없을 것이다. 

부끄럽게도 국내 공간정보산업은 국가 발주 사업에 회사의 명운을 거는 분야이다. 이미 업체 스스로 왜곡된 시장구조를 바꿀 수 있는 능력을 갖추고 있지 못하며, 공간정보가 미래 먹거리를 지원하는 기반 정보라면 국내 기업이 만든 SW를 사용하도록 장려할 수 있는 제도적 지원 등이 동반되어야 할 것이다.


결론

전자정부의 발전에 따라 유지비용의 증가로 신규 사업예산이 줄어드는 것, 자체 기술력 부족으로 시장의 신뢰를 잃어버리는 것, 정부 의존적 사업구조로 인해 고용의 질을 보장하지 못하는 것 등 공간정보기업이 처한 어려운 상황에 대한 변명 아님 변명을 해보았다.
사견이지만 개발자 스스로도 외산 솔루션을 찾는 편함보다는 새로운 것을 창조하는 기쁨을 찾기를 바라며 짧지 않은 글 마무리 한다.


프로그웍스는 항상 고민하고 고품질의 서비스를 제공하기위한 개발자가 되겠습니다.

개요

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 스타일을 변경 시켰다.



단순화 작업 (벡터 > 도형도구 > 단순화)

geoserver에 읍면동 데이터(shp)를 등록하여 WFS서비스를 사용했다. 해당 데이터의 용량은 55MB로 전국레벨에서 벡터(WFS)서비스를 사용하기에 무리가 있어 QGIS를 사용하여 단순화 작업에 들어갔다.
 

 

단순화 작업이 끝난 후에 레이어의 단순화 모양이 예상과 다르게 나왔다.

다시한번 허용범위를 1m 지정하고 단순화 작업을 실행했지만 결과는 동일하게 나타났다.
이유는 투영좌표계에 따라서 QGIS가 사용하는 단위가 다르기 때문이다.
현재 읍면동데이터의 좌표계는 WGS84 EPSG:4326을 사용하고 있다.
(Proj4: +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs +towgs84=0,0,0)

 

QGIS는 계산시 CRS의 단위를 사용하는데 EPSG:4326와 같은 지리좌표체계(CRS)는 단위로 degrees를 사용한다. 계산을 위해서 meters, feet 단위를 가지는 투영좌표계를 사용해야한다.

 

데이터의 좌표계를 meters 단위를 사용하는 EPSG:5174로 변경하여 다시한번 단순화 작업을 실행하였다.
(Proj4: +proj=tmerc +lat_0=38 +lon_0=127.0028902777778 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs)

버텍스 개수가 줄어 들고 단순화작업이 정상적으로 이루어졌다.

 

개요

PaaS를 구현하는 클라우드 서비스로써 파스타 (CloudFoundry 계열) 플랫폼에서 제공하는 경량 컨테이너에서 동작하는 OGC WMS(Web Map Service)의 GetMap 인터페이스를 Sping Web 과 Java Graphics2D를 이용하여 구현한 후,
이를 클러스터링하여 OpenLayers에 통합하여 서비스 UI를 구현함

 

 

목적

클라우드서비스(PaaS)가 제공하는 컨테이너 환경에서 GIS응용어플리케이션이 만족할만한 성능을 제공하는지 확인함

 

환경구성

1. Server : Linux Container, 가상서버 위에 설치되는 DBMS
2. DBMS : Postgre + PostGIS
3. WAS(Web Application Server) : Apache Tomcat

 

개발환경 및 배포

1. 이클립스에서 일반 웹앱을 제작하는 방법을 준수하고,
   배포서버를 이클립스에 등록된 서버 중 CloudFoundry를 지정하고 연결계정을 등록하여 해당 서버로 배포함
2. 최초 제작된 웹 앱(WMS)을 복사하여 어플리케이션 명칭을 변경하여, 필요한 갯수만큼 클라우드(CloudFoundry)에 배포
   ( 웹 어플리케이션의 수평적 확장 적용)

구현

1. 다양한 데이터프로바이더 수용을 위해 성능제약이 존재하는 지오서버 등의 Pakage SW 사용을 배제하고
2. DBMS가 반환하는 결과목록을 일반적으로 적용되는 GIS 자료구조( WKB, WKT)로 변환하지않고, 직접 자바 도형(java.awt.Shape) 으로 변환
  (지오서버가 제공하는 WMS 대비 2배 이상의 성능 향상 확인)

구현결과

1. 연속지적도(전국 SHP 파일 용량 기준 약 30GB)를 기준으로 8개의 웹 앱으로 클러스터링 했을 경우,
   맵 타일 제작 과정 없이도 동적 지도서비스가 가능함을 확인
2. 수평확장되는 웹 앱(WMS)의 갯수만큼 성능 향상 확인 (저비용 서버 확장)
3. DBMS(1) + 컨테이너(8)의 구성만으로도 동시 접속자 100명 이상 수용가능함을 확인

 

성능향상을 위한 개선 사항

1. 인프라 레벨에서 물리 또는 가상으로 이용될 수 있는 가속장치가 있을 경우,
   렌더링시켜야하는 도면데이터 조회 후 이미지 렌더링 속도 약 20% 향상 가능
2. 데이터 프로바이더(DBMS) 계층의 수직적 확장 (가상 코어 증설) 및
   수평확장 (가상 서버 증설) 을 통해 동시에 수용할 수 있는 사용자 증가

 

적용 및 응용 분야

1. 실시간 변경되는 공간정보의 실시간 서비스 발행
2. 저비용으로 고성능 GIS 응용 서비스 제공

 

결론

1. 가상서버, 경량 컨테이너를 제공하는 물리서버의 성능 향상으로 클라우드컴퓨팅 환경에서 GIS 서비스가 충분한 성능을 제공함을 확인
2. 경우에 따라 흔히 GIS엔진이라고 하는 패키지SW 사용을 배제하고, 공간DBMS를 이용하는 코드의 최적화만으로 충분한 성능을 제공함을 확임

국가공간정보포털 오픈마켓에서는 다양한 종류의 공간정보 관련 공공데이터를 제공한다. 

또한 국가공간정보포털에서 제공하는 데이터의 파일 포맷은 여러가지가 있지만 대부분의 데이터가 shp 포맷으로 제공된다.

QGIS를 이용하여 SHP 포맷의 데이터를 DXF 포맷으로 변환하는 방법에 대하여 알아보자.

 

1. 먼저 QGIS에서 SHP 포맷의 데이터를 오픈한다.

 QGIS : ver2.18.22

 활용 데이터 : 건물통합정보마스터_대구 (활용 데이터 출처 : 국가공간정보포털 오픈마켓)

 활용 데이터 좌표계 : Bessel/중부(200,000/500,000) EPSG : 5174

 

2. Layers Panel에서 DXF로 변환이 필요한 데이터 오른쪽 클릭

 

 - 데이터 오른쪽 클릭 후, 다른이름으로 저장 버튼 클릭

 

3. 새 이름으로 벡터 레이어 저장하기

 다른이름으로 저장 클릭 시, 새 이름으로 벡터 레이어 저장하기 화면이 나타난다.

- 형식 : 저장 파일 포맷을 선택하는 부분

 - File name : 파일의 이름 

 - 탐색(File name) : 저장 위치

 - 좌표계 : 파일의 좌표계 선택

 

4.  결과 

국가공간정보 포털에서  "연속지적도_서울_영등포구" 자료를 받아 Postgresql에 저장 하여 사용 하던 도중 배경지도와 이격이 발생하는 부분을 발견 하였다.

해당 좌표계는 Bessel  EPSG:5174 이다.

Postgresql 에서 해당 좌표계를 조회해 보자.

SELECT * FROM SPATIAL_REF_SYS WHERE SRID = 5174;

srtext 컬럼값은

"PROJCS["Korean 1985 / Modified Central Belt",GEOGCS["Korean 1985",DATUM["Korean_Datum_1985",SPHEROID["Bessel 1841",6377397.155,299.1528128,AUTHORITY["EPSG","7004"]],AUTHORITY["EPSG","6162"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01 (...)"

proj4text 컬럼값은

"+proj=tmerc +lat_0=38 +lon_0=127.0028902777778 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs "

 

http://epsg.io/ 에서 확인해 보면 해당 좌표계에 문제는 없어 보였다. 

이격이 발생한 이유는 이곳에서 찾을 수 있었다.

http://www.ngii.go.kr/kor/board/view.do?rbsIdx=44&key=%EC%A2%8C%ED%91%9C%EB%B3%80%ED%99%98&keyField=search1&idx=63

평행이동량(m) 회전량() 축척변화(ppm)
Δx Δy Δz Rx Ry Rz λ
-115.80 +474.99 +674.11 -1.16 +2.31 +1.63 +6.43
 

+towgs84(타원체 변환 계수) 값을 추가하여 해당 좌표계를 추가 해야 한다. 

국내 좌표계 towgs84 파라미터 값 계산에 대한 정보는 이곳을 참조하면 된다.https://groups.google.com/forum/#!topic/osgeo-kr/0oMKjzyLPW4

 

타워체 변환 계수 값을 추가 하여 좌표계를 새로 생성해 보자.우선 사용할 srid 값과 srtext, proj4text 값을 살펴보면

+towgs84  추가 srtext

"PROJCS["Korean 1985 / Modified Central Belt",GEOGCS["Korean 1985",DATUM["Korean_Datum_1985",SPHEROID["Bessel 1841",6377397.155,299.1528128,AUTHORITY["EPSG","7004"]],TOWGS84[-115.80,474.99,674.11,1.16,-2.31,-1.63,6.43],AUTHORITY["EPSG","6162"]],PRIMEM["Gree (...)"

+tpwgs84 추가 proj4text 

"+proj=tmerc +lat_0=38 +lon_0=127.0028902777778 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs +towgs84=-115.80,474.99,674.11,1.16,-2.31,-1.63,6.43"
 
 
타원체 변환 계수 값을 추가한 좌표계 생성

 

좌표계를 생성 하고 해당 좌표계에 대하여 geometry 정보도 업데이트 시켜야 한다.

"SELECT UpdateGeometrySRID('table_name', 'geometry column', 900916)"

 

이후 새로 생성한 EPSG:900916 사용, 배경지도와 이격이 사라짐을 확인 하였다.

 

 

#1 환영합니다 !!

공간정보 활용을 위한 정보를 공유합니다. 무료 개방되고 있는 공간정보와 PostGIS, QGIS 등 공개SW를 잘 이용하려는 목적으로 운영되는 모임입니다.

 

 

 

+ Recent posts