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)


2012년 11월 28일 수요일

Creating O-D flow maps with GeoServer


이전 포스팅[[Cartography]Flow Map Renderer]에서 ArcGIS for Desktop - ArcMap 기반의 O-D Flow Map 렌더러를 구현한 적이 있다.

GeoTools의 Filter Function을 확장하여 GeoServer에서 SLD Style로 설정하여 사용이 가능하다.

Filter Function의 경우 ArcGIS 렌더러와는 다르게 지도의 축척이나 크기를 알 수 없어, geometry필드, value 필드, 최소값, 최대값, 최대크기, 유형을 파라미터로 입력받아 처리할 수 있도록 하였다.

축척변경에 따른 크기조정이 불가능하나, WPS Process 및 Rendering Transformations 을 이용하면 가능할 듯하다.

다음은 GeoServer Web Administration 페이지에서 OpenLayers로 미리보기 한 샘플이다.

▣ Arrow

▣ Circle

▣ SLD 예 - Function = odflowmap
다음은 위에서 사용된 라인레이어의 SLD 파일 예이다.

<?xml version="1.0" encoding="utf-8"?>
<StyledLayerDescriptor version="1.0.0" ..../1.0.0/StyledLayerDescriptor.xsd">
  <NamedLayer>
    <Name>OD Flow Map</Name>
    <UserStyle>
      <Name>OD Flow Map</Name>
      <FeatureTypeStyle>
        <Rule>
          <ogc:Filter>
            <ogc:And>
              <ogc:PropertyIsGreaterThanOrEqualTo>
                <ogc:PropertyName>O_D</ogc:PropertyName>
                <ogc:Literal>1000</ogc:Literal>
              </ogc:PropertyIsGreaterThanOrEqualTo>
              <ogc:PropertyIsEqualTo>
                <ogc:PropertyName>ADM_CODE_O</ogc:PropertyName>
                <ogc:Literal>11680</ogc:Literal>
              </ogc:PropertyIsEqualTo>
            </ogc:And>
          </ogc:Filter>
          <PolygonSymbolizer>
            <Geometry>
              <ogc:Function name="odflowmap">
                <ogc:PropertyName>the_geom</ogc:PropertyName>
                <ogc:PropertyName>O_D</ogc:PropertyName>
                <ogc:Literal>1000</ogc:Literal>
                <ogc:Literal>8000</ogc:Literal>
                <ogc:Literal>2500</ogc:Literal>
                <ogc:Literal>Arrow</ogc:Literal>
              </ogc:Function>
            </Geometry>
            <Fill>
              <CssParameter name="fill">#FF0000</CssParameter>
              <CssParameter name="fill-opacity">0.9</CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke">#FFFFFF</CssParameter>
              <CssParameter name="stroke-width">0.1</CssParameter>
              <CssParameter name="fill-opacity">0.1</CssParameter>
            </Stroke>
          </PolygonSymbolizer>
          <LineSymbolizer>
            <Stroke>
              <CssParameter name="stroke">#FF0000</CssParameter>
              <CssParameter name="stroke-width">0.2</CssParameter>
              <CssParameter name="fill-opacity">0.9</CssParameter>
            </Stroke>
          </LineSymbolizer>
         <TextSymbolizer>
           <Label>
             <ogc:PropertyName>O_D</ogc:PropertyName>
           </Label>
           <LabelPlacement>
             <LinePlacement />
           </LabelPlacement>
           <Halo>
             <Radius>1.5</Radius>
             <Fill>
               <CssParameter name="fill">#FFFFFF</CssParameter>
             </Fill>
           </Halo>
           <Fill>
             <CssParameter name="fill">#0000FF</CssParameter>
           </Fill>
           <Font>
             <CssParameter name="font-family">Arial</CssParameter>
             <CssParameter name="font-size">10</CssParameter>
             <CssParameter name="font-style">normal</CssParameter>
             <CssParameter name="font-weight">bold</CssParameter>
           </Font>
           <VendorOption name="followLine">true</VendorOption>
           <VendorOption name="maxAngleDelta">90</VendorOption>
           <VendorOption name="maxDisplacement">400</VendorOption>
         </TextSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

▣ Download sample data sets & libraries
 - FlowMapforGeoServer.zip

