5 votos

Arcpy Pythonaddins Equivalente de arcpy.GetParameterAsText

He construir una casa pequeña de búsqueda de arcpy secuencia de comandos. El usuario abre cualquier mxd, se acerca a un lugar, elige una empresa fGDB, y ejecuta la herramienta. El usuario obtiene una lista de todos los poblados de la clase de entidad que se cruza con la extensión actual. Más tarde, tengo el propósito de escribir un proceso en el que el usuario puede elegir las capas que se desean agregar. Sin embargo, me estoy desviando. Estoy buscando en la incrustación de la arcpy en un complemento, mi primer problema es el aprendizaje de lo que el equivalente de un arcpy.GetParameterAsText es, como quiero que el usuario especifique el espacio de trabajo que necesitan para interrogar.

import arcpy
import pythonaddins
class ButtonClass1(object):
"""Implementation for AddIn_Test4_addin.button (Button)"""
def __init__(self):
    self.enabled = True
    self.checked = False
def onClick(self):
    ################## MAP DOCUMENT DATA FRAME EXTENT

    StagingGDB = arcpy.GetParameterAsText(0)
    #StagingGDB = "C:\\Data\\Projects\\SearchTool\\CorpData1.gdb"
    arcpy.env.workspace = StagingGDB
    ExtentFC = StagingGDB +"\\ExtentFC"

    ############ Clean Up & Pre Check
    if arcpy.Exists(ExtentFC):
        arcpy.Delete_management(ExtentFC)

    ################## MAP DOCUMENT DATA FRAME EXTENT
    mxd = arcpy.mapping.MapDocument("current")
    df = arcpy.mapping.ListDataFrames(mxd)[0]
    currentExtent = df.extent

    ################## EXTENT FC
    pnt1 = arcpy.Point(currentExtent.XMin , currentExtent.YMin)
    pnt2 = arcpy.Point(currentExtent.XMax , currentExtent.YMin)
    pnt3 = arcpy.Point(currentExtent.XMax , currentExtent.YMax)
    pnt4 = arcpy.Point(currentExtent.XMin , currentExtent.YMax)
    array = arcpy.Array()
    array.add(pnt1)
    array.add(pnt2)
    array.add(pnt3)
    array.add(pnt4)
    array.add(pnt1)
    DisplayExtent = arcpy.Polygon(array)
    arcpy.FeatureClassToFeatureClass_conversion(DisplayExtent , StagingGDB ,"ExtentFC", "", "", "")
    pass

Alguna idea?

5voto

ansur Puntos 150

pythonaddins es limitada en la obtención de los parámetros directamente desde un usuario que no están asociados con la tabla de contenido como pythonaddins es principalmente una manera de ofrecer a los desarrolladores de python una forma de interactuar con los eventos del usuario. Lo que está diciendo el principal mecanismo para un desarrollador para obtener los parámetros de un usuario de la misma manera como arcpy.GetParameterAsText es a través de la pythonaddins.OpenFileDialog. Como conseguir GetParameterAsText, pythonaddins.OpenFileDialog toma la entrada del usuario y devuelve una cadena con el desarrollador. Así que, en su caso, usted puede pedir al usuario con OpenFileDialog y, a continuación, utilizar la os y glob módulos en python para más obtener en los archivos de los que desea. Como este:

inFileGDB = pythonaddins.OpenDialog('Open File Geodatabase',False, r'','Open GDB')

Otra opción sería que el usuario seleccione una capa en la tabla de contenido que vive en la geodatabase de archivos de interés y haga clic en el botón. Detrás de las escenas que se utilizaría pythonaddins.GetSelectedTOCLayerOrDataFrame() para acceder a más información sobre el archivo, es decir, la ruta de acceso a la geodatabase que se vive en. Como este:

    lyr = pythonaddins.GetSelectedTOCLayerOrDataFrame()
    lyrDescribe = arcpy.Describe(lyr)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X