通过Python或ArcObjects识别损坏的shapefile或栅格


9

我对一种识别损坏的栅格(例如ESRI GRID格式)或shapefile的方式感兴趣,这将阻止它们在分析工具中使用。我在结构化文件夹树中有大量的文件,并且希望能够编写脚本,使文件树走动并能够识别栅格,例如,如果您尝试在ArcCatalog中查看它,则将不允许其显示并因此会使任何地理处理工具失败。shapefile或要素类的处理相同。

我的喜好是以某种方式在Python中执行此操作(并且我不会反对使用非ESRI python模块或其他模块),但是我愿意接受任何东西。我想您可以通过尝试验证几何形状或利用文件设计的某些方面来一起破解某些东西,但是最有意义的是什么?还是有另一种专门为此目的设计的方法?

我的目标是仅能够对一些为期一周的大型预处理文件运行一种简单的质量控制机制,以确保在开始进行实际的批处理之前它们都声音良好。

谢谢汤姆

Answers:


1

对于栅格,为什么不仅仅使用简单的脚本来输出将要使用的所有栅格的属性(像元大小,范围等)。如果获取属性失败,那么任何更高级的操作也会失败。

另外,您可以将栅格属性写入日志文件,并检查范围,像元大小,值类型等是否都符合您的期望。

import arcgisscripting, sys, string, os
gp = arcgisscripting.create()

try:
    # Set local variables
    InRaster = "D:/Data/elevation"
    InPropertyType = "MAXIMUM"

    # Process: GetRasterProperties
    zmax = gp.GetRasterProperties (InRaster, InPropertyType)
    # log these to a file or apply logic here to 
    # make sure values are in the expected ranges


except:
    # Print error message if an error occurs
    # likely to be an invalid raster
    print gp.GetMessages()

另外,您提到的为期一周的处理有些令人担忧。您很有可能必须重新运行流程,因此有什么方法可以将其分解为几个较小的中间步骤。这样,您可以在每个阶段检查结果,如果有什么不正确的地方,您只需要从上一步而不是开始就可以恢复。


感谢有关获取栅格属性的建议,我认为利用数据类型的某些特征可能是我最好的选择,因为我没有意识到任何验证工具。关于为期一周的处理,毫无疑问,时间长短仅取决于栅格的数量及其大小。我有一个强大的python程序来处理它,但是部分问题是数据在我们的网络上,所以由于它们不在本地所以我失去了速度,实际上我内置了从处理列表中删除那些已经存在的功能自动运行
turkishgold

此外,就检查几何图形而言,我可能会对shapefile做类似的事情(@Craig Williams)。我的帖子的目的是探讨是否存在诸如非ESRI python模块或其他模块之类的东西,但是基于这些响应,前景并不理想。
turkishgold

@turkishgold-您可以使用与GDAL和Python绑定相同的技术读取shapefile和栅格gdal.org/gdal_tutorial.html
geographika,


1

至于矢量shp文件,我会在arcscripts上使用诸如shape file checker之类的东西。
形状文件检查器

对于栅格在地理处理期间最常见的错误是无效的字段类型。
您可能考虑在地理处理模块中发现字段类型,然后对栅格中的字段类型进行检查。
我想其他类型的错误或其他要考虑的问题可能是正在索引的调色板或特定处理不支持的色深。

实际上,腐败似乎更为罕见。但可以肯定会发生。这可能是一些需要寻找的东西。
ESRI论坛
腐败DTED
我认为,大部分的时间,这些情况可能是使用其他软件打开该文件,并保存回出正确的格式/ paramters修复了很多的这些问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.