O ArcPy pode preencher formulários na interface Add-in?

8

Estou tentando criar uma ferramenta ArcPy, que solicitará que o usuário insira algumas informações (ID, nome, endereço, CEP etc.) primeiro. Minha interface de suplemento é mostrada abaixo e espero implementar que, uma vez que o usuário insira o ID, se todas as outras informações relacionadas (Nome, Endereço etc.) existirem em outra tabela conhecida, elas poderão ser mostradas nos seguintes espaços em branco em ao mesmo tempo, em vez de permitir que o usuário digite tudo.

Em resumo, o ArcPy pode preencher formulários na interface Add-in, não na janela de resultados?

insira a descrição da imagem aqui

A validação funciona, mas é extremamente lenta quando executo um cursor de pesquisa em um .dbf que possui mais de 160.000 registros. Como posso melhorar o código abaixo ou existe uma solução melhor do que usar a ferramenta de script python? Parece que o formulário passará pelo cursor novamente, mesmo depois de preencher outros espaços em branco não relacionados.

import arcpy, datetime
import os
import sys
class ToolValidator(object):
  """Class for validating a tool's parameter values and controlling
  the behavior of the tool's dialog."""

  def __init__(self):
    """Setup arcpy and the list of tool parameters."""
    self.params = arcpy.GetParameterInfo()
    fc = "C:\\test\\vectorDBO.dbf"
    field = "PARCEL"
    cursor = arcpy.SearchCursor(fc)
    row = cursor.next()
    n = 0
    while row:
        if row.getValue("PARCEL") == self.params[0].value:
            self.params[1].value = row.getValue("LASTNM")
            self.params[3].value = row.getValue("ADDRESS")
            self.params[4].value = row.getValue("CITY")
            self.params[6].value = row.getValue("ZIPCODE")
            break
        row = cursor.next()

  def initializeParameters(self):
    """Refine the properties of a tool's parameters.  This method is
    called when the tool is opened."""
    self.params[10].value = datetime.datetime.now()
    return

  def updateParameters(self):
    """Modify the values and properties of parameters before internal
    validation is performed.  This method is called whenever a parameter
    has been changed."""
    return

  def updateMessages(self):
    """Modify the messages created by internal validation for each tool
    parameter.  This method is called after internal validation."""
    return
Bacalhau Energético
fonte
4
Você já viu a validação de ferramenta personalizada ? Pode ser usado para preencher campos com base em outros campos.
Barbarossa
1
Você está usando o cursor de estilo antigo, deseja usar o novo e mais rápido cursor de pesquisa no módulo da , isso deve resolver o problema de velocidade.
Hornbydd
Obrigado por sua sugestão! Eu converto a tabela como um arquivo .csv e uso o SearchCursor (arcpy.da), e funciona perfeitamente!
Bacalhau Energético
Postagem mais antiga, mas encontrei um problema semelhante ao criar um suplemento. Você deseja usar o formato .da do cursor de pesquisa e também usar um formato de dados mais amigável ao sistema, como csv ou xlsx.
COCO 12/06

Respostas:

4

Eu nunca usei Python Addins, mas a interface que você descreve é ​​uma ferramenta de script. Uma discussão sobre como chamar ferramentas de script de suplementos é encontrada aqui . Como o @Barbarossa comenta acima, você pode usar a validação da ferramenta para preencher os parâmetros. A menos que haja um motivo específico para a criação de um suplemento Python, eu provavelmente continuaria criando uma ferramenta de script Python .

Hornbydd
fonte
1
@EnergeticCodfish Se isso resolveu seu problema, você pode clicar no botão verde Aceitar, por favor?
PolyGeo