Czy jest jakiś sposób na dodanie dowolnych fragmentów kodu do modelu ArcGIS?
Wyobrażam sobie coś podobnego do „pokaż blok kodu” konstruktora wyrażeń w zaawansowanym etykietowaniu lub kalkulatorze pola .
Na przykład mój projekt w tej chwili może znacznie zyskać na pobraniu nazwy użytkownika osoby uruchamiającej narzędzie. Wiem, że w pythonie jest to proste import os; os.environ.get('USERNAME')
. Myślę, że mógłbym napisać ten fragment get_username.py
kodu, dodać go do przybornika w Arccatalog, a następnie dodać to narzędzie do modelu i użyć go jako wymaganego parametru modelu dla mojego bieżącego narzędzia. To bardzo dużo pracy dla tak małej rzeczy i następnym razem może będę chciał czegoś innego, takiego jak podstawienie zmiennej wbudowanej lub zmienna złożona .
Myślę, że narzędzie do wycinania kodu lub podobne narzędzie może zaspokoić wszystkie te potrzeby w ogólny, ogólnie pomocny sposób.
źródło
Odpowiedzi:
Nowa odpowiedź na stary post, aby wyjaśnić, jak stworzyć model wielokrotnego użytku, aby to zrobić.
Otwórz model, Wstaw-> Narzędzia tylko do modelu-> Oblicz wartość.
W wyrażeniu wpisz:
getuser()
W bloku kodu wpisz:
(Zobacz „ Pobieranie nazwy użytkownika w określonym formacie ”, aby zapoznać się ze źródłem fragmentu kodu nazwy użytkownika z @ChadCooper)
W polu Typ danych wybierz
String
.Zmień nazwę koła wyjściowego na
username
. Model końcowy będzie wyglądał następująco:Następnie możesz po prostu przeciągnąć ten model do dowolnych przyszłych modeli i odwołać się do zmiennej o nazwie% username% we wszystkich przyszłych modelach lub skryptach. Upewnij się tylko, że ten model działa, zanim spróbujesz uzyskać dostęp do zmiennej% username%. Możesz to zrobić przy użyciu warunku wstępnego .
źródło
W rzeczywistości można to zrobić za pomocą narzędzia Obliczanie wartości (zarządzanie danymi) .
Nie jest to szczególnie eleganckie (cały kod źródłowy narzędzia jest drukowany w dzienniku przy każdym uruchomieniu), a edytor (tak naprawdę tylko pole tekstowe) jest fatalny.
Sugerowałbym pisanie modułów, z których można następnie importować i wywoływać funkcje, a wtedy wystarczyłoby napisać bardzo krótkie fragmenty w oknie dialogowym. W przeciwnym razie to po prostu niezbyt czyste.
Obliczanie wartości jest dostępne na wszystkich poziomach licencji dla Arcgis v10. W wersji 9.x jest on dostępny dla Arcview tylko wtedy, gdy zainstalowane są rozszerzenia Spatial lub 3D Analyst ( ref ).
źródło
%USERNAME%
Działa to całkiem dobrze dla tego, czego potrzebowałem dzisiaj (wstaw do połączenia z bazą danych .sde). Zgadzam się, że redaktor nie jest godny tej nazwy, działa dobrze jako miejsce docelowe wklejania.Być może nie rozumiem pytania, ale wydaje się, że funkcjonalność narzędzia skryptowego Python w ArcToolBox jest tym, czego szukasz:
http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/Integrating_scripts_within_a_model/002w0000006n000000/
http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//001500000006000000.htm
Możesz także użyć / połączyć kilka innych języków skryptowych (R w tym przykładzie):
http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//002w0000007w000000
źródło