0

我正在尝试从 3 列中选择值的最大值(和最小值在单独的代码块中,未显示)。我试图在我用搜索光标看到的一些工作代码之后对我的代码进行建模。

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

问题是我在搜索游标中的 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.
4

2 回答 2

0

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

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

您需要在每个“AND”之后包含“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"'
于 2014-01-23T15:50:38.403 回答
0

我不确定你想用 SQL 完成什么。如果您需要有关该语句的帮助,请添加您的数据模式和您要完成的任务的更详细描述。如果您是 python 和 arcpy 的新手,那么您可能希望使用 GUI 界面让 SQL 正常工作,然后将其复制到 python 脚本中。

于 2013-04-10T12:09:28.907 回答