2013년 9월 26일 목요일

MapBox Maps in uDig GIS

uDig의 Web Map Tiles 데이터 소스는 미리 정의된 OpenStreetMap, NASA World 타일 지도 외에 사용자 정의 서버를 설정할 수 있습니다. 다음 예는 uDig에서 MapBox 지도를 추가하는 과정입니다.

▣ uDig Version
 - http://udig.refractions.net/
 - 테스트 버전: 1.4.0

▣ MapBox
 - http://www.mapbox.com/

▣ uDig에서 MapBox 지도 보기
 - [Layer] --> [Add...] 메뉴 실행
 - [Add Data] 창의 Data Sources 에서 Web Map Tiles(OpenStreetMap, MapQuest Maps, ...) 선택 후 [Next] 버튼 클릭

 - OpenStreetMap 트리에서 Custom Server 선택
 - 오른쪽 URL에 다음을 입력
  1. Streets   Map : http://a.tiles.mapbox.com/v3/tmcw.map-7s15q36b/{z}/{x}/{y}.png
  2. Satellite Map : http://a.tiles.mapbox.com/v3/tmcw.map-j5fsp01s/{z}/{x}/{y}.png
 - 위에서 a는 b, c, d 로 대체 가능,  v3/tmcw.map-7s15q36b 항목은 지도 버전


 - [Next] 버튼 눌러 지도에 레이어를 추가

▣ MapBox Streets Map 예

▣ MapBox Satellite Map 예

2013년 9월 15일 일요일

FOSS4G Korea 2013 Call For Presentations

안녕하세요?

FOSS4G Korea 2013 행사가 11월 14일(목) ~ 11월 15일(금) 2일동안 개최됩니다.
이에 11월 15일(안) 본 행사(COEX 318호) 구두 발표 세션에서 발표를 하실 분들을 모집합니다.

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

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


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

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

○ 행사명: FOSS4G(Free & Open Source SW for GeoSpatial) Korea 2013
○ 주최: OSGeo 한국어 지부(OSGeo Korean Chapter), 한국오픈소스 GIS포럼
○ 개최 일자 및 시간: 2013년 11월 14일(목) ~ 15일(금), 이틀 간 매일 10:30 ~ 17:30
○ 주요 참가자 및 인원: OSGeo 의장단을 포함해 약 100여명 가량 참가 예산
○ 프로그램
 ※ 2013년 11월 14일(안) Workshop 행사 - 강남역 토즈
   1. 강연 세션
    - 주제: 오픈 소스 라이선스 관련 특강
    - 강사: 섭외중
    - 시간: 10:30 ~ 12:00
   2. 기술 워크숍 세션
    - 주제: Advanced MapServer
    - 강사: Jeff McKenna, OSGeo 의장
    - 시간: 13:30 ~ 17:30

 ※ 2013년 11월 15일(안) 본 행사 - COEX 318호
   1. 특강 세션
    - 강사: 1. Jeff McKenna, 2. Raghaven Venkatesh, 3. OpenStreetMap Community
    - 시간: 10:30 ~ 12:00
   2. 구두 발표 세션
    - 주제: Open Source GIS를 이용한 시스템 구축 사례 및 학술 발표 등
    - 시간: 13:30 ~ 17:30
   3. Soju Party(OSGeo 한국어 지부 뒷풀이)
    - 시간 : 19:00 ~
    - 장소 : COEX 인근

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

이민파, mapplus @ gmail.com

2013년 9월 2일 월요일

[Geoserver] Shadow & Extrusion Effect

GeoServer에서 레이어의 스타일(SLD) 작성시 Filter function 중 Geometric function을 사용하면 다양한 효과를 낼 수 있다.

Geometric function을 사용하면 원본 레이어의 geometry 타입을 변경하지 않고 렌더링 타임에 폴리곤의 중심점(centroid), 버퍼(buffer), 시작점(startPoint), 끝점(endPoint), 정점(vertices) 등을 적용할 수 있으며, 이를 "SLD geometry transformations"이라 부른다.

SLD에 Geometric function을 사용하는 경우 성능 문제를 야기할 수 있으므로, 사용 목적에 따라 사용 여부를 신중히 결정해야 한다.

