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"' 

注: 引用符を使用して追加の書式設定が必要になる場合がありますが、これが要点です。さらに、必要に応じて「AND」の代わりに「OR」を使用してみてください。

次に、3 つのフィールドすべての 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 に答える