25
Customizing GIS Programs - Scripting - 2013.03 Minpa Lee([email protected])

Customizing Gis Programs

Embed Size (px)

Citation preview

Page 1: Customizing Gis Programs

Customizing GIS Programs- Scripting -

2013.03

Minpa Lee([email protected])

Page 2: Customizing Gis Programs

2

CustomizingGIS

Programs

Page 3: Customizing Gis Programs

3

Customizing GIS ProgramsArcGIS Desktop & Server

VBA(Deprecated) Script .NET: Add-Ins & COM Python: ArcToolbox & ArcPy & REST API

QGIS Desktop C++ & PyQT PyQGIS: console, Plug-in, stand-alone

GeoServer Java: WPS, Filter Plug-in Python : app, datastore, filter, format, lib, process Scripting(GeoScript): Python, JavaScript, Groovy…

uDig Desktop Java: Plug-in Scripting: Groovy Plug-in

R R Script

Extension Point

Page 4: Customizing Gis Programs

4

ArcGIS for Desktop & ServerVBA(Deprecated) Script

ArcMap 또는 ArcCatalog 내에서 내장된 VBA 사용ArcMap 문서 (mxd 또는 mxt) 에 저장되고 문서를 통해서 배포VBA 를 이용해서 ArcObjects 에 접근10.1 버전부터 없어짐

http://map.sdsu.edu/geog104/images/unit-4/unit-4_image003_0000.png

Page 5: Customizing Gis Programs

5

ArcGIS for Desktop & Server.NET: Add-Ins

Microsoft Visual Studio 를 이용하여 개발 후 바이너리 배포Template 형태로 비교적 커스터마이징이 쉬움Desktop Add-In Manager 를 이용하여 관리

Page 6: Customizing Gis Programs

6

ArcGIS for Desktop & ServerCOM(VB, .NET, C++…)

Microsoft Visual Studio 를 이용하여 개발 후 바이너리 배포독자적인 설치 프로그램으로 배포 가능독립된 Application 도 개발 가능하며 고급 개발기존 KOPSS 개발 방식

Page 7: Customizing Gis Programs

7

ArcGIS for Desktop & ServerArcPy : Python Window

콘솔창을 통해 객체 사용스크립트 작성 후 스크립트 파일을 공유

>>> import arcpy >>> arcpy.AddField_management("c:/data/Portland.gdb/streets", "LENGTH_MILES", "TEXT") >>> arcpy.CalculateField_management("c:/data/Portland.gdb/streets", "LENGTH_MILES", "!shape.length@miles!", "PYTHON_9.3")

Page 8: Customizing Gis Programs

8

ArcGIS for Desktop & ServerArcPy Scripts

ArcPy 스크립트 작성 후 ArcToolbox 에 import 후 사용

Page 9: Customizing Gis Programs

9

ArcGIS for Desktop & ServerModelBuilder

ArcMap 에 내장된 ModelBuilder 를 이용한 GUI 기반의 툴박스ArcToolbox 에 포함된 기능들을 사용

Page 10: Customizing Gis Programs

10

ArcGIS for Desktop & ServerArcGIS Server REST API

ArcGIS for Server 에서 제공하는 REST APIOGC OWS(WMS, WFS, WCS, WPS…) 처럼 Map Service, Feature

Service, Geometry Service, Image Service, Network Service, GP Service, GeoData Service 등으로 구성

ArcGIS Web Client(JavaScript, Flash, Silverlight…) 등에서 활용 - Mash up

분석 기능은 GP Service 서비스를 확장 (ArcPy) 하여 추가http://servicesbeta2.esri.com/arcgis/sdk/rest/index.html

Page 11: Customizing Gis Programs

11

ArcGIS for Desktop & ServerESRI Support: http://support.esri.com

Page 12: Customizing Gis Programs

12

Quantum GIS DesktopPython Console

PyQGIS 콘솔창을 통해 객체 사용스크립트 작성 후 스크립트 파일을 공유

>>> from qgis.analysis import QgsGeometryAnalyzer >>> layer = qgis.utils.iface.activeLayer()>>> process = QgsGeometryAnalyzer()>>> process.buffer(layer, "C:/data/buffer_500.shp", 500, False, False, -1) >>> process.centroids(layer, "C:/data/centroids_500.shp“, False, -1)

Page 13: Customizing Gis Programs

13

Quantum GIS DesktopPython Plugins

PyQGIS 를 이용하여 플러그인 작성 및 배포온라인 배포를 위해서 QGIS Plugin Repository 에 등록 및 승인

Page 14: Customizing Gis Programs

14

Quantum GIS DesktopPython Applications

PyQGIS qgis_core, qgis_gui libraries 를 QGIS 외부에서 사용

Page 15: Customizing Gis Programs

15

Quantum GIS DesktopQuantum GIS Plugin Repository: http://plugins.qgis.org/

Page 16: Customizing Gis Programs

16

uDig DesktopEclipse RCP Plug-in

플러그인 작성 Plug-in Repository 를 통해 자동 설치 및 업데이트

http://www.mangosystem.com:8080/gxt/docs/gxt_for_desktop/udig/index.html

Page 17: Customizing Gis Programs

17

uDig DesktopScripting Plug-in

GeoScript: Groovy

http://jgrasstechtips.blogspot.kr/2013/01/proposal-geoscript-console-in-udig.html

Page 18: Customizing Gis Programs

18

uDig DesktopDeveloping with uDig: http://udig.refractions.net/developers/

Page 19: Customizing Gis Programs

19

GeoServerGeoTools Process

GeoTools 및 Java 를 이용하여 Process 생성GeoServer 의 WPS Process 로 사용하며 고급 customizationGeoTools 의 모든 기능을 사용 및 확장 가능GeoTools 를 사용하는 Desktop 및 Server 모두 사용http://docs.geotools.org/latest/userguide/unsupported/process/

index.html

Page 20: Customizing Gis Programs

20

GeoServerPython Extension

app, datastore, filter, format, lib, processJython script

Page 21: Customizing Gis Programs

21

GeoServerScripting(GeoScript) Extension

Python, JavaScript, Groovy… 등 지원Python extension 과 유사

Page 22: Customizing Gis Programs

22

GeoServerUser & Developer Manual: http://docs.geoserver.org/

Page 23: Customizing Gis Programs

23

RR Script

R is a free software programming language and a software envi-ronment for statistical computing and graphics.

R is an implementation of the S programming language combined with lexical scoping semantics inspired by Scheme

The capabilities of R are extended through user-created packages, which allow specialized statistical techniques, graphical devices, import/export capabilities, reporting tools, etc. These packages are developed primarily in R, and sometimes in Java, C and Fortran.

R-spatial : http://cran.r-project.org/web/views/Spatial.html

Page 24: Customizing Gis Programs

24

RR Project: http://www.r-project.org

Page 25: Customizing Gis Programs

25

Summary공통

각 GIS 엔진에서 지원하는 커스터마이징 방법은 다름최근 Python 중심으로 통합 추세지만 API 는 Engine 마다 다름

Desktop사용자가 분석 스크립트 (UI 포함 ) 생성 후 배포로컬 데이터 사용 용이

Server배포 방식은 스크립트 Extension, Plugin, Customizing 등 엔진에 따라 지원

방식이 다양함관리자가 분석 스크립트 생성 후 서버에 배포추가된 기능은 클라이언트 (Web) 에서 Mashup 하여 활용로컬 데이터 사용 어려움

지원 포맷 : GML, GeoJSON, TopoJSON… 인코딩 된 포맷의 크기 제약