다음은 건물 등의 폴리곤에 Shadow(그림자) 및 Extrusion(2.5D) 효과를 줄 수 있는 방법을 알아본다.

▣ Default
 - GeoServer 기본 폴리곤 스타일 사용
<PolygonSymbolizer>
  <Fill>
    <CssParameter name="fill">#AAAAAA</CssParameter>
  </Fill>
  <Stroke>
    <CssParameter name="stroke">#000000</CssParameter>
    <CssParameter name="stroke-width">0.5</CssParameter>
  </Stroke>
</PolygonSymbolizer>


▣ Shadow
 - offset function 사용

<PolygonSymbolizer>
  <Geometry>
    <ogc:Function name="offset">
      <ogc:PropertyName>the_geom</ogc:PropertyName>
      <ogc:Literal>0</ogc:Literal>
      <ogc:Literal>-2</ogc:Literal>
    </ogc:Function>
  </Geometry>
  <Fill>
    <CssParameter name="fill">#555555</CssParameter>
  </Fill>
</PolygonSymbolizer>


▣ Extrusion
 - isometric & offset function을 조합하여 사용
 - isometric 함수 인자로 숫자(<ogc:Literal>3</ogc:Literal> ,3) 외에 필드값(필드명 입력) 또는 필드값의 연산 사용 가능

<PolygonSymbolizer>
  <Geometry>
    <ogc:Function name="isometric">
      <ogc:PropertyName>the_geom</ogc:PropertyName>
      <ogc:Literal>3</ogc:Literal>
    </ogc:Function>
  </Geometry>
  <Fill>
    <CssParameter name="fill">#dddddd</CssParameter>
  </Fill>
  <Stroke>
    <CssParameter name="stroke">#999999</CssParameter>
    <CssParameter name="stroke-width">0.1</CssParameter>
  </Stroke>
</PolygonSymbolizer>
<PolygonSymbolizer>
  <Geometry>
    <ogc:Function name="offset">
      <ogc:PropertyName>the_geom</ogc:PropertyName>
      <ogc:Literal>0</ogc:Literal>
      <ogc:Literal>3</ogc:Literal>
    </ogc:Function>
  </Geometry>
  <Fill>
    <CssParameter name="fill">#FFDCC7</CssParameter>
  </Fill>
  <Stroke>
    <CssParameter name="stroke">#999999</CssParameter>
    <CssParameter name="stroke-width">0.3</CssParameter>
  </Stroke>
</PolygonSymbolizer>


▣ 스타일 다운로드
 - building_shadow.sld
 - building_extrusion.sld

▣ 참고
 - http://docs.geoserver.org/stable/en/user/styling/sld-extensions/geometry-transformations.html
 - http://docs.geoserver.org/stable/en/user/filter/function_reference.html

2013년 9월 1일 일요일

QGIS에서 한글이 포함된 DXF 파일 불러오기

QGIS에서 DXF 파일을 불러올 때 한글이 포함된 텍스트(TEXT) 또는 레이어(LAYER)를 변환하면서 한글 속성이 깨지는 경우 해결하는 방법이며, 한글 윈도우를 기준으로 함



ESRI Shapefile의 경우 [Layer] --> [Add Vector Layer...] 메뉴 실행 후 다음 그림과 같이 EUC-KR을 선택하면 정상적으로 한글이 처리되지만, DXF 파일의 경우 현재 버전에서는 이 설정이 적용되지 않는다.
QGIS에서 DXF를 불러올 때 GDAL/OGR 라이브러리를 사용하므로 QGIS 시작할 때 환경설정을 추가하면 오류를 해결할 수 있다.

1. DXF 파일의 인코딩 확인
일반적으로 DXF 파일은 한글윈도우를 사용하여 CAD에서 저장하는 경우 파일의 헤더에 아래와 같이 $DWGCODEPAGE 속성이 ANSI_949로 저장되는 듯 하다(확인 필요)

$DWGCODEPAGE
  3
ANSI_949
  9

GDAL/OGR 드라이버에서 DXF 파일은 ANSI_1252 / Win1252 인코딩을 기본값으로 사용하며 ,파일 헤더의 $DWGCODEPAGE 속성 또는 GDAL/OGR 드라이버의 DXF_ENCODING 환경설정을 이용하여 인코딩을 설정할 수 있다.

