Saya telah mengamati kinerja yang tidak biasa dengan skrip geoproses Python. Skrip (terlampir) melakukan tindakan berikut:
- Gunakan kursor pencarian untuk mencari zona UTM yang sesuai dengan fitur poligon
- Buat objek referensi spasial berdasarkan hasil kursor pencarian
- Konversikan .csv ke lapisan fitur dan kemudian ke kelas fitur titik
Saya perhatikan waktu pemrosesan yang sangat berbeda berdasarkan pada bagaimana skrip dijalankan:
- Pemrosesan 32-bit menggunakan IDLE = 203 detik
- Alat skrip foreground pemrosesan 32-bit = 91 detik
- Alat skrip latar belakang pemrosesan 64-bit = 206 detik
Mengapa skrip ini tampil sangat berbeda mengingat kondisi di atas? Saya tentu tidak akan mengharapkan alat skrip 32-bit berjalan di latar depan menjadi 2X secepat metode lainnya.
import arcpy, os, time
###IDLE Parameters
##fc = r'C:\path\to\polygon\fc\with\utm\zones\and\features'
##outws = r'C:\out\location'
##arcpy.env.workspace = r'C:\workspace'
####################
## Script tool parameters
fc = arcpy.GetParameterAsText(0) # Feature class
outws = arcpy.GetParameterAsText(1) # Folder
arcpy.env.workspace = arcpy.GetParameterAsText(2) # Workspace
####################
# Tables are .csv
tables = arcpy.ListTables()
start = time.clock()
# Look up which UTM zone .csv features are in
for t in tables:
quad = t[7:17]
print quad
whereClause = """ "QUADID" LIKE '%s' """ % quad
with arcpy.da.SearchCursor(fc, ("QUADID","ZONE"), whereClause) as cursor:
for row in cursor:
if row[0] == quad:
utmZone = row[1]
if utmZone == 10:
sr = arcpy.SpatialReference(26910) # NAD_1983_UTM_Zone_10N
elif utmZone == 11:
sr = arcpy.SpatialReference(26911) # NAD_1983_UTM_Zone_11N
elif utmZone == 12:
sr = arcpy.SpatialReference(26912) # NAD_1983_UTM_Zone_12N
elif utmZone == 13:
sr = arcpy.SpatialReference(26913) # NAD_1983_UTM_Zone_13N
else:
print "The UTM Zone is outside 10-13"
else:
pass
# Convert .csv to feature class
try:
outLayer = "in_memory"
# Now with the sr defined, create the XY Event Layer
arcpy.MakeXYEventLayer_management(t, "x", "y", outLayer, sr, "z")
arcpy.FeatureClassToFeatureClass_conversion(outLayer, outws, t[7:17])
arcpy.Delete_management("in_memory")
end = time.clock()
print "In_memory method finished in %s seconds" % (end - start)
except:
# Print any error messages
print arcpy.GetMessages(2)
print "Processing complete"
import arcpy
patut dipertimbangkan terlebih dahulu karena sepertinya waktu hanya diperlukan oleh rute IDLE dan 64bit dari tiga tes Anda, tetapi menambahkan hampir dua menit tampaknya berlebihan. Coba jalankan alat yang tidak lebih dari waktu impor ArcPy.
import arcpy
garis. Terakhir kali saya menggunakan arcpy lambat untuk mengimpor dari luar. ArcGIS akan memiliki yang sudah diimpor di Python internal sehingga impor sudah di-cache.
General python doc
] [ docs.python.org/2/library/profile.html] dan [ stackexchange posting
] [ stackoverflow.com/questions/582336/… .