我正在尝试从3列中选择值的最大值(和单独的代码块中的min,未显示)。我试图在用搜索光标看到的一些工作代码之后对我的代码进行建模。
我需要能够访问稍后写入文件的最大值。
问题是我在搜索光标中的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 :(得分:0)
我不确定你要用SQL做什么。如果您需要有关该语句的帮助,请添加您的数据模式以及您要完成的更详细的描述。如果您不熟悉python和arcpy,那么您可能希望使用GUI界面来使SQL工作,然后将其复制到python脚本中。
答案 1 :(得分: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"'