W Pythonie, jak mogę zbudować listę wszystkich klas elementów w geobazie pliku (* .gdb), w tym w wewnętrznych zestawach danych elementów? Standardowy przykład tylko wymienia m.in. zajęcia na poziomie górnej części geobazie:
import arcgisscripting, os
gp = arcgisscripting.create(9.3)
gp.workspace = 'd:\scratch.gdb'
fcs = gp.ListFeatureClasses()
for fc in fcs:
print fc
Wskaż wersję ArcGIS Desktop, której dotyczy Twoja odpowiedź (szukam 9.3, ale równie dobrze możemy zebrać wszystkie wersje w jednym miejscu).
arcpy
arcgis-9.3
matowe wilkie
źródło
źródło
arcpy.da.Walk
) brzmią: Jak sporządzić wykaz GIS?Odpowiedzi:
Ta procedura dla arcgis10 zwraca wszystkie fcs (samodzielne OR w zestawie danych funkcji) w gdb. Wystarczy ustawić obszar roboczy arcpy.env., a następnie wykonać pętlę for
źródło
Skończyło się na tym, że użyłem odpowiedzi gotchuli , ale bez dochodu, ponieważ
generalnie ponownie używam utworzonych uchwytów FC, a zyski są używane raz, a potem odrzucane, łatwiej mi jest czytać i rozumieć, cofcs.append()
się dzieje niżfcs = yield(...)
.Wyniki:
To jest teraz w module, który nazywam arcplus *. Wpisz swój drugi kod lub PYTHONPATH, a następnie:
Arcplus dodaje również filtrowanie symboli wieloznacznych; przetwarzać tylko klasy elementów rozpoczynające się od „HD_” w zestawach danych elementów zawierających „Hydro”
. * teraz w Github, zaktualizowany do wersji 10.x. Arcgis 9.3 patrz tutaj .
źródło
yield
tutaj. Po pierwsze, „uchwyty”, o których mówisz, wcale nie są uchwytami, są tylko łańcuchami. A jeśli twoim zamiarem jest utrzymanie listy klas elementów dla wielu iteracji, nadal możesz zachować ją jako funkcję generatora i po prostu „listify”:my_list = list(generator_function(args))
to ocenia generator i zapisuje wynik w zmiennej listy.fcs = fcs.append(...)
działa znacznie szybciej niżfcs = list(yield(...))
.Zdaję sobie sprawę, że to pytanie jest oznaczone jako 9.3, ale każdemu, kto szuka tej samej odpowiedzi od 10.1, lepiej jest użyć arcpy.da.Walk . Jest szybszy i dokładniejszy niż ListDatasets / FeatureClasses / Rasters / itp.
Funkcja chodzenia działa w taki sam sposób, jak chodzenie Pythona . Iteruje przez katalogi w podanej ścieżce, a przy każdej iteracji root reprezentuje pełną ścieżkę katalogu, a katalogi i zestawy danych są listami zawartych w nim podkatalogów i plików.
Podczas przechodzenia przez geobazę zestawy danych obiektów są traktowane w taki sam sposób jak katalogi. Jeśli chcesz tylko wyświetlić zestawy danych i zestawy danych funkcji w folderze głównym, a nie otwierać zestawów danych funkcji, aby zobaczyć zawartość, możesz:
źródło
ListDatasets
Metody jest to, co myślę, że szukasz. Ten FGDB ma FD o nazwie „Wells” i zawiera 3 FC. Dla 9.3.1:źródło