GIS 용 Python 도구 / 모듈 / 추가 기능을 찾고 계십니까?


31

ArcGIS 10에서 Python은 ESRI의 사실상의 스크립팅 언어가되었습니다. QGIS, GeoServer, PostGIS와 같은 최고의 오픈 소스 소프트웨어는 모두 Python을 지원합니다. 따라서 GIS 개발자와 사용자를 위해 Python을 알고 배우는 것이 중요해졌습니다.

누구나 GIS에 중요한 Python에서 이러한 도구 / 모듈 / 애드 인 목록을 만들 수 있습니까?


10
이 질문은 너무 광범위해서 파이썬을 지원하는 모든 GIS에서 사용할 수있는 파이썬 패키지로 제한되어야한다고 생각합니다.
underdark

4
ArcPy는 진정한 파이썬 모듈입니까?
Mapperz

2
@Mapperz 실제로 사이트 패키지입니다. 선행 작업 arcgisscripting은 모듈입니다. help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//…
blah238

3
@ underdark-좋은 광범위한 질문을하는 것이 유용 할 수 있다고 생각합니다. 이 경우 누군가가 사용할 파이썬 툴셋에 대한 인터넷 검색을 시작할 때 검색 엔진이 찾을 수있는 중앙 리소스를 제공합니다.
GIS-Jonathan

2
너무 넓은 경우 +1 질문과 가장 관련이있는 답변은 [tag:python] + [tag:my-software]검색 이 끝나면 투표자주 묻는 질문 탭을 통해 정렬됩니다 . 여기의 답변은 결코 그와 일치하기를 바랍니다.
matt wilkie

답변:


38
  • NumPy : NumPy는 Python을 사용한 과학 컴퓨팅의 기본 패키지입니다. 그것은 다른 것들을 포함합니다 :

    • 강력한 N 차원 배열 객체
    • 정교한 (방송) 기능
    • C / C ++ 및 Fortran 코드 통합을위한 도구
    • 유용한 선형 대수, 푸리에 변환 및 난수 기능

    명백한 과학적 용도 외에도 NumPy는 일반 데이터의 효율적인 다차원 컨테이너로 사용될 수 있습니다. 임의의 데이터 유형을 정의 할 수 있습니다. 이를 통해 NumPy는 다양한 데이터베이스와 원활하고 신속하게 통합 할 수 있습니다.

  • SciPy : SciPy ( "Sigh Pie"로 발음)는 수학, 과학 및 공학을위한 오픈 소스 소프트웨어입니다. 또한 파이썬을 이용한 과학적 프로그래밍에 관한 매우 인기있는 컨퍼런스 의 이름이기도합니다 . SciPy 라이브러리는 NumPy에 의존합니다편리하고 빠른 N 차원 배열 조작을 제공합니다. SciPy 라이브러리는 NumPy 배열과 함께 작동하도록 만들어졌으며, 숫자 통합 및 최적화 루틴과 같은 사용자 친화적이고 효율적인 숫자 루틴을 제공합니다. 이 소프트웨어는 모두 널리 사용되는 모든 운영 체제에서 실행되며 설치가 빠르고 무료입니다. NumPy와 SciPy는 사용하기 쉽지만 세계 최고의 과학자 및 엔지니어의 도움을받을만큼 강력합니다. 컴퓨터에서 숫자를 조작하고 결과를 표시하거나 게시해야하는 경우 SciPy를 사용해보십시오!

  • Shapely : Shapely는 평면 기하 객체의 조작 및 분석을위한 BSD 라이센스 Python 패키지입니다. 널리 배포 된 GEOS (PostGIS 엔진) 및 JTS (GEOS가 이식되는) 라이브러리를 기반으로합니다. 이 C 의존성은 타오르는 속도로 실행되는 능력으로 거래됩니다. Shapely는 데이터 형식이나 좌표계와 관련이 없지만 패키지와 쉽게 통합 될 수 있습니다.

  • GDAL Python 바인딩 :이 Python 패키지 및 확장은 GDAL 지리 공간 데이터 추상화 라이브러리 를 프로그래밍하고 조작하기위한 여러 도구입니다 .

  • GeoDjango : GeoDjango는 세계적인 지리적 웹 프레임 워크가 되고자합니다. 목표는 가능한 한 쉽게 GIS 웹 애플리케이션을 구축하고 공간적으로 활성화 된 데이터의 힘을 활용하는 것입니다.
  • 파이프로
  • SpatialPython : 문서화 된 github 저장소.

