Zidentyfikuj uszkodzone pliki kształtów lub rastry za pomocą Pythona lub ArcObjects

9

Interesuje mnie sposób identyfikacji rastrów (np. Format ESRI GRID) lub uszkodzonych plików kształtu, które uniemożliwiłyby ich użycie w narzędziu analitycznym. Mam dużą liczbę w ustrukturyzowanym drzewie folderów i chciałbym móc napisać skrypt, który przejdzie po drzewie plików i będzie mógł zidentyfikować rastry, które, na przykład, jeśli spróbujesz wyświetlić je w ArcCatalog, nie pozwolą na jego wyświetlenie i odpowiednio spowodowałoby awarię dowolnego narzędzia geoprzetwarzania. Ta sama oferta dla plików kształtów lub klas obiektów.

Moją preferencją byłoby jakoś to zrobić w Pythonie (i nie byłbym przeciwny modułowi Pythona spoza ESRI lub temu innemu), ale jestem otwarty na wszystko. Wydaje mi się, że możesz zhakować coś razem, próbując zweryfikować geometrię lub wykorzystać jakiś aspekt projektu pliku, ale co byłoby najbardziej sensowne? A może jest to inny sposób, który został specjalnie zaprojektowany do tego celu?

Moim celem jest po prostu uruchomienie prostego mechanizmu kontroli jakości na niektórych dużych tygodniowych plikach przetwarzania wstępnego, aby upewnić się, że wszystkie są w dobrym stanie, zanim zacznę faktyczne przetwarzanie wsadowe.

dzięki, Tom

turkishgold
źródło

Odpowiedzi:

1

W przypadku rastrów dlaczego nie użyć prostego skryptu, aby wyświetlić właściwości (rozmiar komórki, zasięg itd.) Wszystkich rastrów, których zamierzasz użyć. Jeśli uzyskanie właściwości się nie powiedzie, wtedy coś bardziej zaawansowanego również się nie powiedzie.

Ponadto możesz zapisać właściwości rastra w pliku dziennika i sprawdzić, czy zakresy, rozmiary komórek, typy wartości itp. Są zgodne z oczekiwaniami.

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

Niepokojąca jest również wzmianka o tygodniowym przetwarzaniu. Jest bardzo prawdopodobne, że będziesz musiał ponownie uruchomić procesy, więc czy jest jakiś sposób na rozbicie go na kilka mniejszych etapów pośrednich. W ten sposób możesz sprawdzić wyniki na każdym etapie, a jeśli coś jest nie tak, musisz wznowić od poprzedniego kroku, a nie od początku.

geografia
źródło
dzięki za sugestię dotyczącą uzyskania właściwości rastrowych, pomyślałem, że użycie niektórych cech typu danych byłoby prawdopodobnie najlepszym rozwiązaniem, biorąc pod uwagę, że nie było żadnych narzędzi sprawdzania poprawności, o których wiedziałem. Jeśli chodzi o tygodniowe przetwarzanie, nie ma problemu, że czas ten wynika tylko z liczby rastrów i ich wielkości. Mam solidny program do obsługi Pythona, ale część problemu polega na tym, że dane są w naszej sieci, więc tracę trochę prędkości, ponieważ nie są one lokalne. W rzeczywistości wbudowałem funkcję usuwania z listy przetwarzania tych, które już miały uruchomiono automatycznie
turkishgold
Co więcej - prawdopodobnie zrobię coś podobnego dla plików kształtów, jeśli chodzi o sprawdzenie geometrii (@Craig Williams). Celem mojego postu było zbadanie, czy istnieje coś takiego jak moduł Pythona inny niż ESRI lub inny ... ale perspektywy nie są tak dobre na podstawie tych odpowiedzi.
turkishgold
@turkishgold - Możesz użyć tej samej techniki czytania plików kształtu i rastrów za pomocą GDAL i powiązań Pythona gdal.org/gdal_tutorial.html
geographika
2

W przypadku źródeł danych wektorowych użyj Sprawdź geometrię / Napraw geometrię w tandemie.

Craig Williams
źródło
1

Jeśli chodzi o pliki shp wektorowe, użyłbym czegoś w rodzaju narzędzia do sprawdzania plików kształtów w skryptach arcs.
sprawdzanie plików kształtów

Dla rastra Najczęstszym błędem podczas geoprzetwarzania jest nieprawidłowy typ pola.
Możesz rozważyć wykrycie typów pól w modułach geoprzetwarzania, a następnie uruchomić sprawdzanie typów pól w swoich rastrach.
Sądzę, że inne rodzaje błędów lub niektóre inne rzeczy, które należy wziąć pod uwagę, to indeksowana paleta lub brak obsługi głębi kolorów dla określonego przetwarzania.

W rzeczywistości bycie zepsutym wydaje się nieco rzadsze. Ale na pewno może się zdarzyć. Oto kilka rzeczy, na które należy zwrócić uwagę.
fora
esri uszkodzone dted
Myślę, że przez większość czasu takie przypadki mogą być takie, że użycie innego oprogramowania do otwarcia pliku i zapisania go z powrotem do poprawnego formatu / parametrów naprawia wiele z tych problemów.

Brad Nesom
źródło