Ich habe Python-Code, der so konzipiert ist, dass er Punkt-Shapefiles durch den folgenden Workflow nimmt:
- Punkte zusammenführen
- Integrieren Sie Punkte so, dass alle Punkte innerhalb von 1 m zu einem Punkt werden
- Feature-Layer erstellen, in dem Punkte mit z <10 ausgewählt werden
- Pufferpunkte
- Polygon bis Raster 1 m Auflösung
- Reklassifizieren, wobei 1 - 9 = 1; NoData = 0
Jedes Shapefile hat ungefähr 250.000 bis 350.000 Punkte auf einer Fläche von ca. 5 x 7 km. Als Eingaben verwendete Punktdaten repräsentieren Baumpositionen. Jedem Punkt (dh Baum) ist ein "z" -Wert zugeordnet, der den Kronenradius darstellt und im Pufferprozess verwendet wird. Ich beabsichtige, die endgültige Binärausgabe in einem separaten Prozess zu verwenden, um ein Raster zu erstellen, das die Überdachung beschreibt.
Ich habe einen Test mit vier Shapefiles durchgeführt und dabei ein Raster von 700 MB erstellt. Der Test dauerte 35 Minuten (i5-Prozessor und 8 GB RAM). Da ich diesen Prozess für 3500 Shapefiles ausführen muss, würde ich mich über jeden Rat freuen, um den Prozess zu rationalisieren (siehe beigefügten Code). Was ist im Allgemeinen der beste Weg, um mit der Geoverarbeitung von Big Data umzugehen? Gibt es irgendwelche Änderungen am Code oder Workflow, die zur Steigerung der Effizienz beitragen könnten?
Bearbeiten :
Zeit (% der Gesamtsumme) für Geoverarbeitungsaufgaben:
- Zusammenführung = 7,6%
- Integrieren = 7,1%
- Merkmal zu Lyr = 0
- Puffer = 8,8%
- Poly zu Raster = 74,8%
- Reklassifizieren = 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")