Aşağıdaki iş akışı boyunca şekil alanlarını almak için tasarlanmış Python kodum var:
- Birleştirme noktaları
- Noktaları birleştirin, böylece birbirinden 1 m uzaklıktaki herhangi bir nokta bir nokta haline gelir
- Z <10 olan noktaların seçili olduğu Özellik katmanı oluştur
- Tampon Noktaları
- Çokgenden rastere 1m çözünürlük
- Yeniden sınıflandırma, burada 1 - 9 = 1; NoData = 0
Her şekil dosyası ~ 5x7 km'yi kapsayan yaklaşık 250.000 ila 350.000 noktaya sahiptir. Giriş olarak kullanılan nokta verileri, ağaç konumlarını temsil eder. Her nokta (yani ağaç), taç yarıçapını temsil eden ve tampon işleminde kullanılan ilişkili bir "z" değerine sahiptir. Niyetim, nihai ikili çıktıyı, gölgelik kapağını tanımlayan bir raster üretmek için ayrı bir işlemde kullanmaktır.
Dört şekil dosyasıyla bir test yaptım ve 700 MB raster üretti ve 35 dakika sürdü (i5 işlemci ve 8 GB RAM). Bu işlemi 3500 form dosyasında çalıştırmam gerekeceğini görünce, süreci kolaylaştırmak için herhangi bir tavsiyede bulunmak isterim (ekli koda bakınız). Genel olarak konuşursak, coğrafi işlem yapan büyük verilerle başa çıkmanın en iyi yolu nedir? Daha spesifik olarak, verimliliği arttırmaya yardımcı olabilecek kodda veya iş akışında herhangi bir değişiklik var mı?
Düzenle :
Coğrafi işleme görevleri için süre (toplamın% 'si):
- Birleştirme =% 7.6
- Entegre =% 7.1
- Lyr özelliği = 0
- Tampon =% 8,8
- Poli-Raster = % 74,8
- Yeniden sınıflandırma =% 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")