Tôi có mã Python được thiết kế để lấy các shapefiles điểm thông qua quy trình làm việc sau:
- Hợp nhất điểm
- Tích hợp các điểm sao cho các điểm trong phạm vi 1 m của nhau trở thành một điểm
- Tạo lớp Feature, trong đó các điểm có z <10 được chọn
- Điểm đệm
- Độ phân giải đa giác đến raster 1m
- Phân loại lại, trong đó 1 - 9 = 1; NoData = 0
Mỗi shapefile có khoảng 250.000 đến 350.000 điểm bao gồm ~ 5x7 km. Dữ liệu điểm được sử dụng làm đầu vào đại diện cho vị trí của cây. Mỗi điểm (tức là cây) có giá trị "z" liên quan đại diện cho bán kính vương miện và được sử dụng trong quá trình đệm. Mục đích của tôi là sử dụng đầu ra nhị phân cuối cùng trong một quy trình riêng biệt để tạo ra một raster mô tả che phủ tán cây.
Tôi đã chạy thử nghiệm với bốn shapefiles và nó tạo ra raster 700 MB và mất 35 phút (bộ xử lý i5 & RAM 8GB). Thấy rằng tôi sẽ cần chạy quy trình này trên 3500 shapefiles, tôi sẽ đánh giá cao bất kỳ lời khuyên nào để hợp lý hóa quy trình (xem mã đính kèm). Nói chung, cách tốt nhất để đối phó với xử lý địa lý dữ liệu lớn là gì? Cụ thể hơn, có bất kỳ điều chỉnh nào cho mã hoặc quy trình làm việc có thể giúp tăng hiệu quả không?
Chỉnh sửa :
Thời gian (% tổng số) cho các nhiệm vụ xử lý địa lý:
- Hợp nhất = 7,6%
- Tích hợp = 7.1%
- Tính năng cho Lyr = 0
- Bộ đệm = 8,8%
- Poly đến Raster = 74,8%
- Phân loại lại = 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")