Implementando o parâmetro MultiValue com várias colunas com o Python e o ArcGIS Desktop?

10

Estou trabalhando em um script Python do ArcGIS (9.3). Uma das entradas é uma lista de recursos. Para cada recurso, preciso selecionar um campo correspondente. Definir o parâmetro como MultiValue fornece uma boa tabela na interface do usuário para todos os recursos que estão sendo processados. Como adiciono outra coluna à tabela MultiValue para selecionar um campo para cada recurso?

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

Resposta de Esri do fórum ArcGIS:

Infelizmente, a solução para isso foi implementada recentemente para a 10.1 com entradas ValueTable para ferramentas de script. Você precisará ter dois parâmetros de vários valores com alguma validação personalizada para fazer isso funcionar para 9.3.1.

thwllms
fonte
Se você está interessado na geração de uma lista de opções de vários valores - vi este post no blog da Esri recentemente, pode ser útil.
Alex Tereshenkov

Respostas:

1

Eu descobri como fazer isso, embora de uma maneira bastante simples. Eu queria criar um parâmetro de vários valores em que adicionei muitos FeatureLayers e depois escolhi um campo de ID para cada camada. Eu funcionei, mas não consegui trabalhar como transformar o campo em uma lista suspensa, para que o usuário tenha que inserir um nome de campo manualmente. Aqui está a interface:

Exemplo de interface

Se alguém conseguiu solucionar esse problema ou algum guru da ESRI nos abençoar com seu conhecimento, eu adoraria descobrir como transformar minha segunda coluna (ID do site) em uma lista suspensa, listando campos específicos. Se você quiser ver um exemplo disso, dê uma olhada na ferramenta Create TIN .

De qualquer forma, para criar essa interface, crio uma ferramenta de script e adicionei um parâmetro do tipo feature layer e defino-o como um valor múltiplo, como mostrado abaixo.

Configuração inicial da interface

Em seguida, cliquei na guia Validação na parte superior e depois no botão Editar. Como esse parâmetro é o sexto parâmetro na minha ferramenta de script, atualizei o seguinte código:

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

Isso redefine a interface na tabela de várias colunas que eu queria. Quando você usa GetParameterAsText, ele retorna o seguinte usando meu exemplo:

pipeline pid;Dredging did


Eu fiz mais algumas pesquisas e criei a ferramenta usando uma caixa de ferramentas python. Funciona muito bem, mas tem uma limitação se você voltar e escolher outro ID. Publiquei o código na GeoNet aqui .

Hornbydd
fonte
0

se você estiver procurando por uma lista suspensa para o parâmetro ID do site, poderá usar um código da seguinte maneira:

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

Assim, você pode criar um cursor ou usar outro método para ler todos os campos do FC e passá-los, como uma lista, para a frase anterior

Santiago Tejada
fonte