2012년 11월 19일 월요일

[uDig] Altibase Catalog Plugin 확장

◎ uDig 에 GeoTools용 Altibase DataStore를 이용한 Catalog 플러그인
  ○ 테스트환경 : uDig 1.3.2 + GeoTools 8.x + Altibase 5.5.1.0.3
  ○ 사용법
레이어 메뉴의 [추가...]메뉴를 실행 후 Altibase 데이터베이스 선택
서버 접속을 위한 연결정보 입력 또는 기존연결 선택
지도에 추가할 레이어 선택 후 완료
지도에 레이어 추가, 카탈로그 등록, 테이블 속성 확인 등
◎ 향후 일정
  ○ 파일 기반의 GeoTools DataStore들의 uDig Catalog 플러그인 제작
  ○ 국토지리정보원 NGI Ascii Format DataStore
uDig에서 국토지리정보원 NGI 데이터셋 배치 변환

  ○ ESRI Personal Geodatabase(9.x, 10.x 지원) DataStore
uDig에서 ESRI Personal Geodatabase의 배치 변환

2012년 10월 18일 목요일

FOSS4G Korea 2012 망고시스템 발표자료

10월 12일 열렸던 FOSS4G Korea 2012 행사 발표자료입니다.

망고시스템 김기웅, 이한진, 유건우 님이 발표해 주셨습니다

1. Open Source를 이용한 상용 GeoProcessing Engine 구현


2. OGC 표준 서비스를 이용한 Web KOPSS 구현사례

2012년 9월 26일 수요일

FOSS4G Korea 2012 Program



안녕하세요?

다음과 같이 FOSS4G Korea 2012 Program을 안내해 드립니다. FOSS4G Korea는 OSGeo 한국어 지부가 주최하는 오픈 소스 GIS 관련 연례 최대 축제입니다. 관심 있는 많은 분들이 참가하셔서 FOSS4G Korea를 통해 다양한 기술적, 인적 교류를 하시기를 바랍니다. 

1. 일반 개요 
행사명 : FOSS4G(Free Open Source Software For GeoSpatial) Korea 2012
때(Date) : 2012년 10월 12일(금) 오전 10시 ~ 오후 6시
곳(Venue) : COEX 오디토리옴 3F-1 호


2. 상세 프로그램 안내
Technical Workshop Session(개발 실습 세션) : 오전 10시 ~ 오후 12시

내용 : Let's start contributing to Quantum GIS development
강사 : Dr. Paolo Cavallini
등록비 : 1만원(현장에서 등록하시며, 등록자에게는 OSGeo Live DVD와  QGIS Manual 책을 드립니다.)
준비물 : 노트북 , 기타 준비물은 추후 공지 예정 

Keynote Talks Session(주제 강연 세션) : 오후 1시 ~ 오후 2시

1. "Why do we like Quantum GIS?", Dr. Paolo Cavallini(QGIS PSC Member, Faunalia)
2. "공개SW 활성화 정책 방향", 김태열 박사(정보통신산업진흥원)
3. "OSGeo.JP activities in Hokkaido & How FOSS4G changes a mapping company's jobs", Mr. Kosuke Asahi, (Chief of Research & Development Section at Hokkaido-Chizu Co.,Ltd)

Oral Presentation Session - 1 (구두 발표 세션) : 오후 2시 20분 ~ 오후 4시 

1. "오픈 소스 소프트웨어를 이용한 지역의 사회환경적 요인과 자살 사망률에 대한 시공간 분석(Spatiotemporal analysis of the association between socio-environmental factors and suicide using open source software)", 황승식(인하대학교 의학전문대학원 사회의학교실)

배경:
우리나라의 자살 사망률은 OECD 회원국 가운데 1위이고 다른 회원국에서 자살 사망률이 감소하고 있는 반면, 우리나라는 빠르게 증가하고 있는 상황이다. 2011년 사망원인통계 결과  현재 자살 사망자수는 총 15,906명으로 인구 10만 명당 31.7명에 달하며 총 사망자수는 암, 뇌혈관질환, 심장질환에 이어 4위지만 10-30대에서는 1위를 차지할 정도로 심각한 보건학적 문제이지만, 자살과 지역 특성의 관련성을 살펴 본 연구는 거의 없다. 본 연구에서는 오픈소스소프트웨어를 이용하여 시군구별 자살 사망률을 지도화하고, 자살 사망률이 높은 지역의 군집을 확인하며, 지역의 사회환경적 요인과 자살 사망률의 관련성을 시공간 분석 기법을 이용해 확인해보고자 하였다.

