2012년 12월 24일 월요일

[uDig] Locale & Character Set Support for Korean

uDig에서 한글 문제 해결을 위한 팁

▣ 메뉴 영문/한글 변경
※ 영문 : Windows -> Preferences 메뉴를 실행 후 General -> Runtime preferences 탭으로 이동하여 Locale for user interface를 ko로 선택 후 탭 중간의 Restart with the above settings 버튼을 실행하여 재시작

※ 한글 : 창 -> 환경설정 실행 후 일반 -> Runtime preferences 탭으로 이동하여 Locale for user interface를 ko로 선택 후 탭 중간의 Restart with the above settings 버튼을 실행하여 재시작

※ 이 외에도 Runtime preferences 탭에서는 자바 힙 메모리를 설정하거나 기본 Workspace(환경설정, 프로젝트, 지도 레이어 정보 등이 저장되는 작업공간)를 변경할 수 도 있음.


▣ Shapefile 등 데이터 소스의 인코딩 문제

※ 영문 : Windows -> Preferences 메뉴를 실행 후 General -> uDig UI 탭에서 Default Character Set을 x-windows-949로 설정 후 재시작

※ 한글 : 창 -> 환경설정 실행 후 일반 -> uDig UI 탭에서 디폴트 케렉터 셋트를 x-windows-949로 설정 후 재시작

※ 만약 파일 데이터 소스의 경우 한글이 깨진 경우 카탈로그 뷰에서 모두 제거 후 케렉터셋 설정하고 다시 불러오면 됨

▣ Ubuntu 12.04 LTS 버전에서 shapefile을 불러온 모습


2012년 12월 18일 화요일

프로그램 언어(또는 스크립트)를 배워야 하는 이유

약 1년 전 백수(?) 시절 지인의 소개로 했던 아르바이트. 만약 이걸 수작업으로 한다면 얼마나 소요될까요?

▣ 도구 및 기간
 - 프로그램 도구: eclipse + open source libraries
 - 소요기간: 프로그래밍 하루, DB 생성시간 1시간.
 - 절차: 센터라인 추출 --> 센터라인의 중심점을 기준으로 양방향으로 일정간격으로 세그멘테이션 --> 속성정보 쿼리 및 갱신

▣ DB 구축 제약사항
 - 약 3,000개의 실폭 도로구간이 있으며, 다음의 규칙에 따라 작업할 것
   1. 도로의 종류에 따라 60 또는 100미터 간격으로 섹터를 구분
   2. 각 섹터별로 섹터 중심점 x, y좌표값 및 고유번호(키 + 일련번호)를 생성
   3. 도로 정보 및 행정구역 코드는 특정 레이어를 검색하여 가져올 것

원본 도로구간

섹터 구분 결과

속성정보

2012년 12월 14일 금요일

Polar Grids 만들기

▣ Polar Grids 만들기 - 프로그램
 - GXT Online: GXT Toolbox for uDig

▣ Polar Grid from Geometry

▣ Polar Grid from Geometry
다음 화면은 위 그림에서 3번째 polar grids를 생성하는 옵션이다.
 - Number of sides가 8 이므로 360/8 = 45도 간격으로 생성.
 - Radius 옵션은 100미터 간격으로 1km까지 즉 10개의 링을 구성.
 - Radius 옵션에 1000 과 같은 단일 값을 입력하면 위 그림에서 1번째 polar grids를 생성. - Radial Type이 BASE 이면 위 그림에서 2번째 polar grids를 생성.
 - Number of sides가 16이면 위 그림에서 4번째 polar grids를 생성.

▣ Polar Grid from FeatureCollection
다음 화면은 레이어(FeatureCollection)로부터 polar grids를 생성하는 옵션이다.

레이어(FeatureCollection)로부터 polar grids를 생성한 결과는 다음과 같다.


▣ 활용 사례
 - 생성 후 Point In Polygon(Spatial Join) 분석 등을 이용하여 포인트의 패턴 분석
도시재생사업에 따른 저소득층의 이주패턴 및 정착방안 연구
▣ 참고
 - GIS - Stack Exchange: Polar grids in ArcGIS
 - 임은선 외. 2009. 도시재생사업에 따른 저소득층의 이주패턴 및 정착방안 연구.  경기:  국토연구원

2012년 12월 12일 수요일

Clipping Contest 후기

약 한달전 FOSS4G 분야를 뜨겁게 달구었던 이슈가 하나 있었다.
바로 대용량 데이터 Clipping Contest!

다양한 상업 및 오픈소스 GIS 프로그램들이 참여(?)했으며, 수많은 댓글이 달렸다.
자세한 내용은 아래 참조 사이트들을 방문해 보면 된다.

ESRI의 경우 이에 이의(?)를 제기하고 10.1 버전에 반영하겠다고도 하니 집단 지성의 힘은 참으로 대단하다.

▣ 샘플 데이타 개요
 - Contours20Ft : 52,521개로 구성된 등고선 라인 데이터
 - StudyArea1MileBuffer : 938개의 버텍스로 구성된 단일 폴리곤 데이터

▣ 정리
 - GIS엔진에서 Clip 성능에 영향을 주는 요인들
 : Spatial Indexing
 : Geometry Engine & Robustness
 : Spatial Data I/O
 : Clip 전략 및 방법

 - 주요 Geometry(Topology) Engine들
  : Open Source Java 계열: JTS Topology Suite(GeoTools/uDig/gvSIG...)
  : Open Source C 계열: GEOS, 자체(GRASS 등)
  : 상용: ESRI(ArcGIS Topology Engine), 기타 자체 엔진

- JTS Topology Suite/GEOS는 이미 충분히 검증됨

 - Clip function에 대한 이해
 : 다음과 같이 1개 이상 피쳐로 구성된 원본데이터(위 샘플데이터에 의하면 등고선), 여러개의 폴리곤 피쳐로 구성된 클립 영역 데이터가 있다고 가정하자.
 : ArcGIS의 경우에는 아래 그림의 왼쪽과 같이 한 개의 라인이 생성
 : 몇몇 GIS 프로그램에서는 아래 그림의 오른쪽과 같이 한개 이상의 라인이 생성
 : 판단은 각자가 알아서 하시길.

▣ 그렇다면 망고시스템의 GXT Engine은?

 - GXT Engine 시 JTS/GeoTools 기반하에 운영되므로 위 jgrasstools & uDig 벤치마킹과 크게 다르지 않다.  또한, 위 [Clip function에 대한 이해]의 그림으로 본다면 ArcGIS 방식을 따른다. 데이터 로딩 시간  약 1분, Clipping 시간 2(1:50 +- 10)분 소요되며, 실제 Clip된 데이터의 사이즈는 약 346MB 이다.

GXT의 경우 Shapefile을 쓸 때, GeoTools(대용량의 데이터를 저장하는 경우 문제가 있음)를 확장하여 사용한다.

 * Hardware

 * Software
 - GXT 1.0.0


▣ Clipping Contest Reference
 - Round 2 in which ArcGIS throws in the towel.
 - ArcGIS vs QGIS etc Clipping Contest Rematch revisited
 - GIS clipping benchmark: jgrasstools & uDig (on JTS & geotools)

 - Benchmark contest data set: 878MB ZIP file (ContourClipTest.zip)