2012-05-15 3 views
4

Я пытаюсь создать растровое изображение на основе ввода из другого растра. Если значение растра равно числу включенных в набор(), чем я хочу, чтобы это было 1, иначе 0ArcGIS 10 python - Условная инструкция, проверяющая, есть ли растровое значение в наборе

Я попытался следующее:

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

и

Ни одна из этих работ не работает. Я считаю, что они не работают, потому что предложение where принимает только выражения Map Algebra: ArcGIS Help

Есть два других способа, которые я могу придумать. Один из них превращает его в NumPyArray и работает с ним. Другой - цикл по набору и создание растрового объекта для каждого значения в наборе. После того, как цикл завершит их слияние.

Есть ли у кого-нибудь какие-либо предложения или замечания относительно того, как это сделать?

Спасибо

+0

Показать остальную часть вашего кода ... по крайней мере, соответствующие детали. – garnertb

ответ

1

Я искал ответ на аналогичный вопрос и разработал способ с помощью предложения SQL в «ExtractByAttributes».

repeatList = list(repeatSet) 
ras1 = arcpy.sa.ExtractByAttributes(inraster, 'VALUE IN (' + str(repeatList).strip('[]') + ')') 
ConfusedRaster = arcpy.sa.Con(arcpy.sa.IsNull(ras1) == 0, 1, 0)