방법:
1998년부터 2008년까지 11년간 통계청 사망원인 통계 데이터를 해당 기간 행정구역 변동을 반영하여 234개 시군구별 10세 단위 연령군의 자살 사망자수를 산출하고, 2005년 인구주택총조사 자료를 분모로 하여 시군구별 연령 표준화 사망비를 산출하였다. 표준화 사망비를 QGIS 프로그램을 이용하여 지도화하였고, SaTScan 프로그램을 이용하여 시공간 군집 분석을 수행하였다. 지역의 사회환경적 요인은 통계청 인구주택총조사(2005)와 질병관리본부 지역사회건강조사(2008)에서 수집된 변수 중 자살 관련 변수를 선별하였다. 지역별 사회환경적 요인과 표준화 사망비의 관련성을 살펴보기 위해 베이지언 조건부 자기회귀 모형(Bayesian conditional auto-regressive model) 실행이 가능한 WinBUGS 프로그램을 이용하여 시공간 포아송 회귀분석을 수행하고 비교 위험도를 산출하였다. 분석은 QGIS의 maps2winbugs 플러그인을 설치하여 WinBUGS 명령문을 만든 다음 R의 R2WinBUGS 패키지를 이용해 명령문을 불러와 R에서 수행하였다.

결과:
연령 표준화 사망비를 지도화한  결과 광역시보다 군부 사망률이 높고, 강원도 지역이 두드러지게 높았다. 시공간 군집 분석 결과 2003년부터 2005년 기간 전국적으로 14% 높았고, 1998년부터 2008년 조사 기간 내내 강원 지역(41%)과 인천 및 김포시 인근 지역(23%)이 통계적으로 뚜렷하게 높은 지역적 군집을 이루고 있었다. 이외에도 경북 북부, 경남 서부, 대전 및 충남 서부, 전북 서부 등이 특정 기간 동안 지역적 군집이 확인되었다. 지역의 사회환경적 요인과 시공간 회귀분석 결과 단변수 분석에서 물질적 박탈지수, 기초생활보장가구비율, 초졸이하가구주비율, 정신적 활동제약 인구비율, 65세 이상 인구비율이 유의하였다. 이를 조합한 다변수 분석 결과 초졸이하가구주 비율이 유의하였는데, 가장 낮은 4분위수 지역에 비해 가장 높은 4분위수 지역의 자살 사망률이 1.32배(1.08-1.61) 높았다.

결론:
자살 사망에 대한 시공간 군집 분석 결과 특정 기간 특정 지역이 뚜렷하게 높은 지역이 통계적으로 확인되었고, 시공간 회귀 분석 결과 초졸이하가구주 비율이 높은 지역이 상대적으로 자살 사망률이 높은 것으로 추정되었다. 이와 같은 결과를 통해 향후 자살 사망에 대한 근거 기반 감시체계를 구축하고, 자살예방종합대책과 같은 정책 수립의 역학적 근거와 평가에 활용 가능할 것이다.

키워드: 자살, 오픈 소스 소프트웨어, 군집 분석, 시공간 회귀분석, QGIS, SaTScan, R, WinBUGS


2. "Java 기반 Open Source를 이용한 Geoprocessing Engine 구현사례", 김기웅/이민파(망고시스템)

GeoTools는 GeoAPI, JTS 등 OGC 표준에 기반한 API를 구현한 라이브러리로 GeoServer, uDig,
52North WPS 등 Java 기반 Open Source GIS에서 많이 활용되고 있습니다. 이 세션은 GeoTools를 이용하여
상용 GeoProcessing 엔진을 구현한 사례이며, Spatial DBMS의 Data Store 확장에서부터 GeoServer에서
운영가능한 KOPSS Open API(Web Processing Service, WPS) 엔진을 포함하는 활용 아키텍처를 제시합니다.

