Wdrażasz parametr MultiValue z wieloma kolumnami w Pythonie i ArcGIS Desktop?

10

Pracuję nad skryptem Python ArcGIS (9.3). Jednym z danych wejściowych jest lista funkcji. Dla każdej funkcji muszę wybrać odpowiednie pole. Ustawienie parametru na MultiValue daje niezłą tabelę w interfejsie użytkownika dla wszystkich przetwarzanych funkcji. Jak dodać kolejną kolumnę do tabeli MultiValue, aby wybrać pole dla każdej funkcji?

Przeniesiony: http://forums.arcgis.com/threads/30907-MultiValue-Parameter-with-Multiple-Columns

Odpowiedź Esri z forum ArcGIS:

Niestety, rozwiązanie tego problemu zostało niedawno zaimplementowane w wersji 10.1 z danymi wejściowymi ValueTable dla narzędzi skryptowych. Musisz mieć dwa parametry wielowartościowe z pewnym niestandardowym sprawdzaniem poprawności, aby działało to w wersji 9.3.1.

thwllms
źródło
Jeśli interesuje Cię generowanie listy wyboru wielu wartości - ostatnio widziałem ten post na blogu Esri , może być pomocny.
Alex Tereshenkov

Odpowiedzi:

1

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:

Przykładowy 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.

Wstępne ustawienie interfejsu

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 .

Hornbydd
źródło
0

jeśli szukasz listy rozwijanej dla parametru identyfikatora witryny, możesz użyć kodu w następujący sposób:

 param.filters[1].list = ['pid', 'id']

Możesz więc utworzyć kursor lub użyć innej metody, aby odczytać wszystkie pola FC i przekazać je jako listę do poprzedniego zdania

Santiago Tejada
źródło