4

別のラスターからの入力に基づいてラスターを作成しようとしています。ラスター値が set() に含まれる数値と等しい場合は 1、それ以外の場合は 0

私は次のことを試みました:

 ConfusedRaster = arcpy.Con(inraster in repeatSet, 1, 0)

 ConfusedRaster = arcpy.Con(inraster, 1, 0, "inraster in repeatSet")

これらはどちらも機能しません。where 句はマップ代数式のみを受け入れるため、機能しないと思います: ArcGIS ヘルプ

これを行うには、他に2つの方法が考えられます。1 つはそれを NumPyArray に変換し、それを操作することです。もう 1 つは、セットをループして、セット内の各値のラスター オブジェクトを作成することです。ループが終了したら、それらをマージします。

これについての提案やコメントはありますか?

ありがとうございました

4

1 に答える 1

1

私は同様の問題に対する答えを探していて、「ExtractByAttributes」のSQL句を使用する方法を開発しました。

repeatList = list(repeatSet)
ras1 = arcpy.sa.ExtractByAttributes(inraster, 'VALUE IN (' + str(repeatList).strip('[]') + ')') 
ConfusedRaster = arcpy.sa.Con(arcpy.sa.IsNull(ras1) == 0, 1, 0)
于 2012-07-16T03:51:08.510 に答える