3. "Node.js로 구현한 Open Source 맵서비스", 도경태(삼성SDS)

1) Node.js 소개
2) 사용된 오픈 소스 프레임워크 소개
3) 구현 소개
4) 테스트 결과 발표
5) 마무리, 질문


4. "OpenGeo Suite 의 한국사용자를 위한 설정 및 활용", 민경일(가이아쓰리디)

- OpenLayers의 경우 5181 등 국내 좌표를 사용하게 하는 방법과  Openlayer를 이용하여 이용해 다음, 네이버
지도를 이용하는 방법
- GeoServer의 경우 한글 폰트를 이용하는 방법과 Squid를 이용해 경우도 및 구글 좌표계가 아닌 다른 좌표계도 캐시되게
하는 방법
- PostGIS의 경우 한국에서 사용하는 좌표계를 등록하고 변환하는 방법
- QGIS의 한국 좌표계 등록 방법 및 한국 좌표계를 이용하여 변환시 주의점


Oral Presentation Session - 2 (구두 발표 세션) : 오후 4시 20분 ~ 오후 6시 


1. "OGC 표준 서비스를 이용한 Web KOPSS 구현사례", 이한진/유건우(망고시스템)

2006년부터 국토해양부 및 국토연구원에서 국토공간계획지원체계(KOrea Planning Support System, KOPSS)
사업을 수행하고 있으며, Web 기반의 KOPSS Open API 설계사업을 진행해 왔습니다. 이 세션은 KOPSS Open API 구현
서버를 활용하여 WMS, WFS, WCS, WPS를 포함하는 OGC 표준 서비스를 활용한 Web KOPSS 클라이언트 개발 사례를
시연과 함께 살펴봅니다.


2. "오픈소스 NoSQL(MongoDB)을 이용한 Twitter Stream의 저장과 실시간 공간 지식 발견"남광우(군산대학교)

Twitter의 Streaming API를 통해 입력되는 막대한 양의 데이터를 Sliding Window 기법을 이용하여 실시간으로 공간분석하는 방법을 보인다.  Twitter Stream 데이터의 저장과 처리를 위해서 대표적인 NoSQL 오픈소스 시스템인 MongoDB 가 사용되었다. 오픈소스 지식 탐사 알고리즘들이 사용 및 확장되었다. 이 발표에서는 다음의 내용을 포함한다.
1) Twitter Streaming API와 공간정보
2) MongoDB를 이용한 Twitter Stream의 저장과 처리
3) 실시간 공간지식 탐사를 위한 Sliding Window 기반 캐슁
4) 실시간 Twitter 공간지식 탐사의 예


3. "오픈소스 GIS를 활용한 실시간 기상자료 서비스", 송광섭(가이아쓰리디)

본 서비스는 OpenLayers와 GeoServer 를 기반으로 기상청의 기상자료를 조회할 수 있도록 구축된 웹 서비스 시스템이다. 서비스 데이터로는 AWS 관측 데이터(강수, 풍속, 기온, 습도, 해면기압 등), 천리안 위성자료, 레이더 분석 영상 등의 기상수집자료와 동네예보 데이터 등이 있으며, 인터넷 상에서
조회가능 하도록 구축되었고, 서로 다른 기상자료를 중첩하여 화면상에서 표시하여 날씨 관련 정보를 종합적으로 파악할 수 있도록 하였다.

주요특징 :  실시간 기상수집데이터와 지리정보 서비스와 연계, 다양한 기상 데이터의 중첩, 기상자료의 동영상 플레이 기능, 서비스 시스템의 표준 준수(웹표준, OGC  표준)


4. "OSGeo 한국어 지부의 지난 활동과 앞으로의 계획", 신상희(OSGeo 한국어 지부)

OSGeo 한국어 지부의 2012년 활동과 성과를 돌아보고, OSGeo의 거버넌스 체계 등에 논의한다. 


뒷풀이 : 오후 7시 ~ 무제한
장소 : 삼성역 근처
저작자 표시 비영리 동일 조건 변경 허락

2012년 9월 19일 수요일

[uDig] GeoProcessing Plugin Ⅰ

