在ArcGIS中创建栅格属性表的问题
我有一个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 个回答
这个警告:
c:\raster2 的数值范围超过了 100000,唯一值的数量超过了 500。如果需要属性值表,请使用 BUILDVAT。
...是在你强制创建属性表之前的步骤中产生的。由于缺乏具体的上下文,我无法进一步解释你特定情况的原因;不过在我的情况下,我是使用 arcpy.PolygonToRaster_conversion 将一个多边形特征类转换成栅格。这时就会出现警告 010367。如果你随后在栅格上使用 arcpy.BuildRasterAttributeTable_management,那么你可以忽略上面的警告。
如果没有看到你脚本中的其他内容,我无法解决你提到的第二个错误。
对于栅格数据,如果通过某个表达式生成的整数栅格的数值范围小于100,000,或者栅格中独特的数值少于500,系统会默认创建一个栅格属性表。如果数值范围小于100,000,栅格中独特的数值可以多达100,000。如果数值范围超过100,000,但独特的数值少于500,系统仍然会创建栅格属性表。如果数值范围超过100,000,并且独特的数值也超过500,那么就不会自动创建栅格属性表。默认情况下,栅格属性表的独特值数量限制在65,535个。你可以通过在栅格选项卡中点击栅格属性表选项,进入选项对话框来增加这个数字。
我刚刚重新阅读了栅格的文档,发现可以通过图形界面手动增加允许构建属性表的值。我手动输入了一个很大的数值,我的脚本就成功运行了。
不确定这个问题/答案是否有用。我会把它留在这里一两天看看。