공간정보거점대학 PostGIS 고급과정
Upcoming SlideShare
Loading in...5
×
 

공간정보거점대학 PostGIS 고급과정

on

  • 3,449 views

1월21일 공간정보거점대학 오픈소스GIS 프로그래밍과정 PostGIS

1월21일 공간정보거점대학 오픈소스GIS 프로그래밍과정 PostGIS

Statistics

Views

Total Views
3,449
Views on SlideShare
1,082
Embed Views
2,367

Actions

Likes
2
Downloads
76
Comments
0

7 Embeds 2,367

http://www.osgeo.kr 2024
http://osgeo.kr 179
http://lenablue12.blogspot.kr 109
http://osgeo-kr.tistory.com 45
http://www.hanrss.com 6
http://feedly.com 3
http://lenablue12.blogspot.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

공간정보거점대학 PostGIS 고급과정 공간정보거점대학 PostGIS 고급과정 Presentation Transcript

  • 한국어 지부 PostGIS 고급 2014년 1월 20일 국토교통부 공간정보 거점대학 오픈 소스 GIS 심화 과정 ㈜엔지스 윤정환(lenablue12@en-gis.com)
  • 목차 I. PostGIS 설치 및 환경설정 I-1. PostGIS 개요 I-2. PostGIS 설치하기 I-3. PostGIS 환경설정 I-4. pgAdmin & Query Tool 사용하기 IV. 어플리케이션을 이용한 PostGIS 사용하기 IV-1. 프로그램 설치하기 IV-2. QGIS 이용한 PostGIS 사용하기 IV-3. OpenJump 이용한 PostGIS 사용하기 IV-4. uDig 이용한 PostGIS 사용하기 IV-5. JDBC Driver 이용한 PostGIS 이용하기 II. 공간데이터베이스 관리 II-1. 공간 데이터베이스 생성 II-2. 공간 데이터 생성 & 로딩 & 추출 II-3. 래스터 데이터 생성 & 로딩 III. 공간함수 사용하기 III-1. Geometry III-2. Spatial Relationships / Joins / Indexing / Projection III-3. Geography III-4. Geometry Constructing Functions III-5. More Spatial Joins 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 IV-6. .NET Driver 이용한 PostGIS 이용하기 V. PostGIS 그밖의 기능 V-1. Tuning PostgreSQL for Spatial V-2. Query Plans V-3. 백업 & 복원 V-4. pgRouting 소개 V-5. Reference 윤정환 (lenablue12@en-gis.com)
  • I. PostGIS 설치 및 환경설정 - 일러두기 • 본 자료는 모두 Creative Commons License CC-BY-NC을 따릅니다. • 본 교재에서는 교육의 편의상 Windows 32비트 기반의 프로그램들을 위주로 설명합니다. • 본 교재에서 사용하는 샘플 데이터 셋은 실제 정보와 다르므로 교육용 이외에는 사용할 수 없습니다.
  • I-1. PostGIS 개요  PostGIS란 ?  PostgreSQL 기반 spatial types, indexes, functions의 3가지 기능을 추가한 공간 데이터베이스  Spatial databases store/manipulate spatial objects – data types, indexes, and functions  Spatial data types – shapes - point, line, polygon  Spatial indexing – efficient processing of spatial operations  Spatial functions, – querying of spatial properties and relationships. http://www.postgis.net/ 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 1 윤정환 (lenablue12@en-gis.com)
  • I-2. PostGIS 설치하기  PostgreSQL 단독설치 (Application Stack Builder) ① http://www.postgresql.org/download/에 접속하여 PostgreSQL 최신버전(PostgreSQL 9.3.2)을 내려 받음 ② http://download.osgeo.org/postgis/windows/에 접속하여 PostGIS 최신버전(PostGIS 2.1.1)을 내려받음 ③ [설치프로그램postgis] 경로로 이동하여 PostgreSQL, PostGIS 최신버전을 설치 – DBMS 설치 : postgresql-9.3.2-1-windows – Spatial Extension 설치 : postgis-bundle-pg93x32-setup-2.1.1-1 ④ PostgreSQL, PostGIS 기본적인 설정에 따라 설치를 완료 ⑤ [시작메뉴] – [PostgreSQL 9.3] – [pgAdmin] 을 실행 PostgreSQL 설치 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 PostGIS 설치 2 pgAdmin 실행 윤정환 (lenablue12@en-gis.com)
  • I-2. PostGIS 설치하기  OpenGeo Suite 설치 ① http://boundlessgeo.com/에 접속하여 OpenGeo Suite 최신버전을 내려받음 ② [설치프로그램postgis] 경로로 이동하여 OpenGeo Suite 3.0.2 버전을 복사 ③ OpenGeo Suite 기본적인 설정에 따라 설치를 완료 ④ [시작메뉴] – [OpenGeo Suite 3.0.2] – [OpenGeo Suite Dashboard] 를 실행 ⑤ OpenGeo Suite Dashboard 화면 우측 상단 [Start] 버튼을 선택 ⑥ [Components] – [PostGIS] – [manage] 를 선택하여 pgAdmin을 실행 ⑦ Tip : 사용자 컴퓨터의 등록정보를 확인하여 컴퓨터 이름 또는 사용자 이름이 한글일 경우 오류가 발생할 수 있으므 로 변경 후 설치 권장 OpenGeo Suite 설치 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 OpenGeo Suite Dashboard 실행 3 pgAdmin 실행 윤정환 (lenablue12@en-gis.com)
  • I-3. PostGIS 환경설정  OpenGeoSuite Dashbord 환결설정 ① OpenGeo Suite Dashboard 화면 선택 ② Preferences를 선택하고, [PostGIS] 메뉴에 Port 번호 “54321”을 확인  pgAdmin 환경설정 ① OpenGeo Suite Dashboard 화면 선택 ② [Components] – [PostGIS] – [manage] 를 선택하여 pgAdmin을 실행 ③ pgAdmin의 [File] – [Options] 메뉴를 선택 ④ [General tab] – [user language] 의 Default를 확인 ⑤ [Preferences tab] – [Font] 선택하여 “돋움, 9”로 변경 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 4 윤정환 (lenablue12@en-gis.com)
  • I-4. pgAdmin & Query Tool 사용하기  pgAdmin Server 구성하기 ① OpenGeo Suite Dashboard 화면에서 [Components] – [PostGIS] – [manage] 를 선택하여 pgAdmin을 실행 아이콘을 선택 ② [File] – [Add Server] & 툴바 ③ New Server Registration 화면에 Name, Host, Password를 입력 후 [ok] 선택 postgis 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 5 윤정환 (lenablue12@en-gis.com)
  • I-4. pgAdmin & Query Tool 사용하기  pgAdmin 사용하기 도구 설명 pgAdmin 도구에 새로운 서버를 추가합니다. 객체의 정보를 생성, 수정, 갱신, 삭제 후 새로고침 합니다. 테이블 등의 객체의 등록정보를 확인하거나 수정합니다. 선택된 객체와 같은 형태의 새로운 객체를 생성합니다. 선택된 객체를 삭제합니다. SQL을 실행할 수 있는 Query 도구를 불러옵니다. 선택된 테이블을 편집할 수 있는 테이블 편집기를 불러옵니다. 필터를 적용해서 테이블을 편집할 수 있는 테이블 편집기를 불러옵니다. Vacuum, Analyze 등 테이블 유지에 필요한 도구를 불러옵니다. 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 6 윤정환 (lenablue12@en-gis.com)
  • I-4. pgAdmin & Query Tool 사용하기  Query Tool 사용하기 아이콘을 선택 Query Tool 실행 ① pgAdmin Tool 툴바 ② 샘플데이터 폴더의 postgis_korea_epsg_towgs84.sql을 열기 ③ [F5] 선택 Query 실행 시킴, 한국 주요 좌표계 적용 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 7 윤정환 (lenablue12@en-gis.com)
  • II. 공간데이터베이스 관리 - 일러두기 • 본 자료는 모두 Creative Commons License CC-BY-NC을 따릅니다. • 본 교재에서는 교육의 편의상 Windows 32비트 기반의 프로그램들을 위주로 설명합니다. • 본 교재에서 사용하는 샘플 데이터 셋은 실제 정보와 다르므로 교육용 이외에는 사용할 수 없습니다.
  • II-1. 공간데이터베이스 생성  GUI를 이용한 공간데이터베이스 생성 ① [시작메뉴] – [PostgreSQL 9.3] – [pgAdmin] 을 실행 ② [Databases] 오른쪽 마우스 선택 후 [New Database]를 선택 ③ [Name] – nyc 입력 ④ [Owner] – postgres 선택, [ok] 선택 ] 선택, Query Tool 실행 ⑤[ ⑦ CREATE EXTENSION postgis; 입력, [F5] 실행 ⑧ CREATE EXTENSION postgis_topology; 입력, [F5] 실행 ⑨ SELECT postgis_full_version(); 입력, [F5] 실행 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 8 윤정환 (lenablue12@en-gis.com)
  • II-2. 공간데이터 생성 & 로딩 & 추출  공간데이터 로딩 - nyc ① [시작메뉴] – [PostGIS 2.1 bundle for PostgreSQL 9.3 ] – [PostGIS Shapefile and DBF Loader Exporter] 을 실행 ② [시작메뉴] – [OpenGeo Suite 3.0.2] – [pgShapeLoader]를 실행 ③ [PostGIS Connection ] – [View connenction details] 선택 후 아래의 내용 입력 - Username : postgres / Password : postgis /Database : korea ④ [Options] - UTF-8 확인 후 [ok] 선택 ⑤ [Add File] – [02_실습예제02_PostGISdatanyc] 폴더의 Shape 파일 추가 ⑦ Import List [SRID] 컬럼 26918 로 변경 입력 ⑧ [Import] 선택 Shape 파일 추가 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 9 윤정환 (lenablue12@en-gis.com)
  • II-2. 공간데이터 생성 & 로딩 & 추출  공간데이터 로딩 - korea ① [시작메뉴] – [PostGIS 2.1 bundle for PostgreSQL 9.3 ] – [PostGIS Shapefile and DBF Loader Exporter] 을 실행 ② [시작메뉴] – [OpenGeo Suite 3.0.2] – [pgShapeLoader]를 실행 ③ [PostGIS Connection ] – [View connenction details] 선택 후 아래의 내용 입력 - Username : postgres / Password : postgis /Database : korea ④ [Options] – encoding CP949 or EUC-KR 변경 입력 후 [ok] 선택 ⑤ [Add File] – [02_실습예제02_PostGISdataseoul] 폴더의 Shape 파일 추가 ⑦ Import List [SRID] 컬럼 5174 로 변경 입력 ⑧ [Import] 선택 Shape 파일 추가 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 10 윤정환 (lenablue12@en-gis.com)
  • II-2. 공간데이터 생성 & 로딩 & 추출  공간데이터 추출 ① [시작메뉴] – [PostGIS 2.1 bundle for PostgreSQL 9.3 ] – [pgAdmin III] 을 실행 ② [시작메뉴] – [OpenGeo Suite 3.0.2] – [pgAdmin]를 실행 ③ OpenGeo Suit Dashboard의 PostGIS [Manage] 선택 실행 ④ nyc의 Query Tool을 선택 ⑤ nyc_neighborhoods 테이블을 이용하여 다음 쿼리 문을 작성해 보시기 바랍니다. - 브루클린에 있는 모든 지역의 이름(name)은 ? - 브루클린에 있는 모든 지역의 이름에 있는 문자의 수는 ? - 브루클린에 있는 모든 지역의 이름에 있는 문자의 평균과 표준편차는? ⑥ Function List - avg(expression) - char_lengtth(string) - stddev(string) 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 11 윤정환 (lenablue12@en-gis.com)
  • II-2. 공간데이터 생성 & 로딩 & 추출  공간데이터 추출 ① [시작메뉴] – [PostGIS 2.1 bundle for PostgreSQL 9.3 ] – [pgAdmin III] 을 실행 ② [시작메뉴] – [OpenGeo Suite 3.0.2] – [pgAdmin]를 실행 ③ OpenGeo Suit Dashboard의 PostGIS [Manage] 선택 실행 ④ korea의 Query Tool을 선택 ⑤ admin_emd 테이블과 pop2007, pop2008 컬럼을 이용하여 다음 쿼리 문을 작성해 보시기 바랍니다. - 서울특별시 2007, 2008 각 년도 인구수 총 합은 ? - 서울특별시 종로구, 서대문구, 강남구 2007, 2008 각년도 인구수의 총 합은? - 2008년 인구 중 종로구내 각 동의 인구비율은 백분율로 표시 ? ⑥ Function List - avg(expression) - count(expression) - sum(expression) 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 12 윤정환 (lenablue12@en-gis.com)
  • II-3. 래스터 데이터 생성 & 로딩  레스터 데이터 생성 ① [시작메뉴] – [PostGIS 2.1 bundle for PostgreSQL 9.3 ] – [pgAdmin III] 을 실행 ② [시작메뉴] – [OpenGeo Suite 3.0.2] – [pgAdmin]를 실행 ③ OpenGeo Suit Dashboard의 PostGIS [Manage] 선택 실행 ④ nyc의 Query Tool을 선택 ⑤ PostGIS 래스터 공간함수를 사용한 래스터 테이블 생성 - CREATE TABLE myrasters(rid serial primary key, rast raster); - CREATE INDEX myrasters_rast_st_convexhull_idx ON myrasters USING gist( ST_ConvexHull(rast) ); 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 13 윤정환 (lenablue12@en-gis.com)
  • II-3. 래스터 데이터 생성 & 로딩  레스터 데이터 로딩 ① 윈도우 cmd 화면을 실행 ([시작메뉴] – [실행] – [cmd] 선택) ② OpenGeo Suit 설치경로 이동 or PostgreSQL 설치경로 이동 ③ raster2pgsql –G 입력 실행 ④ 실행 예제 Raster2pgsql raster_options_go_here raster_file someschema.sometable > out.sql ⑤ http://postgis.net/docs/manual-2.1/using_raster_dataman.html#RT_Raster_Loader ⑥ C:OpenGISEdupostgisdataseoul_raster 경로 raster 파일 올리기 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 14 윤정환 (lenablue12@en-gis.com)
  • III. 공간함수 사용하기 - 일러두기 • 본 자료는 모두 Creative Commons License CC-BY-NC을 따릅니다. • 본 교재에서는 교육의 편의상 Windows 32비트 기반의 프로그램들을 위주로 설명합니다. • 본 교재에서 사용하는 샘플 데이터 셋은 실제 정보와 다르므로 교육용 이외에는 사용할 수 없습니다.
  • III-1. Geometry  Geometry ① nyc의 Query Tool 실행 CREATE TABLE geometries (name varchar, geom geometry); INSERT INTO geometries VALUES ('Point', 'POINT(0 0)'), ('Linestring', 'LINESTRING(0 0, 1 1, 2 1, 2 2)'), ('Polygon', 'POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))'), ('PolygonWithHole', 'POLYGON((0 0, 10 0, 10 10, 0 10, 0 0),(1 1, 1 2, 2 2, 2 1, 1 1))'), ('Collection', 'GEOMETRYCOLLECTION(POINT(2 0),POLYGON((0 0, 1 0, 1 1, 0 1, 0 0)))'); SELECT name, ST_AsText(geom) FROM geometries; ② Spatial Type SELECT name, ST_GeometryType(geom), ST_NDims(geom), ST_SRID(geom) FROM geometries; 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 15 윤정환 (lenablue12@en-gis.com)
  • III-1. Geometry  Geometry ③ Spatial Type SELECT name, ST_GeometryType(geom), ST_NDims(geom), ST_SRID(geom) FROM geometries; ④ Point SELECT ST_AsText(geom) FROM geometries WHERE name = 'Point'; SELECT ST_X(geom), ST_Y(geom) FROM geometries WHERE name = 'Point'; SELECT name, ST_AsText(geom) FROM nyc_subway_stations LIMIT 1; ⑤ Linestrings SELECT ST_AsText(geom) FROM geometries WHERE name = 'Linestring'; SELECT ST_Length(geom) FROM geometries WHERE name = 'Linestring'; 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 16 윤정환 (lenablue12@en-gis.com)
  • III-1. Geometry  Geometry ⑥ Polygons SELECT ST_AsText(geom) FROM geometries WHERE name LIKE 'Polygon%'; SELECT name, ST_Area(geom) FROM geometries WHERE name LIKE 'Polygon% ⑦ Collections – MultiPoint, MultiLineString, MultiPolygon, GeometryCollection SELECT name, ST_AsText(geom) FROM geometries WHERE name = 'Collection'; ⑧ Geometry Input and Output SELECT encode( ST_AsBinary(ST_GeometryFromText('LINESTRING(0 0 0,1 0 0,1 1 2)')), 'hex'); SELECT ST_AsEWKT(ST_GeometryFromText('LINESTRING(0 0 0,1 0 0,1 1 2)')); SELECT encode(ST_AsEWKB(ST_GeometryFromText( 'LINESTRING(0 0 0,1 0 0,1 1 2)')), 'hex'); SELECT ST_AsGeoJSON(ST_GeomFromGML('<gml:Point><gml:coordinates>1,1</gml:coordinates></gml:Point>')); ⑨ Casting from Text SELECT 0.9::text; SELECT 'POINT(0 0)'::geometry; SELECT 'SRID=4326;POINT(0 0)'::geometry; 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 17 윤정환 (lenablue12@en-gis.com)
  • III-1. Geometry  Geometry 연습문제 사용할 공간함수  sum(expression) aggregate to return a sum for a set of records  ST_InteriorRingN(polygon, integer) returns a specified interior ring as a linestring  count(expression) aggregate to return the size of a set of records  ST_Perimeter(geometry) returns the length of all the rings  ST_GeometryType(geometry) returns the type of the geometry  ST_NumGeometries(multi/geomcollection) returns the number of parts in the collection  ST_NDims(geometry) returns the number of dimensions of the geometry  ST_GeometryN(geometry, integer) returns the specified part of the collection  ST_SRID(geometry) returns the spatial reference identifier number of the geometry  ST_GeomFromText(text) returns geometry  ST_X(point) returns the X ordinate  ST_AsText(geometry) returns WKT text  ST_Y(point) returns the Y ordinate  ST_AsEWKT(geometry) returns EWKT text  ST_Length(linestring) returns the length of the linestring  ST_GeomFromWKB(bytea) returns geometry  ST_StartPoint(geometry) returns the first coordinate as a point  ST_AsBinary(geometry) returns WKB bytea  ST_EndPoint(geometry) returns the last coordinate as a point  ST_AsEWKB(geometry) returns EWKB bytea  ST_NPoints(geometry) returns the number of coordinates in the linestring  ST_GeomFromGML(text) returns geometry  ST_Area(geometry) returns the area of the polygons  ST_GeomFromKML(text) returns geometry  ST_NRings(geometry) returns the number of rings (usually 1, more if there are holes)  ST_AsKML(geometry) returns KML text  ST_AsGML(geometry) returns GML text  ST_AsGeoJSON(geometry) returns JSON text  ST_ExteriorRing(polygon) returns the outer ring as a linestring 국가공간정보 거점대학 오픈 소스 GIS 심화 과정  ST_AsSVG(geometry) returns SVG text 18 윤정환 (lenablue12@en-gis.com)
  • III-1. Geometry  Geometry 연습문제  Nyc 데이터베이스 사용, 사용 테이블 ① ‘West Village’ 지역(neighborhood)의 면적은 ?  nyc_census_blocks - nyc_neighborhoods ② ‘Manhattan’의 면적은 km 표기 ?(기본단위 m) – blkid, popn_total, boroname, geom  nyc_streets - nyc_neighborhoods, nyc_census_blocks ③ 뉴욕시의 얼마나 많은 인구조사 블록(hole)이 있는가? – name, type, geom  nyc_subway_stations - nyc_census_blocks ④ 뉴욕시의 총 도로의 길이는 km 표기 ? – name, geom  nyc_neighborhoods - nyc_streets ⑤ ‘Columbus Cir’ 도로의 길이는 ? – name, boroname, geom - nyc_streets ⑥ ‘West Village’의 boundary를 JSON으로 표현 ? - nyc_neighborhoods ⑦ ‘West Village’ 다중 폴리곤(Multipolygon) 몇 개 ? - nyc_neighborhoods ⑧ 뉴욕시의 도로타입별 총 길이는 ? - nyc_streets 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 19 윤정환 (lenablue12@en-gis.com)
  • III-2. Spatial Relationships / Joins / Indexing / Projecting  Spatial Relationships ① ST_Equals ST_Intersects - SELECT name, geom, ST_AsText(geom) FROM nyc_subway_stations WHERE name = 'Broad St'; - SELECT name, ST_AsText(geom) FROM nyc_subway_stations WHERE name = 'Broad St'; - SELECT name FROM nyc_subway_stations WHERE ST_Equals(geom, '0101000020266900000EEBD4CF27CF2141BC17D69516315141') ; - SELECT name, boroname FROM nyc_neighborhoods WHERE ST_Intersects(geom, ST_GeomFromText('POINT(583571 4506714)',26918)); 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 20 윤정환 (lenablue12@en-gis.com)
  • III-2. Spatial Relationships / Joins / Indexing / Projecting  Spatial Relationships ③ ST_Disjoint 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 ST_Crosses 21 윤정환 (lenablue12@en-gis.com)
  • III-2. Spatial Relationships / Joins / Indexing / Projecting  Spatial Relationships ⑤ ST_Overlaps 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 ⑥ ST_Touches 22 윤정환 (lenablue12@en-gis.com)
  • III-2. Spatial Relationships / Joins / Indexing / Projecting  Spatial Relationships ⑦ ST_Within and ST_Contains ⑧ ST_Distance and ST_Dwithin - SELECT ST_Distance( ST_GeometryFromText('POINT(0 5)'), ST_GeometryFromText('LINESTRING(-2 2, 2 2)')); - SELECT name FROM nyc_streets WHERE ST_DWithin( geom, ST_GeomFromText('POINT(583571 4506714)',26918), 10 ); 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 23 윤정환 (lenablue12@en-gis.com)
  • III-2. Spatial Relationships / Joins / Indexing / Projecting  Spatial Relationships 연습문제 사용할 공간함수  sum(expression) aggregate to return a sum for a set of records  ST_Within(geometry A, geometry B) returns true if geometry A is within geometry B  count(expression) aggregate to return the size of a set of records  ST_Contains(geometry A, geometry B) returns true if geometry A contains geometry B  ST_Crosses(geometry A, geometry B) returns true if geometry A crosses geometry B  ST_Disjoint(geometry A , geometry B) returns true if the geometries do not “spatially intersect”  ST_Distance(geometry A, geometry B) returns the minimum distance between geometry A and geometry B  ST_DWithin(geometry A, geometry B, radius) returns true if geometry A is radius distance or less from geometry B  ST_Equals(geometry A, geometry B) returns true if geometry A is the same as geometry B  ST_Intersects(geometry A, geometry B) returns true if geometry A intersects geometry B  ST_Overlaps(geometry A, geometry B) returns true if geometry A and geometry B share space, but are not completely contained by each other.  ST_Touches(geometry A, geometry B) returns true if the boundary of geometry A touches geometry B 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 24 윤정환 (lenablue12@en-gis.com)
  • III-2. Spatial Relationships / Joins / Indexing / Projecting  Spatial Relationships 연습문제  Nyc 데이터베이스 사용, 사용 테이블 ① ‘Atlantic Commons’ 이름의 도로의 Geometry 값은?  nyc_census_blocks - nyc_streets ② ‘Atlantic Commons’d의 지역, 자치구는 ? – name, popn_total, boroname, geom  nyc_streets - nyc_neighborhoods ③ ‘Atlantic Commons’도로와 만나는 도로의 이름은? – name, type, geom  nyc_subway_stations - nyc_streets ④ ‘Atlantic Commons’ 반경 50m 이내의 인구수 ? – name, routes, geom  nyc_neighborhoods - nyc_census_blocks – name, boroname, geom 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 25 윤정환 (lenablue12@en-gis.com)
  • III-2. Spatial Relationships / Joins / Indexing / Projecting  Spatial Joins ① Join ② Join and Summarize ‘Manhattan 지역의 총 인구수와 백인/흑인의 비율 ? SELECT subways.name AS subway_name, SELECT neighborhoods.name AS neighborhood_name, neighborhoods.name AS neighborhood_name, Sum(census.popn_total) AS population, neighborhoods.boroname AS borough Round(100.0 * Sum(census.popn_white) / Sum(census.popn_total),1) AS white_pct, FROM nyc_neighborhoods AS neighborhoods JOIN nyc_subway_stations AS subways Round(100.0 * Sum(census.popn_black) / Sum(census.popn_total),1) AS black_pct ON ST_Contains(neighborhoods.geom, subways.geom) WHERE subways.name = 'Broad St'; FROM nyc_neighborhoods AS neighborhoods JOIN nyc_census_blocks AS census ON ST_Intersects(neighborhoods.geom, census.geom) WHERE neighborhoods.boroname = 'Manhattan' GROUP BY neighborhoods.name ORDER BY white_pct DESC; 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 26 윤정환 (lenablue12@en-gis.com)
  • III-2. Spatial Relationships / Joins / Indexing / Projecting  Spatial Joins  Spatial Joins 연습문제 사용할 공간함수 ③ Join and Summarize A지하철의 반경 200m이내의 총인구, 인종별 비율?  sum(expression): aggregate to return a sum for a set of records SELECT  ST_Area(geometry) returns the area of the polygons 100.0 * Sum(popn_white) / Sum(popn_total) AS white_pct,  ST_AsText(geometry) returns WKT text  count(expression): aggregate to return the size of a set of records  ST_Contains(geometry A, geometry B) returns the true if geometry A contains geometry B 100.0 * Sum(popn_black) / Sum(popn_total) AS black_pct,  ST_Distance(geometry A, geometry B) returns the minimum distance between geometry A and geometry B Sum(popn_total) AS popn_total  ST_DWithin(geometry A, geometry B, radius) returns the true if geometry A is radius distance or less from geometry B FROM nyc_census_blocks AS census JOIN nyc_subway_stations AS subways  ST_GeomFromText(text) returns geometry ON ST_DWithin(census.geom, subways.geom, 200) WHERE strpos(subways.routes,'A') > 0;  ST_Intersects(geometry A, geometry B) returns the true if geometry A intersects geometry B  ST_Length(linestring) returns the length of the linestring  ST_Touches(geometry A, geometry B) returns the true if the boundary of geometry A touches geometry B  ST_Within(geometry A, geometry B) returns the true if geometry A is within geometry B 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 27 윤정환 (lenablue12@en-gis.com)
  • III-2. Spatial Relationships / Joins / Indexing / Projecting  Spatial Joins 연습문제  Nyc 데이터베이스 사용, 사용 테이블 ① ‘Little Italy’ 무슨 역이고, 어떤 노선 인가?  nyc_census_blocks - nyc_subway_stations, nyc_subway_stations ② 6-train 지나는 모든 지역은 어디인가? – name, popn_total, boroname, geom  nyc_streets - nyc_subway_stations, nyc_subway_stations ③ ‘Battery Park’ 의 총인구? – name, type, geom  nyc_subway_stations - nyc_subway_stations, nyc_subway_stations ④ ‘Upper West Side’, ‘Upper East Side’ 인구밀도는 ? – name, routes, geom  nyc_neighborhoods - nyc_subway_stations, nyc_subway_stations – name, boroname, geom 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 28 윤정환 (lenablue12@en-gis.com)
  • III-2. Spatial Relationships / Joins / Indexing / Projecting  Spatial Indexing ① Spatial Indexing 테스트 Index-Only Queris - PostGIS index 내장 공간함수 제공 - DROP INDEX nyc_census_blocks_geom_gist; - SELECT (ST_Contains, ST_Intersects, ST_DWithin, etc) blocks.blkid - Index 와 „&&‟ 연산자 FROM nyc_census_blocks blocks SELECT JOIN nyc_subway_stations subways Sum(popn_total) ON ST_Contains(blocks.geom, subways.geom) FROM nyc_neighborhoods neighborhoods WHERE subways.name = 'Broad St'; JOIN nyc_census_blocks blocks - Query 시간 확인 ON neighborhoods.geom && blocks.geom - CREATE INDEX nyc_census_blocks_geom_gist WHERE neighborhoods.name = 'West Village'; ON nyc_census_blocks USING GIST (geom); - 위의 Select 문을 실행 시켜 Query 시간을 확인 SELECT Sum(popn_total) FROM nyc_neighborhoods neighborhoods JOIN nyc_census_blocks blocks ON ST_Intersects(neighborhoods.geom, blocks.geom) WHERE neighborhoods.name = 'West Village'; 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 29 윤정환 (lenablue12@en-gis.com)
  • III-2. Spatial Relationships / Joins / Indexing / Projecting  Projecting 연습문제 사용할 공간함수  Projecting 연습문제  Nyc 데이터베이스 사용, 사용 테이블  sum(expression) aggregate to return a sum for a set of records  nyc_census_blocks  ST_Length(linestring) returns the length of the linestring – name, popn_total, boroname, geom  nyc_streets  ST_SRID(geometry, srid) returns the SRID of the geometry – name, type, geom  ST_Transform(geometry, srid) converts geometries into different spatial reference systems  nyc_subway_stations  ST_GeomFromText(text) returns geometry  nyc_neighborhoods – name, geom  ST_AsText(geometry) returns WKT text – name, boroname, geom  ST_AsGML(geometry) returns GML text ① 뉴욕시 모든 도로 길이는 ? - nyc_streets ② SRID 2831로 변환된 뉴욕시 모든 도로 길이는? - nyc_streets ③ ‘Broad St’ subway station을 KML 표시 ? - nyc_subway_stations 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 30 윤정환 (lenablue12@en-gis.com)
  • III-3. Geograpy  Gemotry & Geograpy ① 거리 구하기 - SELECT ST_Distance( ST_GeometryFromText('POINT(-118.4079 33.9434)', 4326), -- Los Angeles (LAX) ST_GeometryFromText('POINT(2.5559 49.0083)', 4326) -- Paris (CDG) ); - SELECT ST_Distance( ST_GeographyFromText('POINT(-118.4079 33.9434)'), -- Los Angeles (LAX) - SELECT ST_Distance( ST_GeographyFromText('POINT(2.5559 49.0083)') -- Paris (CDG) ); ST_GeometryFromText('Point(-118.4079 33.9434)'), -- LAX ST_GeometryFromText('Point(139.733 35.567)')) -- NRT (Tokyo/Narita) AS geometry_distance, ST_Distance( ST_GeographyFromText('Point(-118.4079 33.9434)'), -- LAX ST_GeographyFromText('Point(139.733 35.567)')) -- NRT (Tokyo/Narita) AS geography_distance; SELECT ST_Distance( ST_GeographyFromText('LINESTRING(-118.4079 33.9434, 2.5559 49.0083)'), -- LAX-CDG ST_GeographyFromText('POINT(-21.8628 64.1286)') -- Iceland ); 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 31 윤정환 (lenablue12@en-gis.com)
  • III-3. Geograpy  Gemotry & Geograpy ② Geograpy 테이블 생성 ③ Geometry 변환 - SELECT code, ST_X(geog::geometry) AS longitude FROM airports; -CREATE TABLE airports ( code VARCHAR(3), geog GEOGRAPHY(Point) ); INSERT INTO airports VALUES ('LAX', 'POINT(-118.4079 33.9434)'); INSERT INTO airports VALUES ('CDG', 'POINT(2.5559 49.0083)'); INSERT INTO airports VALUES ('REK', 'POINT(-21.8628 64.1286)'); - SELECT * FROM geography_columns; 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 32 윤정환 (lenablue12@en-gis.com)
  • III-4. Geometry Constructing Functions  ST_Centroid / ST_PointOnSurface  ST_Buffer CREATE TABLE liberty_island_zone AS SELECT ST_Buffer(geom,500)::geometry(Polygon,26918) AS geom FROM nyc_census_blocks WHERE blkid = '360610001001001'; 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 33 윤정환 (lenablue12@en-gis.com)
  • III-4. Geometry Constructing Functions  ST_Intersection  ST_Union SELECT ST_AsText(ST_Intersection( SELECT ST_AsText(ST_Union( ST_Buffer('POINT(0 0)', 2), ST_Buffer('POINT(0 0)', 2), ST_Buffer('POINT(3 0)', 2) ) ST_Buffer('POINT(3 0)', 2) ) ); ); CREATE TABLE nyc_census_counties AS SELECT ST_Union(geom)::Geometry(MultiPolygon,26918) AS geom, SubStr(blkid,1,5) AS countyid FROM nyc_census_blocks GROUP BY countyid; SELECT SubStr(blkid,1,5) AS countyid, Sum(ST_Area(geom)) AS area FROM nyc_census_blocks GROUP BY countyid; SELECT countyid, ST_Area(geom) AS area FROM nyc_census_counties; 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 34 SELECT countyid, ST_AsText(geom) FROM nyc_census_counties; 윤정환 (lenablue12@en-gis.com)
  • III-5. More Spatial Joins  Census Tracts Table 생성  문제 ① pgAdim 실행 – Query Tool 실행 뉴욕 지역의 graduate degrees 사람 비율이 높은 10개 지역은 ? ② C:OpenGISEdupostgisdatanyc 폴더 nyc_census_sociodata.sql 파일 열기 SELECT Round(100.0 * Sum(t.edu_graduate_dipl) / Sum(t.edu_total), 1) AS graduate_pct, n.name, n.boroname FROM nyc_neighborhoods n JOIN nyc_census_tracts t ON ST_Intersects(n.geom, t.geom) WHERE t.edu_total > 0 GROUP BY n.name, n.boroname ORDER BY graduate_pct DESC LIMIT 10; ③ [F5] 실행 Census tracts 테이블 생성 ④ Refresh 선택, 테이블 추가 확인 ⑤ ST_Union을 이용한 새로운 테이블 생성 - CREATE TABLE nyc_census_tract_geoms AS SELECT ST_Union(geom) AS geom, SubStr(blkid,1,11) AS tractid FROM nyc_census_blocks GROUP BY tractid; -- Index the tractid CREATE INDEX nyc_census_tract_geoms_tractid_idx ON nyc_census_tract_geoms (tractid); ⑥ Join을 통한 속성정보 추가 테이블 생성 - CREATE TABLE nyc_census_tracts AS SELECT g.geom, a.* FROM nyc_census_tract_geoms g JOIN nyc_census_sociodata a ON g.tractid = a.tractid; -- Index the geometries CREATE INDEX nyc_census_tract_gidx ON nyc_census_tracts USING GIST (geom); 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 35 윤정환 (lenablue12@en-gis.com)
  • III-5. More Spatial Joins  큰 반경 거리 Join  Polygon/Polygon Joins ① SELECT Sum(popn_total) FROM nyc_census_blocks; ② SELECT Sum(popn_total) FROM nyc_census_blocks census JOIN nyc_subway_stations subway ON ST_DWithin(census.geom, subway.geom, 500); ③ WITH distinct_blocks AS ( SELECT DISTINCT ON (blkid) popn_total FROM nyc_census_blocks census JOIN nyc_subway_stations subway ON ST_DWithin(census.geom, subway.geom, 500) ) SELECT Sum(popn_total) FROM distinct_blocks; SELECT Round(100.0 * Sum(t.edu_graduate_dipl) / Sum(t.edu_total), 1) AS graduate_pct, n.name, n.boroname FROM nyc_neighborhoods n JOIN nyc_census_tracts t ON ST_Contains(n.geom, ST_Centroid(t.geom)) WHERE t.edu_total > 0 GROUP BY n.name, n.boroname ORDER BY graduate_pct DESC LIMIT 10; 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 36 윤정환 (lenablue12@en-gis.com)
  • IV. 어플리케이션을 이용한 PostGIS 사용하기 - 일러두기 • 본 자료는 모두 Creative Commons License CC-BY-NC을 따릅니다. • 본 교재에서는 교육의 편의상 Windows 32비트 기반의 프로그램들을 위주로 설명합니다. • 본 교재에서 사용하는 샘플 데이터 셋은 실제 정보와 다르므로 교육용 이외에는 사용할 수 없습니다.
  • IV-1. 프로그램 설치하기  프로그램 설치하기 ① QGIS 2.0 설치 하기 - 설치프로그램 폴더 : QGIS-OSGeo4W-2.0.1-3-Setupx86 설치 - 설치화면 기본 순서대로 설치 ② uDig 1.4 설치 하기 - 설치프로그램 폴더 : udig-1.4.0.win32.win32.x86 - 설치화면 기본 순서대로 설치 ③ OpenJUMP 1.6 설치하기 - 설치프로그램 폴더 : OpenJUMP-Installer-1.6.3-r3576CORE - 설치화면 기본 순서대로 설치 ④ JDK 설치하기 - 설치프로그램 폴더 : JDK 설치 및 환경설정.txt 참조 ⑤ visual studio 평가판 설치하기 - 설치프로그램 폴더 : vcs_web.exe 설치하기 - 설치화면 기본 순서대로 설치 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 37 윤정환 (lenablue12@en-gis.com)
  • IV-2. QGIS 이용한 PostGIS 이용하기  QGIS에서 레이어 추가하기 ① QGIS 2.0 실행 ② [플러그인] – [플러그인관리및설치] SPIT 설치 확인 ③ [데이터베이스] – [Spit(s)] –[쉐입 파일을 PostGIS에 가 져오기 ④ [새로만들기] 선택, 정보 입력 후 [확인] 선택 ⑤ [연결] 선택 ⑥ [추가] 선택 후, Shape 파일 선택 추가 ⑦ 기본 지오매트리 컬럼 이름 사용 체크 해제 후 „geom‟ 변경 ⑧ 기본 SRID 사용 체크 해제 후 „5174‟ 변경 ⑨ [확인] 선택 ⑩ pgAdmin 실행 후 korea 데이터베이스에 입력한 shape 파일 테이블 확인 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 38 윤정환 (lenablue12@en-gis.com)
  • IV-2. QGIS 이용한 PostGIS 이용하기  QGIS에서 PostGIS 레이어 불러와 사용하기 ① QGIS 2.0 실행 ② [레이어] – [PostGIS레이어 추가하기] 선택 ③ [새로만들기] 선택, 정보 입력 후 [확인] 선택 – nyc 사용 ④ [연결] 선택 ⑤ public 선택 원하는 Shape 선택 후 [추가] 선택 ⑥ 선택된 레이어 변경하기 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 39 윤정환 (lenablue12@en-gis.com)
  • IV-3. OpenJUMP 이용한 PostGIS 이용하기  OpenJUMP에서 PostGIS 레이어 불러와 사용하기 ① OpenJUMP 1.6 실행 ② Working, System 오른 쪽 마우스 선택 후 [Add Datastore Layer] 선택 ③ Coonection[ ④ [Add] 선택 ] 아이콘 선택 ⑤ Connection Manager 화면에서 [ok] 선택 ⑥ Add Datastore Layer에서 Dataset(레이어선택) 후 [ok] 선택 ⑦ 여러레이어를 올려 레이어 변경하기 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 40 윤정환 (lenablue12@en-gis.com)
  • IV-4. uDig 이용한 PostGIS 이용하기  uDig에서 PostGIS 레이어 불러와 이용하기 ① uDig 1.46 실행 ② [파일] – [새로운 지도작업] – [지도] 선택 ③ [레이어] – [추가] 선택 ④ [PostGIS] 선택, [다음] 선택 ⑤ [Add] 선택 ⑥ Host, User Name, Password 입력 ⑦ Database 콤보박스 [korea] 선택 후 [List] 선택 ⑧ 여러 레이어 체크박스 선택 후 [완료] 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 41 윤정환 (lenablue12@en-gis.com)
  • IV-5. JDBC Driver 이용한 PostGIS 이용하기  JDBC Driver 이용한 PostGIS 이용하기 ① 최신 PostgreSQL JDBC Driver 다운로드 http://jdbc.postgresql.org/download.html ② jar파일 CLASSPATH 등록 ③ JDBC Driver 설치 방법 - 직접 다운로드 사이트 접속 다운 후 등록 - Application Stack Builder 통한 설치 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 42 윤정환 (lenablue12@en-gis.com)
  • IV-5. .NET Driver 이용한 PostGIS 이용하기 // Code for TestRaster.ashx <%@ WebHandler Language="C#" Class="TestRaster" %> using System; using System.Data; using System.Web; using Npgsql;  .NET Driver 이용한 PostGIS 이용하기 ① 최신 npgsql .NET PostgreSQL driver 다운로드 http://npgsql.projects.postgresql.org/ ② Web.config 설정 -- web.config connection string section -<connectionStrings> <add name="DSN" connectionString="server=localhost;database=mydb;Port= 5432;User Id=myuser;password=mypwd"/> </connectionStrings> ③ .NET Driver 설치 방법 - 직접 다운로드 사이트 접속 다운 후 등록 - Application Stack Builder 통한 설치 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 43 public class TestRaster : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "image/png"; context.Response.BinaryWrite(GetResults(context)); } public bool IsReusable { get { return false; } } public byte[] GetResults(HttpContext context) { byte[] result = null; NpgsqlCommand command; string sql = null; int input_srid = 26986; try { using (NpgsqlConnection conn = new NpgsqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings[ "DSN"].ConnectionString)) { conn.Open(); if (context.Request["srid"] != null) { input_srid = Convert.ToInt32(context.Request["srid"]); } sql = @"SELECT ST_AsPNG( ST_Transform( ST_AddBand( ST_Union(rast,1), ARRAY[ST_Union(rast,2),ST_Union(rast,3)]) ,:input_srid) ) As new_rast FROM aerials.boston WHERE ST_Intersects(rast, ST_Transform(ST_MakeEnvelope(71.1217, 42.227, -71.1210, 42.218,4326),26986) )"; command = new NpgsqlCommand(sql, conn); command.Parameters.Add(new NpgsqlParameter("input_srid", input_srid)); result = (byte[]) command.ExecuteScalar(); conn.Close(); } } catch (Exception ex) { result = null; context.Response.Write(ex.Message.Trim()); } return result; } } 윤정환 (lenablue12@en-gis.com)
  • V. PostGIS 그밖의 기능 - 일러두기 • 본 자료는 모두 Creative Commons License CC-BY-NC을 따릅니다. • 본 교재에서는 교육의 편의상 Windows 32비트 기반의 프로그램들을 위주로 설명합니다. • 본 교재에서 사용하는 샘플 데이터 셋은 실제 정보와 다르므로 교육용 이외에는 사용할 수 없습니다.
  • V-1. Tuning PostgreSQL for Spatial  Backend Configuration Editer  Shared_buffer ① pgAdmin 실행  Default Value : 32MB ② [File] – [Open postgresql.conf] – postgresql.conf 파일 선택  Recommended Value : 500MB (75%) 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 44 윤정환 (lenablue12@en-gis.com)
  • V-1. Tuning PostgreSQL for Spatial  Work_mem  Maintenance_work_mem  Default Value : 1MB  Default Value : 16MB  Recommended value : 16MB  Recommended Value : 16MB(ex.128MB) 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 45 윤정환 (lenablue12@en-gis.com)
  • V-1. Tuning PostgreSQL for Spatial  Wal_buffers  Checkpoint_segments  Default Value : 1MB  Default Value : 3MB  Recommended value : 16MB  Recommended Value : 6MB 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 46 윤정환 (lenablue12@en-gis.com)
  • V-1. Tuning PostgreSQL for Spatial  Ramdom_page_cost  Seq_page_cost  Default Value : 4.0  Default Value : 1.0  Recommended value : 2.0  Recommended Value : 1.0 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 47 윤정환 (lenablue12@en-gis.com)
  • V-1. Tuning PostgreSQL for Spatial  Reload configuration ① pgAdmin 접속 종료(종료) ② OpenSeo Suit Dashboard Shutdown, Start ③ pgAdim 접속 (재시작) ④ 설정 정보가 반영된다. 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 48 윤정환 (lenablue12@en-gis.com)
  • V-2. Query Plans  Query Plans ① pgAdmin 실행 ② Query Tool 실행 ③ [Query] – [Query Analyze] 선택 ④ Query 실행 – nyc db 사용 SELECT Sum(popn_total) FROM nyc_neighborhoods neighborhoods JOIN nyc_census_blocks blocks ON ST_Intersects(neighborhoods.geom, blocks.geom) WHERE neighborhoods.name = 'West Village'; ⑤ [Output pane] – [Explain] 선택 ⑥ Sequence Scan : 테이블의모든 Row Scan ⑦ Index Scan : 제약조건 스캔 ⑧ Nested Loop ⑨ Hash Aggregate 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 49 윤정환 (lenablue12@en-gis.com)
  • V-3. 백업 & 복원  백업 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 50 윤정환 (lenablue12@en-gis.com)
  • V-3. 백업 & 복원  백업 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 51 윤정환 (lenablue12@en-gis.com)
  • V-3. 백업 & 복원  복원 절차 – 템플릿 데이터베이스 생성 –Restore(복원) 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 52 윤정환 (lenablue12@en-gis.com)
  • V-3. 백업 & 복원  복원 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 53 윤정환 (lenablue12@en-gis.com)
  • V-3. 백업 & 복원  주의사항 ① 상위버전과 하위버전 호환안됨 ② 하위버전 백업  상위버전 Restore 가능 ③ 상위버전 백업  하위버전 Restore 오류  버전충돌시 테이블/레이어 분리백업/복원 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 54 윤정환 (lenablue12@en-gis.com)
  • V-4. pgRouting  pgRouting  pgRouting 은 PostGIS/PostgreSQL에 라우팅 기능을 추한 PostGIS의 Extension  Camptocamp SA 에 의해 시작된 pgDijkstra의 확장판이며 Orkney 에 의해 확장  현재 Georepublic 에 의해 개발 및 유지 관리되고 있음  pgRouting는 GPLv2 라이선스 하에 사용 가능하며 개인, 기업 및 조직의 커뮤니티에 의해 지원  데이터베이스 기반 라우팅 접근 방법의 장점 – 데이터와 속성은 Quantum GIS, uDig 그리고 JDBC, ODBC 또는 Pl/pgSQL 등 다양한 클라이언트 에 의해 직접 갱신 가능하며, 클라이언트는 PC나 모바일 기기가 될 수 있음 – 데이터 변경 내용은 라우팅 엔진을 통해 즉시 반영되며, 재계산이 필요 없음 – “cost” 파라미터는 SQL을 통해 동적으로 계산되고 그 값은 다중 필드 및 테이블의 다양한 값을 사용 할 수 있음 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 55 윤정환 (lenablue12@en-gis.com)
  • V-4. pgRouting  지원 알고리즘  Shortest Path Dijkstra – 휴리스틱 기법(heuristic method)을 사용하지 않는 최단거리 알고리즘, 알고리즘을 개발한 Dr. Edsger Wybe Dijkstra 교수의 이름을 사용.  Shortest Path A-Star(A*) – 휴리스틱 기법을 사용하며 대용량 데이터셋에 적합한 최단거리 알고리즘  Shortest Path Shooting-Star(Shooting*) – 휴리스틱 기법을 사용하며 turn restrictions(U-turn, P-turn, left-turn 등), 신호등, 편도차선 등의 시제 도로 네트워크 를 위한 최단거리 알고리즘  Traveling Salesperson Problem (TSP) – 최대 40개의 포인트를 지원하는 Traveling Salesman Problem(TSP, 외판원 문제) 알고리즘  Driving Distance calculation (Isolines) – 도로네트워크에 기반을 둔 특정지점에서 특정 시간내에 도달 할 수 있는 영역. Service area 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 56 윤정환 (lenablue12@en-gis.com)
  • V-4. pgRouting  Network 데이터셋  도로 네트워크 데이터셋은 최소한 다음의 정보를 포함 – Road link ID (gid) – Road class (class_id): primary roads, secondary roads, and local roads 등 Hierarchies – Road link length (length): Cost - Length, Travel Time 등 – Road name (name) – Road geometry (the_geom) – Road restrictions & rule (optional): Lanes, Speed Limit, traffic light, one-way streets 등 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 57 윤정환 (lenablue12@en-gis.com)
  • V-4. pgRouting  공공기관 생산 도로 네트워크  공공기관에서 생산하는 도로네트워크로 활용 가능한 데이터는 다음의 4가지가 가능 – 1. ITS 전국표준노드링크: http://nodelink.its.go.kr/ – 2. UTIS 통합노드링크: http://www.utis.go.kr/ – 3. 국가교통DB센터 노드링크: http://www.ktdb.go.kr/ – 4. 새주소 도로구간  1. 2. 3. 데이터는 1:5000 축척을 기반으로 제작되었으며 주요 도로(고속국도/일반국도/지방도 수준) 중심으로 상세한 지역에서의 활용은 어려움  4. 새주소 도로구간은 도로중심선으로 구축되어 있으나 네트워크 분석자료로 활용하기 위해서는 위 상구조 편집이 필요하며 도로에 대한 상세정보(Restrictions & rules)는 없음 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 58 윤정환 (lenablue12@en-gis.com)
  • V-4. pgRouting  공공기관 생산 도로 네트워크 (사례지역 : 제주도, 배경은 주거지(건물) 밀집도) 새주소 도로중심선 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 59 윤정환 (lenablue12@en-gis.com)
  • V-4. pgRouting  Installing pgRouting  웹사이트에 http://pgrouting.org/download.html  PostGIS 2.1.1 bundle 설치시 기본적으로 pgrouting 2.0 설치됨  [pgAdmin] 실행  [New database] 생성 CREATE EXTENSION postgis; CREATE EXTENSION pgrouting; 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 60 윤정환 (lenablue12@en-gis.com)
  • V-4. pgRouting  pgRouting reference  pgRouting Demo – http://websi.openvrp.com – http://map.veloland.ch – http://www.ridethecity.com – http://www.pgrouting.org/gallery.html  Reference – http://www.pgrouting.org/ – http://workshop.pgrouting.org/ – http://underdark.wordpress.com/2011/02/07/a-beginners-guide-to-pgrouting/ – https://github.com/pgRouting/pgrouting/ – http://2011.foss4g.org/sites/2011.foss4g.org/files/slides/FOSS4G2011_pgrouting2.pdf – http://2010.foss4g.org/presentations/3284.pdf 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 61 윤정환 (lenablue12@en-gis.com)
  • V-5. Reference  reference  PostGIS - http://postgis.org/ – Docs - http://postgis.org/docs/  PostgreSQL - http://www.postgresl.org/ – Downloads - http://www.postgresql.org/download/ – Docs - http://www.postgresql.org/docs/ – JDBC Driver - http://jdbc.postgresql.org/ – .Net Driver - http://npgsql.projects.postgresql.org/ – Python Driver - http://www.pygresql.org/ – C/C++ Driver - http://www.postgresql.org/docs/8.4/static/libpq.html  PgAdmin III - http://www.pgadmin.org/  Open Source Desktop Clients – uDig - http://udig.refractions.net/ – QGIS - http://qgis.org/ – OpenJUMP - http://openjump.org/ 국가공간정보 거점대학 오픈 소스 GIS 심화 과정 62 윤정환 (lenablue12@en-gis.com)
  • 한국어 지부 함께 성장하는 새로운 방법, 오픈 소스 소프트웨어!! 감사합니다. Q&A