Moje biuro zobaczy dużą zmianę w dziale GIS. Ta sekcja działa od lat 80. XX wieku i ma ogromną kolekcję danych GIS (tj. Plików kształtów, plików rastrowych, danych itp.), Ale nigdy nie była przeglądana. To się stanie.
Czy istnieje zautomatyzowany sposób wyodrębnienia wszystkich informacji o danych GIS (tj. Plik kształtów, pokrycie informacji łukowych, plik warstw, * .mxd, gdb, plik rastrowy i inne) z komputera do pliku Excel? Informacje mogą obejmować datę utworzenia, datę ostatniej edycji, nazwę folderu lub kontenera itp.
arcpy
file-geodatabase
excel
metadata
blu_sr
źródło
źródło
arcpy.da.walk
.Odpowiedzi:
Działa to dla mnie przy użyciu
arcpy.da.Walk
funkcji ArcGIS 10.1 SP1:csv
Moduł służy również do uproszczenia zapisu pliku wyjściowego. Excel może otwierać pliki CSV, dzięki czemu można je wyświetlać jako arkusze kalkulacyjne.Zobacz
arcpy.Describe
funkcję dla dodatkowych właściwości, które możesz zawrzeć w danych wyjściowych.Jeśli specjalnie chcesz oddzielić informacje od rzeczywistych metadanych , zobacz skrypt w tej odpowiedzi: Tworzenie tabeli zawierającej wszystkie nazwy plików (i ewentualnie metadane) w geobazie pliku
źródło
Kiedy używasz Pythona, musisz używać odpowiednich modułów, aby robić to, co chcesz. Na przykład, aby znaleźć wszystkie pliki w katalogu z rozszerzeniem shp, istnieją znacznie prostsze rozwiązania, które zostały przedstawione bez przerwy, co jest okropne ... (jak rozwiązanie przedstawione przez Nathana W, ale jest wiele, wiele innych, po prostu szukaj w Internecie)
Kilka przykładów z odpowiednimi modułami:
1) z modułem glob:
tylko pliki kształtu:
pliki kształtu i geobazy:
jeśli chcesz szukać również w podkatalogach:
2) z os.listdir i listami (w dwóch wierszach) -> lista wyników
3) z modułem fnmatch:
i wiele innych rozwiązań, rekurencyjnych itp.
źródło
Dzięki artwork21 i Nathanowi W za odpowiedź. I tak, kod Nathena stanowił magię.
Tylko nazwa pliku i lokalizacja. Komputer, z którym będę pracować, ma duży plik pokrycia (plik informacji o łuku), czy on też na nich zadziała?
źródło
arcpy.da.walk
wyświetli listę pokrycia, ale nie sądzę, ponieważ nie jest wymieniony w typie danych lub typie filtrów.if
zdaniu.txt.close()
jeśli używasz,with
ponieważ zrobi to za Ciebie, gdy blok wyjdzie.Jeśli masz ArcGIS Desktop 10.0 (lub którykolwiek z jego dodatków Service Pack), myślę, że najlepszym rozwiązaniem jest napisanie skryptu python, który używa os.walk do przeglądania zdefiniowanego katalogu GIS i wyszukiwania popularnych rozszerzeń plików GIS, takich jak .shp,. gdb, .mdb itp. ... i zapisuje wynik do pliku tekstowego rozdzielanego przecinkami. Następnie możesz doprowadzić plik tekstowy do programu Excel, patrz przykład kodu poniżej:
Jeśli korzystasz z ArcGIS 10.1 (lub nowszego) na pulpicie, istnieje inna odpowiedź, która używa arcpy.da.Walk, która nie była dostępna w wersji 10.0 lub wcześniejszej.
źródło
csv
modułu do abstrakcyjnego zapisania pliku i użycie wersjiarcpy.da.walk
10.1 SP1, aby ArcGIS mógł wyświetlić listę typów danych GIS.Jeśli chcesz uniknąć programowania, może to być najłatwiejsza i najszybsza metoda.
Istnieje dodatek do programu Excel o nazwie Narzędzia ASAP . Jest 90-dniowy bezpłatny okres próbny, ale potem kosztuje 49 USD na użytek biznesowy. Jest bezpłatny do użytku studenckiego lub osobistego. Dodatek dodaje wiele przydatnych funkcji. Jednym z nich jest utworzenie listy plików w strukturze folderów. Zapewnia również właściwości pliku. Możesz ograniczyć wyniki według typu pliku, jeśli chcesz.
Oto wideo jak to zrobić.
Użyłem tego dodatku wcześniej, a wyniki są bardzo szybkie.
Uwaga: nie jestem związany z tym producentem oprogramowania.
źródło
Nie mogłem sprawić, by pozostałe odpowiedzi w pełni zadziałały.
W pierwszym przykładzie, w katalogu zawierającym zarówno geobazy, jak i pliki shapefile, dostałem tylko listę klas obiektów w geobazie, ale kiedy skomentowałem część skryptu dla geobaz, dostałem listę plików shapefile.
W drugim przykładzie część geobaz danych w ogóle nie działała, więc skopiowałem w części geobazach pierwszego przykładu. Znów mam listę tylko geobaz.
Wtedy mnie uderzyło: geobazy są odczytywane przed plikami kształtu, a skrypt zatrzymuje się na
break
w części geobazy.Będąc nowicjuszem w Pythonie nie wiem, dlaczego
break
jest potrzebny, ale bez niego skrypt wydaje się iść w nieskończoną pętlę, ale ponieważbreak
potrzebowałem, przyszło mi do głowy, że umieszczenie części geobazowych we własnej pętli, po drugim pliku typy są wymienione, rozwiązałoby problem:#create blank text file with open("C:\\Temp\\GISlayers.txt", "w") as txt: for root, dirs, files in os.walk("C:\\Temp\\temp"): for f in files: #look for shapefiles, etc. [code...] for f in files: #look for geodatabases [code...]
Kiedy to zrobiłem, dostałem pełną listę.
źródło