지오 프로세싱을 위해 Python에서 ArcPy를 사용하는 산업 기반의 예?


12

최근 GIS Analyst / Developer가 ArcGIS 및 ArcPy 사이트 패키지에서 지오 프로세싱과 함께 Python을 사용하여 자동화하려는 유형의 작업에 대해 일부 학생들에게 질문했습니다. 본인이 만든 것이 산업과 관련이 있고 나중에 이미 직장에서 재사용 될 수 있도록하기 위해 몇 가지 연습을 검색 할 때 알아두면 도움이 될 것입니다.

가장 쉬운 대답은 "Esri 도움말을 읽고 샘플을 살펴 보는 것"이지만, 가장 일반적인 구현 시나리오를 찾고있었습니다. 따라서 워크 플로우 공유는 "모양 파일이있는 .zip 파일을 가져오고, 파이썬을 사용하여 압축을 풀고, X 좌표 시스템에 모두 투영하고, ArcSDE 지오 데이터베이스에로드하고, 사용자에게 이러한 데이터에 대한 액세스 권한을 부여합니다." 워크 플로우에 대한 간결한 설명을 제공하기 위해 편안하게 느끼십시오. 세부적인 사항은 필요하지 않습니다.

답변:


10

나에게, 귀하의 질문에서 알 수 있듯이, 특히 일괄 처리를 자동화하고 반복 가능한 전문가 계산을 만들기 위해 Python을 많이 사용합니다. 저는 프리랜서 GIS 컨설턴트로서 ESRI 라이센스를 감당할 수 없기 때문에 ArcPy를 사용하지 않습니다. GDAL / OGR, Shapely, PostGIS, Numpy 및 SciPy를 많이 사용하지만 내 목록의 모든 항목은 ArcPy로 수행 할 수 있습니다 (그중 일부는 가능합니다). 예를 들면 다음과 같습니다.

  1. 영국 전역에 대한 영역 통계를 도출하여 먼저 두 가지 데이터 유형의 20km 래스터 타일을 모자이크 처리해야합니다. 래스터에 대해 일부 "수학"을 수행하고 10km 벡터 다각형 타일의 해당 영역을 병합하고 결과의 구역 통계를 계산합니다. 논리 디렉토리 구조의 shapefile로 출력하고 클라이언트의 CD로 굽기 전에 래스터 맵을 작성하고 통계 테이블을 원래 벡터 데이터에 결합합니다.
  2. 도로 또는 트랙을 따라 100m마다 순차적 가시성 계산을 수행 한 다음 계산 결과를 다시 경로 데이터에서 M 값으로 할당합니다.
  3. 래스터 및 벡터 데이터 타일을 모자이크 처리 / 병합하여 필요한 영역으로 클리핑 한 다음 독점 (GIS 이외의) 3D 형식으로 변환하여 3D 가로 모델을 작성하는 자동화 된 프로세스. 나는 프리랜서 작업에서 이것을 위해 개발 한 작은 파이썬 라이브러리를 사용합니다.
  4. 내가 팀에서 작업 한 거대한 프로젝트 중 하나는 ArcPy를 사용하여 배치 프로세스를 만들어 GIS 데이터에서 새로운 컴퓨터 데이터를 절차적인 컴퓨터 게임 자산 생성기에서 사용할 수있는 형식으로 변환하거나 파생시키는 형식으로 만들었습니다. 지오 프로세싱 스크립트는 파이썬으로 작성되고 Django를 통해 실행되는 일괄 처리 '슬레이브 드라이버'에 의해 호출되었습니다.
  5. 파이썬은 작은 작업, 특히 반복되는 기능 (예 : 기능 처리 별 기능)이있는 경우에도 매우 유용합니다. ArcGIS의 Model Builder는 버전 10에 포함 된 흐름 제어 기능으로 훨씬 개선되었지만 여전히 필요한 제어 기능을 제공 할 수 없거나 ArcPy에서 프로세스를 작성하는 것보다 더 빠르고 쉽습니다. 강제 모델 빌더.
  6. 나는 스윕 경로 분석을 수행하기 위해 Python에서 도구를 만들었습니다. 병기고.
  7. Mapnik에서 출력 생성
  8. ArcGIS가 멀티 스레딩되기 전에 Python을 사용하여 하위 프로세스를 생성 할 수있었습니다. 하위 프로세스는 때때로 ArcMap의 오버 헤드없이 메모리를 어지럽히 지 않고서도 길고 느린 계산 속도를 높일 수있었습니다.

상용 지오 프로세싱의 파이썬은 파이썬이 제공하는 스크립팅의 모든 속도와 간결함과 컴파일 된 C 스타일 코드 처리 속도가 제공하기 때문에 훌륭합니다. 파이썬이 해석되는 동안 대부분 컴파일 된 C 스타일 코드를 호출하기 때문입니다. 파이썬은 많은 순차적 지리 처리 작업을 함께 수행 할 수있는 접착제를 제공하며 위의 목록은 제가 개인적으로 사용하는 것 중 일부에 대한 작은 스냅 샷입니다. 'Good Old Days'에서 Watch 파일을 설정하고 ArcInfo에 명령 줄 입력을 기록한 다음 AML (Arc Macro Language를 기억하는 사람!)을 정리하여 AML과 함께 지리 처리 호출을 재사용 할 수있는 프로세스를 만듭니다. 파이썬이나 C #을 접착제로 사용한다는 점을 제외하면 요즘 그렇게 다르지 않습니다.


