Nauczyłem się, jak to zrobić, choć w dość prosty sposób. Chciałem utworzyć parametr wielowartościowy, w którym dodam wiele FeatureLayers, a następnie wybiorę pole ID dla każdej warstwy. Mam to działa, ale nie mogłem pracować, jak zrobić pole listy rozwijanej, więc użytkownik musi ręcznie wprowadzić nazwę pola. Oto interfejs:
Jeśli komuś udało się rozwiązać ten problem lub jakiś guru z ESRI błogosławi nas swoją wiedzą, chciałbym dowiedzieć się, jak zmienić moją drugą kolumnę (identyfikator witryny) w rozwijaną listę, zawierającą określone pola. Jeśli chcesz zobaczyć przykład tego, spójrz na narzędzie Utwórz NIP .
W każdym razie, aby utworzyć ten interfejs, tworzę narzędzie skryptowe i dodałem parametr typu warstwa funkcji i ustawiłem na wartość wielowartościową, jak pokazano poniżej.
Następnie kliknąłem kartę Walidacja u góry, a następnie przycisk Edytuj. Ponieważ ten parametr jest szóstym parametrem w moim narzędziu skryptowym, zaktualizowałem następujący kod:
def initializeParameters(self):
"""Refine the properties of a tool's parameters. This method is
called when the tool is opened."""
# Get the 6th parameter
param = self.params[6]
param.datatype = "Value Table"
param.columns = [["Feature Layer","Activity Layer"],["Field","Site ID"]]
return
Spowoduje to zresetowanie interfejsu do tabeli wielokolumnowej, którą chciałem. Gdy używasz GetParameterAsText, zwraca on następujący przykład na moim przykładzie:
pipeline pid;Dredging did
Zrobiłem trochę więcej badań i stworzyłem narzędzie przy użyciu zestawu narzędzi Python. Działa bardzo dobrze, ale ma ograniczenia, jeśli wrócisz i wybierzesz inny identyfikator. Tutaj opublikowałem kod w GeoNet .