다음 워크 플로를 통해 포인트 셰이프 파일을 가져 오도록 설계된 Python 코드가 있습니다.
- 포인트 병합
- 서로 1m 이내의 포인트가 하나의 포인트가되도록 포인트 통합
- z <10 인 점이 선택되는 피처 레이어 작성
- 버퍼 포인트
- 1m 해상도의 래스터
- 재 분류, 여기서 1-9 = 1; 데이터 없음 = 0
각 쉐이프 파일은 ~ 5x7 km를 덮는 약 250,000 ~ 350,000 포인트가 있습니다. 입력으로 사용 된 점 데이터는 트리 위치를 나타냅니다. 각 포인트 (즉, 트리)는 크라운 반경을 나타내며 버퍼 프로세스에 사용되는 관련 "z"값을가집니다. 내 의도는 최종 바이너리 출력을 별도의 프로세스에서 사용하여 캐노피 덮개를 설명하는 래스터를 생성하는 것입니다.
4 개의 shapefile로 테스트를 실행했으며 700MB 래스터를 생성하고 35 분이 걸렸습니다 (i5 프로세서 및 8GB RAM). 3500 셰이프 파일에서이 프로세스를 실행해야한다는 것을 알면서 프로세스를 간소화하는 조언을 부탁드립니다 (첨부 된 코드 참조). 일반적으로 빅 데이터의 지오 프로세싱을 처리하는 가장 좋은 방법은 무엇입니까? 보다 구체적으로, 효율성을 높이는 데 도움이 될 수있는 코드 또는 워크 플로우에 대한 조정이 있습니까?
편집 :
지오 프로세싱 작업을위한 시간 (전체의 %) :
- 병합 = 7.6 %
- 적분 = 7.1 %
- 거짓말하는 기능 = 0
- 버퍼 = 8.8 %
- 폴리-래스터 = 74.8 %
- 재 분류 = 1.6 %
# Import arcpy module
import arcpy
# Check out any necessary licenses
arcpy.CheckOutExtension("spatial")
# Script arguments
temp4 = arcpy.GetParameterAsText(0)
if temp4 == '#' or not temp4:
temp4 = "C:\\gdrive\\temp\\temp4" # provide a default value if unspecified
Reclassification = arcpy.GetParameterAsText(1)
if Reclassification == '#' or not Reclassification:
Reclassification = "1 9 1;NODATA 0" # provide a default value if unspecified
Multiple_Value = arcpy.GetParameterAsText(2)
if Multiple_Value == '#' or not Multiple_Value:
Multiple_Value = "C:\\t1.shp;C:\\t2.shp;C:\\t3.shp;C:\\t4.shp" # provide a default value if unspecified
# Local variables:
temp_shp = Multiple_Value
Output_Features = temp_shp
temp2_Layer = Output_Features
temp_Buffer = temp2_Layer
temp3 = temp_Buffer
# Process: Merge
arcpy.Merge_management(Multiple_Value, temp_shp, "x \"x\" true true false 19 Double 0 0 ,First,#,C:\\#########omitted to save space
# Process: Integrate
arcpy.Integrate_management("C:\\gdrive\\temp\\temp.shp #", "1 Meters")
# Process: Make Feature Layer
arcpy.MakeFeatureLayer_management(temp_shp, temp2_Layer, "z <10", "", "x x VISIBLE NONE;y y VISIBLE NONE;z z VISIBLE NONE;Buffer Buffer VISIBLE NONE")
# Process: Buffer
arcpy.Buffer_analysis(temp2_Layer, temp_Buffer, "z", "FULL", "ROUND", "NONE", "")
# Process: Polygon to Raster
arcpy.PolygonToRaster_conversion(temp_Buffer, "BUFF_DIST", temp3, "CELL_CENTER", "NONE", "1")
# Process: Reclassify
arcpy.gp.Reclassify_sa(temp3, "Value", Reclassification, temp4, "DATA")