Saya memiliki kode Python yang dirancang untuk mengambil titik shapefile melalui alur kerja berikut:
- Gabungkan poin
- Mengintegrasikan poin, sehingga setiap titik dalam 1 m satu sama lain menjadi satu poin
- Buat layer Fitur, di mana titik dengan z <10 dipilih
- Poin Buffer
- Resolusi Polygon to raster 1m
- Reklasifikasi, di mana 1 - 9 = 1; NoData = 0
Setiap shapefile memiliki sekitar 250.000 hingga 350.000 titik yang mencakup ~ 5x7 km. Data titik yang digunakan sebagai input mewakili lokasi pohon. Setiap titik (yaitu pohon) memiliki nilai "z" yang terkait yang mewakili radius mahkota dan digunakan dalam proses buffer. Maksud saya adalah menggunakan hasil akhir biner dalam proses terpisah untuk menghasilkan raster yang menggambarkan penutup kanopi.
Saya menjalankan tes dengan empat shapefile dan menghasilkan raster 700MB dan membutuhkan waktu 35 menit (prosesor i5 & 8GB RAM). Melihat bahwa saya perlu menjalankan proses ini pada 3500 shapefile, saya akan sangat menghargai saran untuk merampingkan proses (lihat kode terlampir). Secara umum, apa cara terbaik untuk menangani data besar geoproses? Lebih khusus lagi, apakah ada perubahan pada kode atau alur kerja yang dapat membantu meningkatkan efisiensi?
Edit :
Waktu (% dari total) untuk tugas geoproses:
- Gabung = 7,6%
- Integrasi = 7,1%
- Fitur untuk Lyr = 0
- Buffer = 8,8%
- Poli ke Raster = 74,8%
- Reklasifikasi = 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")