현재 버전의 QGIS에서는DXF 파일의 $DWGCODEPAGE 속성 변경만으로는 정상적으로 한글을 불러올 수 없으며, DXF_ENCODING 전역환경 설정을 통해서 문제를 해결할 수 있다.

우선 불러오고자 하는 DXF 파일의 인코딩을 확인해야 한다.
 - Notepad++(http://notepad-plus-plus.org/)를 설치하고 DXF 파일을 불러온다
 - 우 하단의 인코딩 타입을 확인하면 다음과 같이 
   - ANSI 인 경우 : EUC-KR 또는 CP949
   - ANSI as UTF-8인 경우 : UTF-8

2. 환경설정
QGIS 바로가기 아이콘의 등록정보를 확인 후 다음과 같이 qgis-dev.bat 파일을 Notepad++에서 불러온다. 이하 [QGIS Weekly]는 설치된 QGIS 버전에 따라 다를 수 있으며, 아래는 2013년 8월 말 기준 QGIS Weekly version(http://qgis.org/downloads/weekly/)을 설치한 경우

예) C:\Program Files\QGIS Weekly\bin\qgis-dev.bat
정식버전의 경우 qgis.bat 파일이 될 것이다.

set GDAL_FILENAME_IS_UTF8=YES 다음 라인에 DXF_ENCODING 정보를 추가한다.

DXF 인코딩이 UTF-8인 경우 : set DXF_ENCODING=UTF-8
DXF 인코딩이 ANSI 인 경우 : set DXF_ENCODING=EUC-KR
3. 불러오기
이제 QGIS를 새로 실행한 후 [Layer] --> [Add Vector Layer...] 메뉴를 실행 후 파일 유형을 All files (*) (*.*) 또는 AutoCAD DXF [OGR] (*.dxf *.DXF) 를 선택하고 DXF 파일을 불러온다.


DXF의 원본 좌표체계를 선택 후 불러올 타입(Point[TEXT], LineString, Polygon)을 선택한다.

다음과 같이 Point를 Text 필드로 라벨을 설정하면 한글이 표시된다.

다음 화면은 환경 설정 후 정상적으로 한글이 표시된 지도이다.


이제 불러온 DXF 파일 레이어를 선택 후 오른쪽 마우스를 눌러 [Save As...] 메뉴를 실행 후 Shapefile로 저장하면 된다.

4. QGIS에 내장된 ogr2ogr 사용하는 경우
여러개의 DXF 파일을 Shapefile로 변환하는 경우에는 Command 창에서 ogr2ogr 명령어를 사용하면 된다.

ogr2ogr -f "ESRI Shapefile" h_point.shp      -overwrite 33607068.dxf -where "OGR_GEOMETRY='POINT'"
ogr2ogr -f "ESRI Shapefile" h_linestring.shp -overwrite 33607068.dxf -where "OGR_GEOMETRY='LINESTRING'"
ogr2ogr -f "ESRI Shapefile" h_polygon.shp    -overwrite 33607068.dxf -where "OGR_GEOMETRY='POLYGON'"

만약 변환하는 중에 다음과 같은 경고가 발생하는 경우가 있다.

C:\Program Files\QGIS Weekly\bin>ogr2ogr -where "OGR_GEOMETRY='POINT'" -f "ESRI Shapefile" h_point.shp 33607068.dxf
Warning 6: Normalized/laundered field name: 'ExtendedEntity' to 'ExtendedEn'
Warning 6: Normalized/laundered field name: 'EntityHandle' to 'EntityHand'
Warning 1: One or several characters couldn't be converted correctly from UTF-8 to ISO-8859-1.
This warning will not be emitted anymore

위와 같은 경고가 발생하는 경우 DXF파일을 열어서 $DWGCODEPAGE 속성을 삭제한 후 재시도하면 해결된다.

$DWGCODEPAGE
  3
ANSI_949
  9

5. 참고
 - http://trac.osgeo.org/gdal/wiki/ConfigOptions
 - http://www.gdal.org/ogr/drv_dxf.html