在ArcGIS中创建栅格属性表的问题

3 投票
2 回答
3239 浏览
提问于 2025-04-16 03:58

我有一个Python脚本,它可以为栅格数据生成属性表。这个脚本会处理我所有的浮点型栅格数据,把它们转换成整数,然后生成一个属性表。

在处理前面三个栅格时,我收到了一个警告信息,

Value range for c:\raster2 exceeds 100000 and number of unique values exceeds 500.
Please use BUILDVAT if a VAT is required.

不过属性表还是生成了。但是在这之后,程序就崩溃了,我不知道该怎么解决。屏幕上显示的错误信息是:

Value range for c:\raster2 exceeds 100000 and number of unique values exceeds 500.
Please use BUILDVAT if a VAT is required.
Traceback (most recent call last):
  File "LEED_raster_attribute.py", line 50, in <module>
    make_attribute( 20, 'C:\\Analysis\\Raster_Distances\\city' )
  File "Raster_attribute.py", line 40, in make_attribute
    gp.BuildRasterAttributeTable_management(outRaster)
arcgisscripting.ExecuteError: ERROR 000521: The number of unique values exceeds the limit.
Failed to execute (BuildRasterAttributeTable).

在网上搜索这个错误信息也没有找到解决办法,帮助文件也没用。有没有人能提供解决这个问题的方法?

谢谢。

2 个回答

0

这个警告:

c:\raster2 的数值范围超过了 100000,唯一值的数量超过了 500。如果需要属性值表,请使用 BUILDVAT。

...是在你强制创建属性表之前的步骤中产生的。由于缺乏具体的上下文,我无法进一步解释你特定情况的原因;不过在我的情况下,我是使用 arcpy.PolygonToRaster_conversion 将一个多边形特征类转换成栅格。这时就会出现警告 010367。如果你随后在栅格上使用 arcpy.BuildRasterAttributeTable_management,那么你可以忽略上面的警告。

如果没有看到你脚本中的其他内容,我无法解决你提到的第二个错误。

1

对于栅格数据,如果通过某个表达式生成的整数栅格的数值范围小于100,000,或者栅格中独特的数值少于500,系统会默认创建一个栅格属性表。如果数值范围小于100,000,栅格中独特的数值可以多达100,000。如果数值范围超过100,000,但独特的数值少于500,系统仍然会创建栅格属性表。如果数值范围超过100,000,并且独特的数值也超过500,那么就不会自动创建栅格属性表。默认情况下,栅格属性表的独特值数量限制在65,535个。你可以通过在栅格选项卡中点击栅格属性表选项,进入选项对话框来增加这个数字。

我刚刚重新阅读了栅格的文档,发现可以通过图形界面手动增加允许构建属性表的值。我手动输入了一个很大的数值,我的脚本就成功运行了。


不确定这个问题/答案是否有用。我会把它留在这里一两天看看。

撰写回答