Выявление поврежденных шейп-файлов или растров через Python или ArcObjects

9

Меня интересует способ идентификации растров (например, формат ESRI GRID) или поврежденных шейп-файлов, которые не позволили бы их использовать в инструменте анализа. У меня есть большое число в структурированном дереве папок, и я хотел бы иметь возможность писать сценарии, которые будут обходить дерево файлов и иметь возможность идентифицировать растры, которые, например, если вы попытались просмотреть его в ArcCatalog, не позволили бы его отображать и, соответственно, любой инструмент геообработки потерпит неудачу. То же самое касается шейп-файлов или классов объектов.

Я бы предпочел сделать это в Python (и я не был бы против модуля Python не-ESRI или другого), но я открыт для всего. Я полагаю, что вы могли бы что-то взломать, попытавшись проверить геометрию или извлечь выгоду из какого-либо аспекта разработки файла, но что будет наиболее разумным? Или есть другой способ сделать это, специально предназначенный для этой цели?

Моя цель - просто запустить простой механизм контроля качества на некоторых больших недельных файлах предварительной обработки, чтобы убедиться, что они все исправны, прежде чем я начну выполнять фактическую пакетную обработку.

спасибо том

turkishgold
источник

Ответы:

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()

Также ваше упоминание о недельной обработке вызывает некоторое беспокойство. Весьма вероятно, что вам придется перезапустить процессы, поэтому есть ли способ разбить его на несколько более мелких промежуточных этапов. Таким образом, вы можете проверить результаты на каждом этапе, и если что-то не так, вам нужно только продолжить с предыдущего шага, а не с самого начала.

geographika
источник
спасибо за предложение по получению растровых свойств, я подумал, что использование некоторых характеристик типа данных, вероятно, будет моей лучшей ставкой, поскольку нет инструментов проверки, о которых я знал. Что касается недельной обработки, то здесь нет проблем с длительностью, просто из-за количества растров и их размера. У меня есть надежная программа на Python, которая обрабатывает ее, но отчасти проблема в том, что данные в нашей сети теряются, поэтому я теряю некоторую скорость, поскольку они не локальны. Я фактически встроил функциональность для удаления из списка обработки тех, которые уже есть. был запущен автоматически
turkishgold
Более того - я, вероятно, просто сделаю нечто подобное для шейп-файлов с точки зрения простой проверки геометрии (@Craig Williams). Цель моего поста состояла в том, чтобы исследовать, есть ли что-то вроде модуля Python не-ESRI или другого ... но на основании этих ответов перспективы не так хороши.
turkishgold
@turkishgold - Вы можете использовать ту же технику чтения шейп-файлов и растров, используя GDAL и привязки Python gdal.org/gdal_tutorial.html
geographika
2

Для источников векторных данных используйте Check Geometry / Repair Geometry в тандеме.

Крейг Уильямс
источник
1

Что касается векторных shp-файлов, я бы использовал что-то вроде проверки файла формы в arcscripts.
средство проверки файла формы

Для растра Наиболее распространенная ошибка при геообработке - неверный тип поля.
Вы можете рассмотреть возможность обнаружения типов полей в своих модулях геообработки, а затем запустить проверку типов полей в своих растрах.
Я предполагаю, что другими типами ошибок или некоторыми другими вещами, которые следует учитывать, могут быть индексируемая палитра или глубина цвета, не поддерживаемая для конкретной обработки.

На самом деле быть corupt кажется немного более редким. Но уверен, что это может случиться. Здесь могут быть некоторые вещи, чтобы искать.
ESRI форумы
коррумпированных DTED
Я думаю , что большая часть времени эти случаи могут быть, с помощью другого программного обеспечения , чтобы открыть файл и сохранить его обратно в правильный формат / paramters исправляет множество этих вопросов.

Брэд Несом
источник