前提:我不是程序员! 我编写了一个Python代码,用于在Arcgis 9.2地理处理器的DB字段上执行迭代。 该算法必须迭代超过两千条记录,并且它的速度逐渐降低,直到5/6分钟进行1次迭代! 这是我的代码:
# Import system modules
import sys, string, os, arcgisscripting
# Create the Geoprocessor object
gp = arcgisscripting.create()
# Set the necessary product code
gp.SetProduct("ArcEditor")
# Load required toolboxes...
gp.AddToolbox("C:/Program Files/ArcGIS/ArcToolbox/Toolboxes/Data Management Tools.tbx")
gp.AddToolbox("C:/Program Files/ArcGIS/ArcToolbox/Toolboxes/Analysis Tools.tbx")
gp.OverWriteOutput = "True"
# Global variables...
PP_ID_2012_dbf="C:\\...\\4Paths_PP_ID.dbf"
Paths_2012 = "C:\\...\\Paths_2012.shp"
# Search Cursor
src = gp.SearchCursor(PP_ID_2012_dbf)
row = src.Next()
src.Reset()
# While cycle
while row:
SQL_expr = row.GetValue("Query") # Query SQL
print row.GetValue("Query")
Selected_Path = "C:\\...\\Path_"+str(row.GetValue("PointPath_"))+".shp"
# Process: Select...
gp.Select_analysis(Paths_2012, Selected_Path, SQL_expr)
Paths_2012_Select_Simplify_shp="C:\\...\\Path_"+str(row.GetValue("PointPath_"))+"_Simplify.shp"
# Process: Simplify Lines...
gp.SimplifyLine_management(Selected_Path, Paths_2012_Select_Simplify_shp, "POINT_REMOVE", "20 Meters", "FLAG_ERRORS", "KEEP_COLLAPSED_POINTS", "CHECK")
del SQL_expr
del Selected_Path
del Paths_2012_select_Simplify_shp
row = src.Next()
怎么了?我认为这是缓存的问题,但我无法自己解决。 拜托,帮助我!
答案 0 :(得分:1)
如果你在一个循环内部执行一个SQL查询,你可以通过弄清楚如何在一个查询中获取所有数据,然后迭代查询结果来处理你的代码它。
正如其他人提到的那样,您可以通过分析代码来弄清楚您在哪里花费时间,但DB调用是常见的罪魁祸首,如果您可以避免在循环内部进行数据库调用,那么您可以减少2,000个db调用一个或两个db调用。