이 오래된 답변을보고있는 사람을 위해 적극적으로 개발 된 geopandas.org 라이브러리를 추가 할 것입니다 !
clifgray

11

내 자신의 질문에 대답하기 위해 방금이 Pythons 모듈을 찾았습니다. 아직 사용하지는 않았지만 흥미 진진합니다.

NetworkX 는 복잡한 네트워크의 구조, 역학 및 기능을 작성, 조작 및 연구하기위한 Python 언어 소프트웨어 패키지입니다.

rtree -Python GIS의 공간 인덱스


10

Topic :: Scientific / Engineering :: GIS 로 이동하십시오. GIS에 대한 모든 Python 모듈이 있습니다 (shapefile, 래스터, KML, GML, GPX 지오 코딩 등을위한).

가장 중요한 것은 이미 언급되었지만 Fiona를 추천 합니다. " Fiona는 오픈 소스 GIS 커뮤니티의 가장 신뢰할 수있는 지리 데이터 액세스 라이브러리에 최소한의 복잡하지 않은 Python 인터페이스를 제공하며 pyproj, Rtree 및 Shapely와 같은 다른 Python GIS 패키지와 쉽게 통합됩니다. "

그리고 shapefile을 가진 네트워킹 또는 Networkx 모듈을 가진 Esri Feature Class를 가진 Esri Feature Class 기하학적 네트워크 지오 프로세싱 : " ESRI는 지오메트리 네트워크를위한 지오 프로세싱 툴을 출시하지 않았습니다 "또는 pgRouting 또는 Python의 대안 : 셰이프 파일을 변환하는 방법 토폴로지 네트워크 (그래프)의 기능 클래스 ESRI) (프랑스어)

import networkx as nx
G = nx.read_shp('pointshapefile.shp')
print(G.nodes())
# result [(1.0, 2.0), (3.0, 2.0), (0.0, 0.0), (3.0, 1.0), (4.0, 4.0), (2.0, 1.0), (2.0, 4.0), (1.0, 3.0), (2.0, 3.0), (1.0, 4.0), (4.0, 3.0), (4.0, 2.0), (3.0, 4.0), (1.0, 1.0)]
print(G.edges())
# result [((1.0, 2.0), (1.0, 1.0)), ((3.0, 2.0), (2.0, 1.0)), ((3.0, 1.0), (2.0, 1.0)), ((4.0, 4.0), (3.0, 4.0)), ((2.0, 1.0), (1.0, 1.0)), ((2.0, 4.0), (2.0, 3.0)), ((1.0, 3.0), (1.0, 2.0)), ((2.0, 3.0), (1.0, 2.0)), ((1.0, 4.0), (1.0, 3.0)), ((4.0, 3.0), (4.0, 2.0)), ((4.0, 2.0), (3.0, 2.0)), ((3.0, 4.0), (2.0, 3.0)), ((1.0, 1.0), (0.0, 0.0))]

# shortest path
print(nx.astar_path(H,(1.0, 4.0),(4.0, 2.0),dist))
# result [(1.0, 4.0), (1.0, 3.0), (1.0, 2.0), (2.0, 3.0), (3.0, 2.0), (4.0, 2.0)]

# and so with all the algorithms of Networkx module
# you can also export the results in shapefile format

QGIS 및 GRASS GIS에서 Shapely, Fiona, GDAL / OGR, Pyshp, Networkx 및 기타를 문제없이 사용합니다 ( 대화식 그래프를 위해 matplotlib 또는 descartes 사용 ). 그들은 종종 치료에 사용하기 쉬운 알고리즘을 가지고 있습니다.

ArcPy에서 오래된 Numpy 버전 1.3 (현재 버전 1.6.1 ...)을 사용하고 ArcPy 모듈을 손상시키지 않고는 업데이트 할 수 없기 때문에 이러한 모듈 중 일부는 ArcPy에서 문제와 함께 사용할 수도 있습니다.



7

목록에 추가 :

PySAL- "공간 분석 기능의 오픈 소스 크로스 플랫폼 라이브러리"

http://code.google.com/p/pysal/ 에서 사용 가능

pyshp-순수한 파이썬에서 파이썬 shapefile 리더 및 작가

http://code.google.com/p/pyshp/ 에서 사용 가능

편집하다:

누군가 오늘이 모듈을 보여주었습니다. 파이썬 사용을위한 샘플 GIS 벡터 및 래스터 데이터 :

gisdata- http: //pypi.python.org/pypi/gisdata/0.3.3


5

PDF 형식의 문서를 프로그래밍 방식으로 작성하기위한 오픈 소스 PDF 라이브러리 인 ReportLab Toolkit을 사용하고 권장 합니다. 해당 페이지에 광고 된 바와 같이 강력하고 유연하며 시간이 입증 된 업계 최고의 솔루션입니다. 파이썬으로 작성된 무료 오픈 소스 소프트웨어이지만 구문은 내가 다루는 것 중 가장 쉬운 것은 아닙니다 :-)

ArcGIS 10.0에서는 ArcGIS 보고서 작성기에서 PDF 보고서에 액세스 할 수있게되면 10.1에서 일부 기능이 필요하지 않을 수 있지만 피쳐 클래스 및 테이블에서 PDF 형식으로 보고서를 작성하는 데 매우 중요합니다.


pdfgen패키지 를 사용 platypus합니까? JPEG와 텍스트로 보고서를 작성해야하지만 너무 화려하지는 않습니다.
차드 쿠퍼

나는 오리너구리를 사용하며 셀에 텍스트가있는 테이블을 출력해야합니다 (이미지 없음).
PolyGeo


2

아직 더 있습니다 :

GRASS- 파이썬으로 GRASS를 호출 할 수 있습니다.

FMEObjects -FME 라이센스가 있으면 파이썬 모듈도있어 멋진 트랜스포머를 호출 할 수 있습니다.


정말? 내가 아는 FMEObjects에는 변환기 호출을위한 Python 바인딩이 없습니다. 나는 정말로 그것을 바란다. 알고 있고 해당 API에 액세스하는 방법을 알고 있다면 알려주십시오. 그것은 현재 내 인생을 훨씬 더 쉽게 만들 것입니다.
celticflute

1

Enthought Package Distribution에는 위에 나열된 많은 패키지가 응집력있는 플랫폼으로 묶여 있습니다. 그들은 심지어 ArcGIS의 python prompt에서 작동하도록 쉽게 구성 할 수 있고 python prompt arcpy에서 사용할 수 있음을 확인했습니다. 우리는 이것을 사무실에서 사용합니다. 내부 위키에서 :

ArcGIS와 EPD를 연결하는 가장 좋은 방법은 둘 다 설치하고 .pth 파일을 사용하여 연결하여 Python sys.path에 다른 시스템의 모듈이 포함되도록하는 것입니다. "zzEPD.pth"파일을 사용하면 ArcGIS Python이 EPD 모듈에 액세스 할 수 있으며 "zzArcGIS.pth"를 사용하면 EPD Python이 arcpy에 액세스 할 수 있습니다. ( "zz"접두어는 "외부"패키지가 sys.path의 마지막 위치에 있도록하여 두 Python 설치 모두에 존재하는 모듈의 충돌 가능성을 방지합니다.) ArcGIS 충돌이 발생하면 파일 이름을로 바꿉니다. txt ( "zzEPD.pth.txt")를 다시 시작하고 ArcGIS를 다시 시작하면 ArcGIS는 더 이상 EPD 모듈을 "참조"하지 않습니다 (sys.path에 없음).

* zzEPD.pth-\ Python27 \ Desktop10.1 \ lib \ site-packages 폴더에 위치 *

# zzEPD.pth 
# Path to Enthought modules
C:\Python27\epd32\lib\site-packages

* zzArcGIS.pth-\ Python27 \ epd32 \ lib \ site-packages 폴더에 위치 *

# zzArcGIS.pth 
# copy of \Python27\Desktop10.1\lib\site-packages\ArcGIS.pth
C:\ArcGIS\Desktop10.1\bin
C:\ArcGIS\Desktop10.1\arcpy
C:\ArcGIS\Desktop10.1\ArcToolbox\Scripts

1

GIS에만 국한된 것이 아니라 파이썬을 디버깅하는 IPDB것은 놀랍습니다. https://pypi.python.org/pypi/ipdb

사용하려면 코드에 다음 줄을 넣으십시오.

import ipdb
ipdb.set_trace()

그런 다음 Python 셸에서 모든 코드 조각에 드롭하고 해당 현재 상태의 모든 변수와 상호 작용할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.