빅 데이터 지오 프로세싱을 최적화하기 위해 NumPy 어레이를 어떻게 활용할 수 있습니까?


16

지오 프로세싱을 최적화하기 위해 NumPy 어레이를 활용하는 방법을 배우고 싶습니다. 내 작업의 대부분은 지오 프로세싱이 특정 작업을 수행하는 데 며칠이 걸리는 "빅 데이터"와 관련됩니다. 말할 필요도없이, 나는 이러한 루틴을 최적화하는데 매우 관심이 있습니다. ArcGIS 10.1에는 다음을 포함하여 arcpy를 통해 액세스 할 수있는 많은 NumPy 기능이 있습니다.

  1. NumPyArrayToFeatureClass (arcpy.da)
  2. RasterToNumPyArray (arcpy)
  3. TableToNumPyArray (arcpy.da)

예를 들어 NumPy 어레이를 활용하여 다음과 같은 처리 집약적 인 워크 플로우를 최적화하고 싶다고 가정 해 보겠습니다.

여기에 이미지 설명을 입력하십시오

여기서 일반적인 아이디어는 벡터 및 래스터 기반 연산을 통해 이동하는 이진 정수 래스터 데이터 세트를 생성하는 수많은 벡터 기반 점이 있다는 것입니다.

이 유형의 워크 플로를 최적화하기 위해 NumPy 어레이를 어떻게 통합 할 수 있습니까?


2
참고로 NumPyArrayToRaster 함수와 FeatureClassToNumPyArray 함수도 있습니다.
blah238

2
ArcGIS를 사용한 멀티 프로세싱 블로그 게시물에는 여기에 적용될 수있는 유용한 정보가 있습니다. 다른 다중 처리 질문에 관심이있을 수도 있습니다 .
blah238

3
ArcPy에서 Numpy 사용에 대해 생각하기 전에 먼저 NumPy 배열이 Python 목록보다 어떤 이점을 제공하는지 이해해야합니다. Numpy의 범위는 ArcGIS보다 훨씬 넓습니다.
유전자

2
@ gene, 이 StackOverflow 답변 은 꽤 잘 요약 된 것 같습니다.
blah238

3
또한 Hadoop에 관심이있는 경우이 비디오Hadoop 용 GIS 도구
PolyGeo

답변:


3

여기서 질문의 요점은 워크 플로우의 어떤 작업이 실제로 ArcGIS에 의존하지 않는 것입니까? 명백한 후보에는 테이블 형식 및 래스터 작업이 포함됩니다. 데이터가 gdb 또는 다른 ESRI 형식으로 시작하고 끝나야하는 경우이 형식의 비용을 최소화하는 방법 (예 : 왕복 횟수를 최소화하는 방법)을 이해하거나 심지어 정당화해야합니다. 합리화하는 데 많은 비용이 듭니다. 또 다른 전술은 파이썬 친화적 인 데이터 모델을 일찍 사용하도록 워크 플로를 수정하는 것입니다 (예 : 벡터 다각형을 얼마나 빨리 버릴 수 있습니까?).

@gene을 반향하기 위해 numpy / scipy는 정말 훌륭하지만 이것이 유일한 접근 방법이라고 가정하지 마십시오. @ blah238의 링크는 효율성 차이에 대해 명확하지만 목록, 집합, 사전을 대체 구조로 사용할 수도 있지만, 생성기, 반복자 및 이러한 구조를 파이썬으로 작업하는 데 필요한 모든 종류의 훌륭하고 빠르고 효율적인 도구도 있습니다. Python 개발자 중 하나 인 Raymond Hettinger는 모든 종류의 훌륭한 일반 Python 콘텐츠를 보유하고 있습니다. 이 비디오는 좋은 예 입니다.

또한 멀티플렉싱 처리에 대한 @ blah238의 아이디어를 더하기 위해 "일반적인 파이썬 환경뿐만 아니라 IPython 내에서 작성 / 실행하는 경우" "병렬"패키지를 사용하여 여러 코어를 활용할 수 있습니다. 나는이 물건에 별거 아니지 만, 다중 처리 물건보다 약간 높은 수준 / 초보자에게 친숙하다는 것을 알 수 있습니다. 아마도 실제로는 개인 종교의 문제 일 것이므로 소금 한 알로 가져 가십시오. 이 비디오에서 2:13:00에 시작하는 것에 대한 좋은 개요가 있습니다 . 전체 비디오는 일반적으로 IPython에 좋습니다.

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