2013-04-09 114 views
0

我试图从3列中选择最大值(和最小值在一个单独的代码块中,未显示)。我试图在我用搜索光标看到的一些工作代码之后对代码建模。arcpy SearchCursor,SQL语句无效

我需要能够访问任何最大值稍后写入文件。

问题是我的SQL表达式在搜索游标中。我尝试了大约5种我能想到的变化,但是没有一种会运行。我对SQL表达式了解不多,但我通常至少可以在ArcMap GUI中正确使用它们。在Python脚本中,它像在黑暗中寻找蛇。

这里是我的代码:

#input shapefile 
inputFC = 'C:whatever.shp' 

#variable to define the field names 
fields = ['Crude_R1', 'Crude_R2', 'Crude_R3', 'STATE_NAME', 'Age_Adj_R1', 'Age_Adj_R2', 'Age_Adj_R3'] 

CRmax = 0 

cursor = arcpy.da.SearchCursor(inputFC, fields[0:2], 'MAX "Crude_R1" AND "Crude_R2" AND "Crude_R3"') 
for row in cursor: 
    print row[0:2] 
CRmax = row[0:2] 
del row 
del cursor 

错误消息:

Traceback (most recent call last): 
File "C:\whatever.py", line 64, in <module> 
for row in cursor: 
RuntimeError: An invalid SQL statement was used. 

回答

0

我不知道你想和你的SQL完成的任务。如果您需要帮助,请添加您的数据模式并更详细地描述您要完成的任务。如果你是python和arcpy的新手,那么你可能需要使用GUI界面来使SQL工作,然后将其复制到python脚本中。

+0

好吧,那么数据是在shapefile的属性表中。我想用SQL来做的是获得表中3列的MAX值。我希望这是一个充分的解释,因为我无法显示数据。不是每列的MAX值,而是全部3个MAX的总和。也许我太吝啬了,我需要更分段地做。我只是不确定如何完成任务。 – geneari 2013-04-10 15:07:17

0

通过使用 “AND” 多次,如:

'MAX "Crude_R1" AND "Crude_R2" AND "Crude_R3"' 

需要经过每个 '与' 包括 'MAX':

'MAX "Crude_R1" AND MAX "Crude_R2" AND MAX "Crude_R3"' 

注:有可能需要附加的引号格式,但这是它的要点。 此外,如果需要,请尝试使用'OR'而不是'AND'。

其次,既然你指定你想要的所有三个领域的MAX相结合,那么您需要首先创建一个新的领域,然后计算该字段为一起添加这些领域:

"!Crude_R1! + !Crude_R2 + !Crude_R2!" 

然后你可以简单地做一条SQL语句:

'MAX "New_Field"'