2013년 1월 24일 목요일

[Desktop GIS] Why Open Source GIS?

Desktop GIS를 중심으로 알아보는 왜 Open Source GIS가 좋은가?

▣ 운영체제로부터  자유롭다.
 - Windows 외 Linux, Mac OS 등 다양한 운영체제를 지원한다
 - QGIS: download
 - uDig:  download
 - GRASS GIS: download
 - gvSIG: download
 - 기타: OSGeo

▣ 글로벌 환경에서 다양한 분야의 사람들이 지역화 작업 등 협업을 통해 발전해 간다
 - 문서화가 안되어 있다. 한글 지원이 잘 안된다 등은 이제 옛말이 됨
 - 프로그램 UI 지역화
  : ex) QGIS, uDig, GeoServer 한글화
 - 매뉴얼 번역: QGIS 매뉴얼 번역 및 서적 출간
  : ex) Quantum GIS(QGIS) 1.7.x 버젼 한국어 매뉴얼 PDF 버젼

▣ OGC 등 표준을 기본으로 지원하며,비 표준이더라도 인기 있는 포맷이나 기능은 상용보다 빨리 지원한다.
 - OGC 표준의 테스트 베드 주도: GeoAPI, GeoTools, 52 North ...
 - OGC WMS/WFS/WMTS 등 표준 서비스의 클라이언트를  지원
 - WFS 서비스를 통해서 직접 편집도 가능

GeoServer의 WMS 연결

▣ 소스 코드가 공개되므로 누구나 마음만 먹으면 필요한 기능을 직접 만들고 배포도 가능하다
 - 스크립트, 플러그인 등을 만들 수 있는 기반 마련
 - QGIS Plugins Repository
 - uDig Community

▣ Open Source GIS를 이용한 다양한 데이터 및 활용 사례가 공유된다
 - John Snow’s famous cholera analysis data in modern GIS formats
 - Analyzing John Snow's cholera dataset with QGIS and SEXTANTE

- 다음은 위 사례를 Ubuntu(Linux) 환경에서 uDig GIS + GXT Plugin을 이용하여 분석한 예
- 주요 분석 기능
 - Voronoi Diagram(Thiessen Polygon)
 - Point in Polygon(Point Statistics)
 - Distance to closest hub(Spider Map)
 - Kernel Density

한글 환경

영문 환경

▣ 지원 단체: OSGeo, OSGeo Korean Chapter

2013년 1월 23일 수요일

GXT Toolbox for uDig 플러그인 소개

오늘은 저희가 실험적으로 개발하고 있는  uDig 플러그인(GXT Toolbox for uDig)을 소개할까 합니다.

uDig 은 Java 로 만들어진 Eclipse Rich Client Platform (RCP) 기반의 Open Source(EPL , BSD ) 데스크탑 GIS 프로그램으로 데이터 접근, 편집, 시각화를 위한 Java 솔루션을 제공합니다.  세종대학교 및 서울특별시가 공동연구로 메뉴 한글화 및 일부 매뉴얼 한글화를 진행했으며, uDig은 Spatial Toolbox View 라고 알려진 분석기능이 탑재된 플러그인이 있습니다.

저희 회사가 보유하고 있는 오픈소스 기반 상업용 GXT Engine의 분석기능을 uDig 응용프로그램에서 직접 사용할 수 있도록 구성해 봤습니다. 약 200여가지 분석 기능들(주로 GeoServer와 WPS 연동) 중 데스크탑 환경의 UI로 구성할 수 있는 프로세스들에 대해서만 일단 제공합니다.

자세한 내용은 아래 기능 소개 링크를 확인하시면 됩니다.
아직 많이 부족하지만 시작이 반이라고, 앞으로 계속 지원해 볼까 합니다.

▣ 소개 및 매뉴얼
 - GXT Toolbox for uDig

