Identifikasi shapefile atau raster yang rusak melalui Python atau ArcObjects

9

Saya tertarik dengan cara mengidentifikasi raster (misalnya, format ESRI GRID) atau shapefile yang korup yang akan mencegah mereka digunakan dalam alat analisis. Saya memiliki sejumlah besar dalam struktur pohon folder dan ingin dapat skrip sesuatu yang akan berjalan pohon file dan dapat mengidentifikasi raster itu, misalnya jika Anda mencoba untuk melihatnya di ArcCatalog itu tidak akan memungkinkan untuk ditampilkan dan karenanya akan membuat alat geoproses gagal. Kesepakatan yang sama untuk shapefile atau kelas fitur.

Preferensi saya entah bagaimana melakukan ini dengan Python (dan saya tidak akan menentang modul python non-ESRI atau lainnya) tapi saya terbuka untuk apa pun. Saya kira Anda bisa meretas sesuatu bersama dengan mencoba memvalidasi geometri atau memanfaatkan beberapa aspek desain file, tetapi apa yang paling masuk akal? Atau adakah cara lain untuk melakukannya yang dirancang khusus untuk tujuan seperti itu?

Tujuan saya adalah hanya dapat menjalankan mekanisme Kontrol Kualitas sederhana pada beberapa file preprocessing selama seminggu besar untuk memastikan semuanya baik sebelum saya mulai melakukan pemrosesan batch yang sebenarnya.

terima kasih, Tom

turkishgold
sumber

Jawaban:

1

Untuk raster, mengapa tidak hanya menggunakan skrip sederhana untuk menampilkan properti (ukuran sel, luas dll) dari semua raster yang akan Anda gunakan. Jika mendapatkan properti gagal maka sesuatu yang lebih maju juga akan gagal.

Plus, Anda dapat menulis properti raster ke file log dan memeriksa apakah luasan, ukuran sel, tipe nilai, dll. Adalah semua yang Anda harapkan.

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

Anda menyebutkan pengolahan selama seminggu agak mengkhawatirkan. Sangat mungkin Anda harus menjalankan kembali prosesnya, jadi adakah cara Anda dapat memecahnya menjadi beberapa langkah menengah yang lebih kecil. Dengan cara ini Anda dapat memeriksa hasil di setiap tahap, dan jika ada sesuatu yang salah, Anda hanya perlu melanjutkan dari langkah sebelumnya daripada awal.

geografi
sumber
terima kasih atas saran untuk mendapatkan properti raster, saya pikir menggunakan beberapa karakteristik (s) dari tipe data mungkin akan menjadi taruhan terbaik saya mengingat tidak ada alat validasi yang saya sadari. Mengenai pemrosesan selama seminggu, tidak masalah di sana, lamanya waktu hanya karena jumlah raster dan ukurannya. Saya memiliki program python yang kuat untuk menanganinya, tetapi bagian dari masalahnya adalah data ada di jaringan kami jadi saya kehilangan beberapa kecepatan karena mereka bukan lokal. Saya sebenarnya memiliki fungsionalitas untuk menghapus dari daftar pemrosesan yang sudah ada telah dijalankan secara otomatis
turkishgold
Selanjutnya - saya mungkin akan melakukan sesuatu yang mirip untuk shapefile dalam hal hanya memeriksa geometri (@Craig Williams). Maksud dari posting saya adalah untuk mengeksplorasi apakah ada sesuatu di luar sana seperti modul python non-ESRI atau lainnya ... tapi pandangannya tidak begitu baik berdasarkan tanggapan ini.
turkishgold
@turkishgold - Anda bisa menggunakan teknik yang sama membaca shapefile dan raster menggunakan GDAL dan Python bindings gdal.org/gdal_tutorial.html
geografi
2

Untuk sumber data vektor, gunakan Periksa Geometri / Perbaikan Geometri bersama-sama.

Craig Williams
sumber
1

Sejauh file shp vektor saya akan menggunakan sesuatu seperti pemeriksa file bentuk pada skrip.
pemeriksa file bentuk

Untuk Raster Kesalahan paling umum selama geoprocessing adalah jenis bidang tidak valid.
Anda mungkin mempertimbangkan untuk menemukan tipe bidang dalam modul geoproses Anda dan kemudian menjalankan pemeriksaan pada jenis bidang dalam raster Anda.
Saya kira jenis erros lain atau beberapa hal lain yang perlu dipertimbangkan mungkin palet yang diindeks, atau kedalaman warna yang tidak didukung untuk pemrosesan tertentu.

Sebenarnya dikorupsi nampaknya sedikit lebih jarang. Tapi pasti itu bisa terjadi. Mungkin ada beberapa hal yang harus dicari.
esri forum
rusak dted
Saya pikir sebagian besar kasus-kasus ini bisa jadi itu menggunakan perangkat lunak lain untuk membuka file dan menyimpannya kembali ke format yang benar / parameter memperbaiki banyak masalah ini.

Brad Nesom
sumber