SlideShare a Scribd company logo
2013.03
Minpa Lee(mapplus@gmail.com)
Customizing
GIS
Programs
2
Customizing GIS Programs
 ArcGIS 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
3
ArcGIS for Desktop & Server
 VBA(Deprecated) Script
 ArcMap 또는 ArcCatalog 내에서 내장된 VBA 사용
 ArcMap 문서(mxd 또는 mxt)에 저장되고 문서를 통해서 배포
 VBA 를 이용해서 ArcObjects에 접근
 10.1 버전부터 없어짐
4
http://map.sdsu.edu/geog104/images/unit-4/unit-4_image003_0000.png
ArcGIS for Desktop & Server
 .NET: Add-Ins
 Microsoft Visual Studio를 이용하여 개발 후 바이너리 배포
 Template 형태로 비교적 커스터마이징이 쉬움
 Desktop Add-In Manager를 이용하여 관리
5
ArcGIS for Desktop & Server
 COM(VB, .NET, C++…)
 Microsoft Visual Studio를 이용하여 개발 후 바이너리 배포
 독자적인 설치 프로그램으로 배포 가능
 독립된 Application도 개발 가능하며 고급 개발
 ���존 KOPSS 개발 방식
6
ArcGIS for Desktop & Server
 ArcPy : Python Window
 콘솔창을 통해 객체 사용
 스크립트 작성 후 스크립트 파일을 공유
7
>>> 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")
ArcGIS for Desktop & Server
 ArcPy Scripts
 ArcPy 스크립트 작성 후 ArcToolbox에 import후 사용
8
ArcGIS for Desktop & Server
 ModelBuilder
 ArcMap에 내장된 ModelBuilder를 이용한 GUI 기반의 툴박스
 ArcToolbox 에 포함된 기능들을 사용
9
ArcGIS for Desktop & Server
 ArcGIS Server REST API
 ArcGIS for Server 에서 제공하는 REST API
 OGC 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
10
ArcGIS for Desktop & Server
 ESRI Support: http://support.esri.com
11
Quantum GIS Desktop
 Python Console
 PyQGIS 콘솔창을 통해 객체 사용
 스크립트 작성 후 스크립트 파일을 공유
12
>>> 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)
Quantum GIS Desktop
 Python Plugins
 PyQGIS를 이용하여 플러그인 작성 및 배포
 온라인 배포를 위해서 QGIS Plugin Repository에 등록 및 승인
13
Quantum GIS Desktop
 Python Applications
 PyQGIS qgis_core, qgis_gui libraries를 QGIS 외부에서 사용
14
Quantum GIS Desktop
 Quantum GIS Plugin Repository: http://plugins.qgis.org/
15
uDig Desktop
 Eclipse RCP Plug-in
 플러그인 작성 Plug-in Repository를 통해 자동 설치 및 업데이트
16
http://www.mangosystem.com:8080/gxt/docs/gxt_for_desktop/udig/index.html
uDig Desktop
 Scripting Plug-in
 GeoScript: Groovy
17
http://jgrasstechtips.blogspot.kr/2013/01/proposal-geoscript-console-in-udig.html
uDig Desktop
 Developing with uDig: http://udig.refractions.net/developers/
18
GeoServer
 GeoTools Process
 GeoTools 및 Java를 이용하여 Process 생성
 GeoServer의 WPS Process로 사용하며 고급 customization
 GeoTools의 모든 기능을 사용 및 확장 가능
 GeoTools를 사용하는 Desktop 및 Server 모두 사용
 http://docs.geotools.org/latest/userguide/unsupported/process/
index.html
19
GeoServer
 Python Extension
 app, datastore, filter, format, lib, process
 Jython script
20
GeoServer
 Scripting(GeoScript) Extension
 Python, JavaScript, Groovy… 등 지원
 Python extension과 유사
21
GeoServer
 User & Developer Manual: http://docs.geoserver.org/
22
R
 R Script
 R is a free software programming language and a software
environment 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
23
R
 R Project: http://www.r-project.org
24
Summary
 공통
 각 GIS 엔진에서 지원하는 커스터마이징 방법은 다름
 최근 Python 중심으로 통합 추세지만 API는 Engine마다 다름
 Desktop
 사용자가 분석 스크립트(UI 포함) 생성 후 배포
 로컬 데이터 사용 용이
 Server
 배포 방식은 스크립트 Extension, Plugin, Customizing 등 엔진에 따라 지
원 방식이 다양함
 관리자가 분석 스크립트 생성 후 서버에 배포
 추가된 기능은 클라이언트(Web)에서 Mashup 하여 활용
 로컬 데이터 사용 어려움
 지원 포맷: GML, GeoJSON, TopoJSON…
 인코딩 된 포맷의 크기 제약
25

More Related Content