▣ 주요기능
 - uDig Spatial Toolbox 와 같은 분석 트리 구조로 구성
 - 프로세스의 Input/Output 파라미터 메타 정보를 이용하여 UI 자동 구성      
 - 분석결과가 Feature 또는 Raster일 경우 자동으로 지도에 추가
 - 필수 파라미터는 파라미터 제목 왼쪽에 녹색 아이콘이 표시
 - Help 탭에서 파라미터에 대한 상세 정보를 확인할 수 있음

▣ 제약사항
 - 분석 결과의 저장은 Shapefile 또는 GeoTiff만 지원
  - 좌표체계가 없는 레이어의 경우는 지도 좌표체계를 사용
 - 이 플러그인은 실험단계이므로 버그가 있을 수 있습니다.
 - 버그를 발견하거나 추가했으면 하는 기능이 있으면 mapplus @ gmail.com, jya1210 @ gmail.com 로 메일 주십시오
  - 이후에 다음의 기능들이 추가로 탑재될 예정이며, 계속해서 분석기능들이 추가됩니다
       -  추가 탑재될 기능들

2013년 1월 22일 화요일

[GeoServer] Disabling Layer Preview & Demos Page

 질문: GeoServer 사용 중 Production 환경에서 Layer Preview 및 Demos 페이지를 노출하고 싶지 않을 경우.
 해결:
 - GeoServer 설치폴더 아래 webapps\geoserver\WEB-INF\lib 폴더로 이동하여  web-demo-x.x.x.jar 를 삭제.
 - Demos 페이지는 *.jar를 삭제하더라고 보이지만 실질적으로 사용할 수는 없음.

2013년 1월 11일 금요일

[PostGIS] spatial_ref_sys 좌표체계 추가…

 

우리나라에서도 기존 베셀(Bessel)타원체의 서부(125), 중부(127), 동부(129), 동해(131) 좌표체계에서 세계측지계로(GRS80)의 전환이 상당부분 변경되었습니다.

지자체에서도 자체적으로 보유하고 있는 공간정보에 대해서 이미 세계측지계로의 좌표변환이 많이 이루어졌고 원점에 대한 가산수치도 2009년 12월 부터 기존 Y(500000) 에서 600000으로 변경되어 적용되었습니다.

PostGIS의 spatial_ref_sys 테이블에 해당 좌표가 등록되지 않았을 경우에 다음의 쿼리를 사용하여 좌료를 등록하고 사용할 수 있습니다.

- 서부원점(GRS80)-EPSG:5185
INSERT INTO spatial_ref_sys(srid, auth_name, auth_srid, srtext, proj4text)           
    VALUES (5185, 'EPSG', 5185, 'PROJCS["ITRF_2000_TM_Korea_West_Belt",
    GEOGCS["GCS_ITRF_2000",
    DATUM["D_ITRF_2000",
    SPHEROID["GRS_1980",6378137.0,298.257222101]],
    PRIMEM["Greenwich",0.0],
    UNIT["Degree",0.0174532925199433]],
    PROJECTION["Transverse_Mercator"],
    PARAMETER["False_Easting",200000.0],
    PARAMETER["False_Northing",600000.0],
    PARAMETER["Central_Meridian",125.0],
    PARAMETER["Scale_Factor",1.0],
    PARAMETER["Latitude_Of_Origin",38.0],
    UNIT["Meter",1.0]]',
    '+proj=tmerc +lat_0=38 +lon_0=125 +k=1 +x_0=200000 +y_0=600000 +ellps=GRS80 +units=m +no_defs');


- 중부원점(GRS80)-EPSG:5186
INSERT INTO spatial_ref_sys(srid, auth_name, auth_srid, srtext, proj4text)           
    VALUES (5186, 'EPSG', 5186, 'PROJCS["ITRF_2000_TM_Korea_Central_Belt",
    GEOGCS["GCS_ITRF_2000",
    DATUM["D_ITRF_2000",
    SPHEROID["GRS_1980",6378137.0,298.257222101]],
    PRIMEM["Greenwich",0.0],
    UNIT["Degree",0.0174532925199433]],
    PROJECTION["Transverse_Mercator"],
    PARAMETER["False_Easting",200000.0],
    PARAMETER["False_Northing",600000.0],
    PARAMETER["Central_Meridian",127.0],
    PARAMETER["Scale_Factor",1.0],
    PARAMETER["Latitude_Of_Origin",38.0],
    UNIT["Meter",1.0]]',
    '+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=600000 +ellps=GRS80 +units=m +no_defs');


