【问题标题】:ArcGIS 10 python - Conditional statement checking to see if a raster value is in a setArcGIS 10 python - 检查栅格值是否在集合中的条件语句
【发布时间】:2012-05-23 10:35:34
【问题描述】:

我正在尝试根据来自另一个栅格的输入创建一个栅格。 如果栅格值等于 set() 中包含的数字,则我希望它为 1,否则为 0

我尝试了以下方法:

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

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

这些都不起作用。我相信它们不起作用,因为 where 子句只接受地图代数表达式:ArcGIS Help

我可以想到其他两种方法来做到这一点。一个是将其转换为 NumPyArray 并使用它。另一个是遍历集合并为集合中的每个值创建一个光栅对象。循环完成后合并它们。

有没有人对如何处理这个问题有任何建议或意见?

谢谢

【问题讨论】:

  • 显示你的代码的其余部分......至少是相关部分。

标签: python arcgis raster arcpy


【解决方案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)

【讨论】:

    猜你喜欢
    • 2016-04-21
    • 1970-01-01
    • 2020-01-15
    • 2013-04-19
    • 2020-12-16
    • 1970-01-01
    • 2017-12-31
    • 2021-08-22
    • 1970-01-01
    相关资源
    最近更新 更多