이미 만들어진 GeoTools 기반 GeoProcessing 기능(KOPSS Open API 외 약 100여 가지 추가 분석 기능)을 GeoServer WPS 서비스가 아닌 Desktop 환경에서 함께 사용할 수 있는 방법을 찾다가  uDig 플러그인 기능으로 구현해 보았다.

uDig 은 Java 로 만들어진 Eclipse Rich Client (RCP) 기반의 데스크탑 GIS 프로그램이다. 이미 세종대학교 지구정보공학과에서 몇년 전에 한글화를 진행했었고, uDig은 Spatial Toolbox View  라고 알려진 분석기능이 탑재된 플러그인이 있다.

□ 테스트 환경
 - uDig 1.3.1 및 uDig 1.3.2
 - 분석 프로세스 : 지도의 레이어와 상호작용 가능한 프로세스 및 GeoTools 프로세스들

□ 플러그인
 - Spatial Toolbox와 같은 분석 트리 구조로 구성
 - 프로세스의 Input/Output 파라미터 메타 정보를 이용하여 UI 자동 구성
한글화 버전

영문버전

□ 파라미터 UI 설정
 - Feautre 및 Raster Layer는 콤보박스로 선택
 - Bounding box는 아래 그림처럼 xmin, ymin, xmax, ymax 및 crs를 선택하거나 현재 지도의 범위를 가져올 수 있도록 함
 - Enum 타입을 파라미터로 사용하는 경우 enum constant를 콤보박스에서 선택
 - 좌표체계의 경우 uDig의 좌표체계 선택 윈도우를 활용
 - Boolean 타입을 파라미터로 사용하는 경우 체크박스 사용
 - 분석결과가 Feature 또는 Raster일 경우 자동으로 지도에 추가
 - Mandatory 파라미터 확인




□ 여러가지 분석기능들




□ 래스터 분석기능들

□ 개선사항
 - 현재 파라미터 메타정보로 표현이 불가능한 규칙이 있어 확장.
 - 분석결과가 레이어가 아닌 경우 현재처럼 텍스트박스에 표시하는 것보다 더 확장하여 HTML 로 표현

 - uDig에서 사용가능한 Data Source 확장 : Altibase, Tibero, Kairos 등

□ Reference
 - http://udig.refractions.net/
 - http://wiki.eclipse.org/index.php/Rich_Client_Platform
 - http://udig.refractions.net/confluence/display/EN/Introduction+to+the+Spatial+Toolbox

2012년 8월 29일 수요일

FOSS4G Korea 2012 발표 요청 - FOSS4G Korea 2012 Call For Presentations





안녕하세요?

여러분도 아시는 바와 같이 FOSS4G Korea 2012 행사가 10월 12일(금)에 COEX 오라토리움 3층 부속실 1호(72명 규모)에서 개최됩니다. 이에 이 행사에서 발표를 하실 분들을 모집합니다. 

FOSS4G Korea는 OSGeo 한국어 지부가 매년 개최하는 Open Source GIS 관련 최대 행사이자 축제입니다. 참가자들은 FOSS4G Korea 행사를 통해 Open Source GIS와 관련된 지식, 경험, 노하우 등을 공유할 수 있으며, 개인이나 회사의 역량을 대중적으로 뽐낼 수 있는 기회로 삼으실 수도 있습니다. 작년 FOSS4G 2011 행사가 어떻게 진행되었는지는 http://www.osgeo.kr/tag/FOSS4G%20Korea 을 통해 살펴 보실 수 있습니다. 

마감일 : 9월 16일(일)
주제 : Open Source GIS와 관련된 모든 것(기술, 비즈니스 모델, 아이디어, 프로젝트 등등)
제출 방식 : 제목, 저자, 그리고 발표 내용 요약(100 단어 정도)을 OSGeo 메일링 리스트나 endofcap@gmail.com 으로 보내 주시기 바랍니다. 
발표자 선정 : 지원한 발표 개수가 10개를 초과할 경우 본 메일링 리스트의 투표를 통해 선정하도록 하겠습니다. 

개인적인 바램으로는 많은 기업, 개인들이 오픈 소스 GIS와 관련된 자신들의 역량과 실력을 자랑하는 자리가 되었으면 합니다. 학술적인 내용들은 사실 학회를 통해 많이 발표되는 관계로 우리 회원들에게 실질적으로 도움이 되는 것들을 공유하는 자리가 되었으면 합니다. 