- 동부원점(GRS80)-EPSG:5187
INSERT INTO spatial_ref_sys(srid, auth_name, auth_srid, srtext, proj4text)
    VALUES (5187, 'EPSG', 5187, 'PROJCS["ITRF_2000_TM_Korea_East_Belt",
    GEOGCS["GCS_ITRF_2000",
    DATUM["D_ITRF_2000",
    SPHEROID["GRS_1980",6378137.0,298.257222101]],
    PRIMEM["Greenwich",0.0],
    UNIT["Degree",0.0174532925199433]],
    PROJECTION["Transverse_Mercator"],
    PARAMETER["False_Easting",200000.0],
    PARAMETER["False_Northing",600000.0],
    PARAMETER["Central_Meridian",129.0],
    PARAMETER["Scale_Factor",1.0],
    PARAMETER["Latitude_Of_Origin",38.0],
    UNIT["Meter",1.0]]',
    '+proj=tmerc +lat_0=38 +lon_0=129 +k=1 +x_0=200000 +y_0=600000 +ellps=GRS80 +units=m +no_defs');

- 동해(울릉)원점(GRS80)-EPSG:5188
INSERT INTO spatial_ref_sys(srid, auth_name, auth_srid, srtext, proj4text)           
    VALUES (5188, 'EPSG', 5188, 'PROJCS["ITRF_2000_TM_Korea_DongHae_Belt",
    GEOGCS["GCS_ITRF_2000",
    DATUM["D_ITRF_2000",
    SPHEROID["GRS_1980",6378137.0,298.257222101]],
    PRIMEM["Greenwich",0.0],
    UNIT["Degree",0.0174532925199433]],
    PROJECTION["Transverse_Mercator"],
    PARAMETER["False_Easting",200000.0],
    PARAMETER["False_Northing",600000.0],
    PARAMETER["Central_Meridian",131.0],
    PARAMETER["Scale_Factor",1.0],
    PARAMETER["Latitude_Of_Origin",38.0],
    UNIT["Meter",1.0]]',
    '+proj=tmerc +lat_0=38 +lon_0=131 +k=1 +x_0=200000 +y_0=600000 +ellps=GRS80 +units=m +no_defs');

[uDig] Custom CRS Definitions

GeoServer에서 CRS를 새로 정의하거나 기 정의된 CRS를 재정의(Override)하는 방법은 이전에 포스팅한 적이 있다.
 - GeoServer Custom CRS Definitions

uDig에서도 프로그램 수정 없이 CRS를 새로 정의할 수 있는 방법이 있으며, 과정은 다음과 같다.

1. GeoServer를 사용하고 있다면 Data Directory의 user_projections 폴더로 이동한 후 epsg.properties 파일을 열어 새로운 CRS를 정의한다. 방법은 위 GeoServer Custom CRS Definitions 를 참조한다.

2. uDig 설치 폴더의 plugins\net.refractions.udig.libs_플러그인버전넘버 폴더에 편집한 파일을 복사한다. 1.3.3 버전부터는 이 파일이 기본으로 포함되어 있는것 같다. 이미 있다면 텍스트 편집기를 열어 새로운 좌표체계를 추가하면 된다.

3. 이제 uDig을 시작하면 새로운 좌표체계를 사용할 수 있다.

4. GeoServer의 경우 새로운 좌표체계를 등록하는 방법 외에 기존 좌표체계를 재정의 할 수 있도록 epsg_overrides.properties 파일을 지원한다. uDig은 소스코드 상으로는 현재 지원하지 않는 상태인듯하다.