11 votos

La adición de código arbitrario a ArcGIS ModelBuilder?

Hay alguna forma de agregar fragmentos de código arbitrario a una de ArcGIS modelo?

Me imagino algo similar a las "bloque de código" el generador de expresiones avanzadas de etiquetado o la calculadora de campo.

Por ejemplo, mi proyecto de el momento en que podrían beneficiarse de ir a buscar el nombre de usuario de la persona que ejecuta la herramienta. Sé que en python se trata de un simple import os; os.environ.get('USERNAME'). Creo que podría escribir que snippet get_username.py, agregarlo a una caja de herramientas en Arccatalog, a continuación, añadir la herramienta a la modelo y utilizarlo como por-requisito de parámetros para el modelo de mi herramienta. Eso es un montón de trabajo para algo tan pequeño, y la próxima vez que necesitemos algo más, como en línea de la sustitución de variable o de un compuesto de la variable.

Creo que un fragmento de código de la herramienta o similar, frente a todas estas necesidades en un genérico, ampliamente manera provechosa.

10voto

auramo Puntos 161

En realidad, usted puede hacer esto con el Calcular el Valor de (Gestión de Datos) de la herramienta.

No es muy elegante (todo el código fuente de la herramienta está impreso en el registro de cada vez que se ejecuta), y el editor (en realidad, sólo una caja de texto) es abismal.

Yo sugeriría que la escritura de los módulos que a continuación, puede importar y funciones de llamada y, a continuación, sólo se necesita escribir muy cortos fragmentos de código en el cuadro de diálogo. De lo contrario, simplemente no es muy limpio.

Calcular el Valor está disponible en todos los niveles de licencia de Arcgis v10. Con la v9.x está disponible para Arcview sólo si Espaciales o de 3D Analyst extensiones instaladas (ref).

3voto

aditya Puntos 111

Nueva respuesta a un viejo post, solo para aclarar cómo crear una re-utilizable modelo para ello.

Abrir el modelo, Insertar-> Modelo Sólo Herramientas-> Calcular el Valor.

En la Expresión, escriba: getuser()

En el Bloque de Código, escriba:

def getuser():
    import getpass
    return getpass.getuser()

(Consulte "Obtener nombre de usuario en el formato específico" para el origen de nombre de usuario fragmento de código en @ChadCooper)

Para el Tipo de Datos, elija String.

enter image description here

Cambiar el nombre de la salida de un círculo, username. El resultado final del modelo se verá así: Using Calculate Value tool

Y entonces usted puede simplemente arrastrar este modelo en cualquier de los futuros modelos de referencia y la variable %username% en los futuros modelos o secuencias de comandos. Sólo asegúrese de que este modelo se ejecuta antes de intentar acceder a la variable %username%. Usted puede hacer esto mediante el uso de una condición previa.

2voto

Chris Upchurch Puntos 10484

Tal vez me estoy entendiendo la pregunta, pero parece que la secuencia de comandos de python las funciones de las herramientas, dentro de ArcToolBox, es lo que estamos buscando:

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/Integrating_scripts_within_a_model/002w0000006n000000/

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//001500000006000000.htm

Usted puede, de hecho, el uso/combinar varios otros lenguajes de scripting (R en este ejemplo):

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//002w0000007w000000

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