그리고 현재 계획하고 있는 FOSS4G Korea 2012의 행사 프로그램은 다음과 같습니다. 

1. Technical Workshop Session(유료 세션, 1인당 10만원 정도의 등록비를 계획 중. 이 비용은 강사인 Paolo 박사의 호텔비 등 초청과 관련된 비용으로 사용할 예정입니다. 세금계산서 발행 가능)
- 시간 : 10:00 ~ 12:00(10월 12일)
- 내용 : QGIS Programming Technical Workshop 
- 강사 : Dr.  Paolo Cavallini (Paolo 박사님은 QGIS PSC(Programming Steering Committee)의 멤버로서 QGIS 개발과 관련된 활발한 활동을 하고 계십니다. QGIS Plugin Repository로 유명한 Faunalia를 유지하고 계신 분입니다. 이번에 한국을 방문하셔서 QGIS 개발과 관련된 워크샵을 해 주실 예정입니다.)

2. Keynote Talk Session(주제 강연 세션, 무료)
- 시간 : 13:00 ~ 14:00(10월 12일)
- 연사 : Dr.  Paolo Cavallini, OSGeo 일본 지부 대표단 1인, 한국 측 연사 1인

3. Oral Presentation Session(구두 발표 세션, 무료)
- 시간 : 14:20 ~ 17:30(10월 12일)

4. Soju Party(OSGeo 한국어 지부 뒷풀이)
- 시간 : 19:00 ~ 
- 장소 : COEX 인근 


많은 분들 자신감을 가지고 자랑들 많이 해 주세요!!!! 

자, 이제 제출을 해 주세요!

신상희 

2012년 8월 25일 토요일

PostGIS - National Education Center for GIS

2012년 8월 20일부터 24일까지 이화여대에서 개최된 '공간정보 거점대학 Open Source GIS 과정' 중 PostGIS 강의 교재입니다.

샘플데이터셋 및 QGIS, GeoServer, OpenLayers 강의자료는 http://www.osgeo.kr/78 에서 받으실 수 있습니다.


2012년 8월 17일 금요일

Raster Transformation - Rotate

Raster transformation - rotate
Rotate 45˚
* Rotate(Raster raster, Point anchorPoint, double angle, Inerpolation resample)
 - Rotation is, by default, around the lower left corner of the raster.
 - The rotation point can be changed with the optional Anchor Point parameter.
 - Resampling is only done if the angle is not a multiple of 90.
 - The rotation angle specified must be between 0 and 360
 - The dataset will be rotated clockwise.
Rotate 45˚(Orange) vs 315˚(Magenta)
* process
 - rotate image
 - recalculate extent

* Reference : http://resources.arcgis.com/en/help/main/10.1/#/Rotate/00170000007s000000/

2012년 6월 13일 수요일

[ArcGIS] ArcGIS 버전별 필요한 .NET Framework

- ArcGIS의 .NET Support를 사용하기 위해 버전별 필요한 .NET Framework 버전입니다.

- ArcGIS를 신규로 설치하거나 [추가/제거]를 실행할 때 해당 PC에 버전에 맞는 .NET Framework이 설치되어 있지 않으면 설치 목록에 [.NET Support] 항목이 누락됩니다.

• ArcGIS 9.1 - .NET Framework 1.1
• ArcGIS 9.2 - .NET Framework 2.0 or 3.0
• ArcGIS 9.3 - .NET Framework 2.0 or 3.0
• ArcGIS 10.0 - .NET Framework 3.5 SP1

- [.NET Support] 가 설치된 경우에는 ArcGIS 설치 폴더에 DotNet 폴더가 생성됩니다.

2012년 4월 24일 화요일

[ArcObjects]Spatial Grid Index 계산하기..

- ArcCatalog에서 SDE로 FeatureClass(특히 Shapefile)를 업로드 할 때 Spatial Index가 모두 빠져 있는 경우가 있다.

- GDB나 FGDB 라면 그냥 Copy & Paste로 데이터를 복사할 경우엔 Spatial Index가 모두 딸려와 정상적으로 생성이 되지만.. ArcCatalog의 Import나 Export 기능을 사용할 때 (Shapefile의 경우에는 Copy & Paste가 되지 않음) 난감한 경우가 있다.

