Obecnie gram z ModelBuilder. Dodałem zdjęcie aktualnie posiadanego modelu.
Ten model obecnie iteruje 6 plików kształtów, więc każda z „wartości wyjściowych” zawiera 6 cyfr na liście. Nie mogę znaleźć sposobu na wyodrębnienie wartości z tych list do pliku tabeli / pliku tekstowego lub podobnego.
Czy jest na to sposób?
Oto, co jest wyświetlane, gdy otwieram „wartości wyjściowe” po uruchomieniu modelu:
Chcę tylko jakoś złapać te 6 liczb ...
Odpowiedzi:
Możesz to zrobić za pomocą narzędzia Calculate Value (Data Management) i niektórych magii Python. Zobacz także podobne pytanie: Dodać dowolny kod do konstruktora modeli Arcgis?
Zmienna wielowartościowym jest po prostu ciągiem średnik rozdzielany wartości, więc to, co
multivaluesToCsv
poniżej funkcja nie jest podzielony zmiennych wielowartościowych na listy i ich transpozycji do wierszy, które są następnie zapisywane do pliku CSV (wartości oddzielonych przecinkami) pliku tekstowego.Iteratory modeli uruchamiają WSZYSTKIE procesy w modelu raz na iterację - jest to niepożądane w przypadku naszego narzędzia Oblicz wartość, które chcemy uruchomić tylko raz na końcu. Sposób, w jaki to osiągasz, polega na utworzeniu innego, zewnętrznego modelu w celu owinięcia oryginalnego modelu wewnętrznego. Jest to omówione w temacie pomocy Integrowanie modelu w modelu .
Oto, co musisz zrobić, aby to działało:
Model wewnętrzny - Iteruje klasy elementów, przetwarza je, zbiera wartości:
Name
zmiennej, abyśmy mogli zmapować wartości statystyki odległości na odpowiadające im nazwy klas obiektów.Model zewnętrzny - uruchamia model wewnętrzny, uruchamia narzędzie Oblicz wartość tylko raz, gdy model wewnętrzny zostanie ukończony:
Folder
aby umożliwić określenie miejsca utworzenia wyjściowego pliku CSV.String
aby umożliwić określenie nazwy wyjściowego pliku CSV.Wklej następujące elementy w odpowiednie pola narzędzia Oblicz wartość:
Wyrażenie :
r
Zanim"%Output CSV File Location%"
jest znacząca: oznacza to, że jest to surowy ciąg ; ponieważ ścieżki systemu plików Windows zwykle zawierają ukośniki odwrotne ( znak zmiany znaczenia w Pythonie), musimy tego użyć, aby zapobiec błędnej interpretacji ukośników i kolejnych znaków jako specjalnych sekwencji znaków przez Python.Blok kodu:
(Opcjonalnie) Ujawnij zmienne wejściowe i wyjściowe jako parametry modelu, jeśli chcesz je uruchomić z okna dialogowego narzędzia modelu lub połączyć je z innymi modelami / skryptami. Jedynym wyjściem modelu zewnętrznego jest plik CSV.
Przetestowałem to z ModelBuilder i sprawiłem, że działa (patrz zrzuty ekranu).
Model wewnętrzny :
Model zewnętrzny:
Model wewnętrzny uruchamia wszystkie procesy raz na klasę elementów, a następnie narzędzie Oblicz wartość uruchamia się na końcu, aby wyprowadzić plik CSV tylko raz.
źródło
Wynik, który opisuje Twój model, jest po prostu wartością zaktualizowaną w tabeli atrybutów, prawda? Czy nie możesz po prostu otworzyć pliku .dbf skojarzonego ze zaktualizowanym plikiem shapefile?
W przeciwnym razie Tabela Wybierz (Narzędzia analizy> Wyodrębnij) powinna współpracować z zapytaniem SQL.
źródło