¿Hay alguna forma de agregar fragmentos de código arbitrario a un modelo de ArcGIS?
Imagino algo similar al "bloque de código show" del generador de expresiones en el etiquetado avanzado o la calculadora de campo .
Por ejemplo, mi proyecto del momento podría beneficiarse enormemente al buscar el nombre de usuario de la persona que ejecuta la herramienta. Sé que en Python esto es simple import os; os.environ.get('USERNAME')
. Creo que podría escribir ese fragmento get_username.py
, agregarlo a una caja de herramientas en Arccatalog, luego agregar esa herramienta al modelo y usarla como parámetro de modelo requerido para mi herramienta actual. Eso es mucho trabajo para una cosa tan pequeña, y la próxima vez podría querer algo más, como la sustitución de variables en línea o una variable compuesta .
Creo que una herramienta de fragmento de código o similar podría abordar todas estas necesidades de manera genérica y ampliamente útil.
fuente
Respuestas:
Nueva respuesta a una publicación anterior, solo para aclarar cómo crear un modelo reutilizable para hacer esto.
Abra el modelo, Insertar-> Herramientas solo modelo-> Calcular valor.
En la expresión, escriba:
getuser()
En el bloque de código, escriba:
(Consulte " Obtener el nombre de usuario en un formato específico " para obtener el fragmento de código de nombre de usuario de @ChadCooper)
Para Tipo de datos, elija
String
.Cambie el nombre del círculo de salida a
username
. El modelo de resultado final se verá así:Y luego puede arrastrar este modelo a cualquier modelo futuro y hacer referencia a la variable llamada% username% en cualquier modelo o script futuro. Solo asegúrese de que este modelo se ejecute antes de intentar acceder a la variable% username%. Puede hacer esto utilizando una condición previa .
fuente
En realidad, puede hacerlo con la herramienta Calcular valor (gestión de datos) .
No es particularmente elegante (todo el código fuente de la herramienta se imprime en el registro cada vez que se ejecuta), y el editor (realmente solo un cuadro de texto) es abismal.
Sugeriría escribir módulos desde los que luego pueda importar y llamar funciones, y luego solo necesitaría escribir fragmentos muy cortos en el cuadro de diálogo. De lo contrario, no es muy limpio.
Calcular valor está disponible en todos los niveles de licencia para Arcgis v10. Con v9.x está disponible para Arcview solo si las extensiones Spatial o 3D Analyst están instaladas ( ref .).
fuente
%USERNAME%
en una conexión de base de datos .sde). De acuerdo en que el editor no es digno de ese nombre, funciona bien como destino de pegado.Quizás estoy malinterpretando la pregunta, pero parece que la funcionalidad de la herramienta de script de Python, dentro de ArcToolBox, es lo que está 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
De hecho, también puede usar / combinar varios otros lenguajes de secuencias de comandos (R en este ejemplo):
http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//002w0000007w000000
fuente