- ArcCatalog에서 FeatrueClass 속성 창을 보면 Spatial Index를 자동 계산해주는 버튼이 있지만 하나씩 해야 한다. 100개 이상의 레이어를 올리고 하나씩 눌러가며 계산했던 적이 있다. 헐~

- ArcToolBox > Feature Class > Calculate Default Spatial Grid Index 툴을 사용하면 계산이 가능하다. Batch로 해서 하면 되지만 해본 결과 계산은 잘되지만 적용이 잘 되지 않는 듯 하다. 속성창에는 계산된 값이 보여지는데 Preview를 하면 여전히 로드되지 않는다.

- 아래 코드는 ArcObjects를 사용하여 FeatureClass의 Default Spatial Index를 계산해 주는 코드이다.

- 참조된 라이브러리는

> ESRI.ArcGIS.Geoprocessor

> ESRI.ArcGIS.Geoprocessing

- Geoprocessor 인터페이스의  Excute 메서드를 사용하여 직접 ArcToolBox를 사용한다.

- CalculateDefaultGridIndex > RemoveSpatialIndex > AddSpatialIndex   순서로 생성한다.

 

   1: private bool CalculateDefaultSpatialIndex(IFeatureClass pDestFc)
   2: {
   3:     if (pDestFc == null) return false;
   4:  
   5:     try
   6:     {
   7:         bool bSucc = false;
   8:  
   9:         //추가할 FeatureClass Parameter 생성
  10:         IVariantArray pArray = new VarArrayClass();
  11:         pArray.Add(pDestFc);
  12:  
  13:         //Geoprocessor선언
  14:         Geoprocessor pGP = new ESRI.ArcGIS.Geoprocessor.Geoprocessor();
  15:  
  16:         //Defualt Spatial Index 계산
  17:         //CalculateDefaultGridIndex_management (in_features)
  18:         IGeoProcessorResult pResult = (IGeoProcessorResult)pGP.Execute
  19:                             ("CalculateDefaultGridIndex", pArray, null);
  20:  
  21:         if (pResult.Status == esriJobStatus.esriJobSucceeded)   //계산성공
  22:         {
  23:             //결과 String은.. "Grid1;Grid2;Grid3" 형태로 반환한다.
  24:             string sGridIdxValue = pResult.ReturnValue.ToString();
  25:  
  26:             string[] arrGridValue = sGridIdxValue.Split(';');
  27:  
  28:             string sGrid1 = arrGridValue[0].Trim();
  29:             string sGrid2 = arrGridValue[1].Trim();
  30:             string sGrid3 = arrGridValue[2].Trim();
  31:  
  32:             //기존 SpatialIndex 삭제
  33:             //RemoveSpatialIndex_management (in_features)
  34:             pResult = (IGeoProcessorResult)pGP.Execute
  35:                       ("RemoveSpatialIndex", pArray, null);
  36:  
  37:             if (pResult.Status == esriJobStatus.esriJobSucceeded)
  38:             {
  39:                 //새롭게 계산된 Spatial Index 추가
  40:                 //AddSpatialIndex_management (in_features, g1, g2, g3) 
  41:                 pArray.Add(sGrid1);
  42:                 pArray.Add(sGrid2);
  43:                 pArray.Add(sGrid3);
  44:  
  45:                 pResult = (IGeoProcessorResult)pGP.Execute
  46:                           ("AddSpatialIndex", pArray, null);
  47:  
  48:                 if (pResult.Status == esriJobStatus.esriJobSucceeded)
  49:                 {
  50:                     bSucc = true;
  51:                 }
  52:             }
  53:         }
  54:  
  55:         System.Runtime.InteropServices.Marshal.ReleaseComObject(pResult);
  56:         System.Runtime.InteropServices.Marshal.ReleaseComObject(pArray);
  57:  
  58:         pResult = null;
  59:         pGP = null;
  60:         pArray = null;
  61:  
  62:         return bSucc;
  63:     }
  64:     catch (Exception Ex)
  65:     {
  66:         return false;
  67:     }
  68: }