Customizing Gis Programs

  • 3. Customizing GIS Programs  ArcGIS 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 3
  • 4. ArcGIS for Desktop & Server  VBA(Deprecated) Script  ArcMap 또는 ArcCatalog 내에서 내장된 VBA 사용  ArcMap 문서(mxd 또는 mxt)에 저장되고 문서를 통해서 배포  VBA 를 이용해서 ArcObjects에 접근  10.1 버전부터 없어짐 4 http://map.sdsu.edu/geog104/images/unit-4/unit-4_image003_0000.png
  • 5. ArcGIS for Desktop & Server  .NET: Add-Ins  Microsoft Visual Studio를 이용하여 개발 후 바이너리 배포  Template 형태로 비교적 커스터마이징이 쉬움  Desktop Add-In Manager를 이용하여 관리 5
  • 6. ArcGIS for Desktop & Server  COM(VB, .NET, C++…)  Microsoft Visual Studio를 이용하여 개발 후 바이너리 배포  독자적인 설치 프로그램으로 배포 가능  독립된 Application도 개발 가능하며 고급 개발  기존 KOPSS 개발 방식 6
  • 7. ArcGIS for Desktop & Server  ArcPy : Python Window  콘솔창을 통해 객체 사용  스크립트 작성 후 스크립트 파일을 공유 7 >>> 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")
  • 8. ArcGIS for Desktop & Server  ArcPy Scripts  ArcPy 스크립트 작성 후 ArcToolbox에 import후 사용 8
  • 9. ArcGIS for Desktop & Server  ModelBuilder  ArcMap에 내장된 ModelBuilder를 이용한 GUI 기반의 툴박스  ArcToolbox 에 포함된 기능들을 사용 9
  • 10. ArcGIS for Desktop & Server  ArcGIS Server REST API  ArcGIS for Server 에서 제공하는 REST API  OGC 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 10
  • 11. ArcGIS for Desktop & Server  ESRI Support: http://support.esri.com 11
  • 12. Quantum GIS Desktop  Python Console  PyQGIS 콘솔창을 통해 객체 사용  스크립트 작성 후 스크립트 파일을 공유 12 >>> 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)
  • 13. Quantum GIS Desktop  Python Plugins  PyQGIS를 이용하여 플러그인 작성 및 배포  온라인 배포를 위해서 QGIS Plugin Repository에 등록 및 승인 13
  • 14. Quantum GIS Desktop  Python Applications  PyQGIS qgis_core, qgis_gui libraries를 QGIS 외부에서 사용 14
  • 15. Quantum GIS Desktop  Quantum GIS Plugin Repository: http://plugins.qgis.org/ 15
  • 16. uDig Desktop  Eclipse RCP Plug-in  플러그인 작성 Plug-in Repository를 통해 자동 설치 및 업데이트 16 http://www.mangosystem.com:8080/gxt/docs/gxt_for_desktop/udig/index.html
  • 17. uDig Desktop  Scripting Plug-in  GeoScript: Groovy 17 http://jgrasstechtips.blogspot.kr/2013/01/proposal-geoscript-console-in-udig.html
  • 18. uDig Desktop  Developing with uDig: http://udig.refractions.net/developers/ 18
  • 19. GeoServer  GeoTools Process  GeoTools 및 Java를 이용하여 Process 생성  GeoServer의 WPS Process로 사용하며 고급 customization  GeoTools의 모든 기능을 사용 및 확장 가능  GeoTools를 사용하는 Desktop 및 Server 모두 사용  http://docs.geotools.org/latest/userguide/unsupported/process/ index.html 19
  • 20. GeoServer  Python Extension  app, datastore, filter, format, lib, process  Jython script 20
  • 21. GeoServer  Scripting(GeoScript) Extension  Python, JavaScript, Groovy… 등 지원  Python extension과 유사 21
  • 22. GeoServer  User & Developer Manual: http://docs.geoserver.org/ 22
  • 23. R  R Script  R is a free software programming language and a software environment 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 23
  • 24. R  R Project: http://www.r-project.org 24
  • 25. Summary  공통  각 GIS 엔진에서 지원하는 커스터마이징 방법은 다름  최근 Python 중심으로 통합 추세지만 API는 Engine마다 다름  Desktop  사용자가 분석 스크립트(UI 포함) 생성 후 배포  로컬 데이터 사용 용이  Server  배포 방식은 스크립트 Extension, Plugin, Customizing 등 엔진에 따라 지 원 방식이 다양함  관리자가 분석 스크립트 생성 후 서버에 배포  추가된 기능은 클라이언트(Web)에서 Mashup 하여 활용  로컬 데이터 사용 어려움  지원 포맷: GML, GeoJSON, TopoJSON…  인코딩 된 포맷의 크기 제약 25