Identifique shapefiles ou rasters corrompidos via Python ou ArcObjects

9

Estou interessado em uma maneira de identificar rasters (por exemplo, formato ESRI GRID) ou shapefiles corrompidos que impediriam que eles fossem usados ​​em uma ferramenta de análise. Eu tenho um grande número na árvore de pastas estruturadas e gostaria de poder criar um script para algo que percorrerá a árvore de arquivos e ser capaz de identificar rasters que, por exemplo, se você tentar visualizá-lo no ArcCatalog, não permitirá que ele seja exibido e, consequentemente, faria com que qualquer ferramenta de geoprocessamento falhasse. O mesmo negócio para shapefiles ou classes de recurso.

Minha preferência seria de alguma forma fazer isso em Python (e eu não me oporia a um módulo python não ESRI ou outro), mas estou aberto a qualquer coisa. Eu acho que você poderia hackear alguma coisa tentando validar geometria ou capitalizar algum aspecto do design do arquivo, mas o que faria mais sentido? Ou existe outra maneira de fazer isso, especificamente projetada para esse fim?

Meu objetivo é ser capaz de executar um mecanismo simples de controle de qualidade em alguns arquivos grandes de pré-processamento de uma semana para garantir que todos estejam funcionando antes de começar o processamento em lote real.

obrigado Tom

turkishgold
fonte

Respostas:

1

Para os rasters, por que não usar apenas um script simples para gerar as propriedades (tamanho da célula, extensão etc.) de todos os rasters que você vai usar. Se a obtenção das propriedades falhar, algo mais avançado também falhará.

Além disso, você pode gravar as propriedades da varredura em um arquivo de log e verificar se as extensões, tamanhos de célula, tipos de valor etc. são tudo o que você espera.

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

Além disso, sua menção ao processamento de uma semana é preocupante. É muito provável que você precise executar novamente os processos; portanto, há alguma maneira de decompô-lo em várias etapas intermediárias menores. Dessa forma, você pode verificar os resultados em cada estágio e, se algo estiver incorreto, você só precisará retomar da etapa anterior e não do início.

geographika
fonte
obrigado pela sugestão de obter propriedades de varredura, imaginei que usar algumas características do tipo de dados provavelmente seria minha melhor aposta, pois não havia ferramentas de validação que eu conhecia. Em relação ao processamento de uma semana, não há problema, o tempo é apenas devido ao número de rasters e seu tamanho. Eu tenho um programa python robusto que lida com isso, mas parte do problema é que os dados estão em nossa rede, por isso estou perdendo velocidade, pois eles não são locais. executado automaticamente
turkishgold
Além disso - provavelmente farei algo semelhante para os shapefiles em termos de apenas verificar a geometria (@Craig Williams). A intenção do meu post era explorar se existe algo como um módulo python não ESRI ou outro ... mas a perspectiva não é tão boa com base nessas respostas.
Turkishgold
@turkishgold - Você pode usar a mesma técnica de leitura shapefiles e rasters usando GDAL eo Python ligações gdal.org/gdal_tutorial.html
geographika
2

Para as fontes de dados vetoriais, use Verificar geometria / Reparar geometria em conjunto.

Craig Williams
fonte
1

No que diz respeito aos arquivos shp de vetor, eu usaria algo como o verificador de arquivos de forma no arcscripts.
verificador de arquivo de forma

Para varredura O erro mais comum durante o geoprocessamento é o tipo de campo inválido.
Você pode descobrir os tipos de campos em seus módulos de geoprocessamento e, em seguida, executar a verificação dos tipos de campos em seus rasters.
Eu acho que outros tipos de erros ou outras coisas a considerar podem ser a paleta sendo indexada ou a profundidade de cores não suportada para um processamento específico.

Na verdade, ser corrupto parece um pouco mais raro. Mas com certeza isso pode acontecer. Aqui pode haver algumas coisas para procurar.
fóruns esri
corrompidos dted
Acho que na maioria das vezes nesses casos pode ser que o uso de outro software para abrir o arquivo e salvá-lo novamente para corrigir o formato / parâmetros corrige muitos desses problemas.

Brad Nesom
fonte