1
Funilly 충분히 방금이 질문에 대답했습니다 ( gis.stackexchange.com/questions/52478/…)-ArcGIS 메모리 누수를 꺾는 방법으로 Python을 사용하는 또 다른 예를 제공합니다!
MappaGnosis

+1, 특히 # 4에 관한 GIS.SE 블로그 주제 를보고 싶습니다 .
blah238

1
회사는 현재 기능이 떨어지고 얼마 전에 떠났지만 다른 회사가 IP를 구입하여 어떻게 명시 적인지 알 수 없었습니다. 어쨌든, 위의 내 의견에있는 링크에서 내 대답에서 멀티 프로세싱 측면에 대한 단서를 얻을 수 있습니다. 또한 지리 처리 팜에는 16 코어 시스템, 2 개의 8 코어 서버 및 약 12 ​​개의 '종료 된'듀얼 코어 PC가 모두 슬레이브 드라이버에 의해 실행되었다고 덧붙일 수 있습니다. ESRI는 일부 사람들에게 와서 ArcServer를 사용하지 않았기 때문에 우리가 한 일을 살펴 보았습니다. 우리는 기계를 너무 세게 달아서 두 명도 불을 붙였습니다!
MappaGnosis

7

어디에서 시작해야합니까? 저는 현재 고등 교육 기관 / 주 정부에서 일하고 있지만 엔터프라이즈에서 파이썬을 강력하게지지합니다. 다음은 파이썬에서 사용한 작업의 예입니다.

  1. 데이터 이동 일상적으로 데이터를 이동하는 것과 같은 매우 간단한 작업은 Python, 특히 shutil모듈을 사용하여 매우 쉽게 자동화 할 수 있습니다 .
  2. 피처 클래스를 ArcSDE 데이터베이스에서 셰이프 파일로 내보내 다른 소프트웨어 패키지에서 사용할 수 있습니다. ArcSDE (또는 다른 관계형 데이터베이스)는 종종 조직의 마스터 레코드이지만 모든 소프트웨어 패키지가 데이터베이스에 연결되는 것은 아닙니다. 많은 패키지는 여전히 좋은 ole shapefile을 소비하며을 사용 arcpy하면 밤새 내보내는 것이 번거롭지 않으므로 사용자가 최신 데이터를 가질 수 있습니다.
  3. 이종 데이터 집합에서 공간 데이터 집합 만들기 기업의 모든 직원은 Excel을 사용하여 데이터를 보유합니다. 로 arcpy(또는 다른 방법 파이썬)는 공간 구성 요소가 그 테이블 형식의 데이터를 가지고 신속하게 공간으로부터 데이터 세트를 생성하기 쉽다. 텍스트 파일도 마찬가지입니다. 저는 최근 독점 XYZ 형식의 텍스트 파일을 읽고 ZM 지원 폴리 라인을 만드는 클라이언트 용 ArcToolbox 도구를 만들었습니다 (실제로 그보다 많은 것을 공유 할 수는 없습니다).
  4. GIS 데이터를 변환 하여 "공간적"조차도 모르는 소프트웨어에 공급할 수 있습니다. 현재 GIS 데이터 세트 (래스터, 벡터)를 사용하여 Python API를 통해 3D 모델링 프로그램으로 데이터를 푸시하는 도구를 작성 중입니다. 이 3D 패키지는 공간 데이터 형식에는 전혀 작동하지 않지만 공간 데이터 뒤에있는 텍스트 값 및 속성에는 작동 할 수 있습니다. 이를 위해 arcpy지리 데이터베이스에서 정보 를 가져 와서 텍스트 파일이나 XML 구성 파일로 푸시합니다.
  5. 데이터를 가져 오는 중. 필요한 데이터 테이블이 있는 웹 사이트 가 있습니까? 사용하여 beautifulsoup압축을 풉니 다. 가져와야하는 수백 또는 수천 개의 파일이있는 FTP 사이트가 있습니까? urllib2또는 ftplib을 사용 하여 쉽게 다운로드 하십시오 .

몇 가지 예일뿐입니다. 엔터프라이즈에서 Python의 장점은 컴퓨터에 대한 모든 관리자 권한이없는 경우에도 여전히 상당한 성과를 거둘 수 있다는 것입니다. 이를 부드러운 학습 곡선과 파이썬의 가독성과 결합하면 프로그래밍 경험이 많지 않은 GIS Tech / Analyst를위한 훌륭한 자동화 도구가 있습니다.


6

저는 지방 자치 단체에서 일하고 있으며 GIS 갱은 우리의 다양한 부서 (엔지니어링, 건물 검사, 조례, 공원, 화재 등)를 지원합니다.

  1. 소포 및 시민 주소 정보 업데이트 공간 데이터와 속성 데이터를 모두 다루는 다소 긴 스크립트가 있습니다. 공간 데이터를 수행하기 위해 다양한 지오 프로세싱 도구를 사용하고 관계형 데이터베이스에 연결 한 다음 공간 데이터에 연결되는 정보를 가져옵니다.
  2. 맞춤형 도구. 비 GIS 직원 중 일부를 위해 새로운 Python 추가 기능 마법사 를 사용하여 사용자 지정 도구를 만들었습니다 . 직원 중 일부는 공간 데이터를 읽고 기본적인 조작을 수행해야합니다. 우리는 ArcGIS 환경의 장에 들어 가지 않고도 필요한 모든 것을 할 수있는 툴바를 설계했습니다.

다른 사람들이 말했듯이, 이것은 몇 가지 예일뿐입니다.

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