4 votos

Tienda "plantilla" mxds dentro del modelo

Dado que la capacidad para almacenar mxds dentro de un archivo gdb es solo una idea, he estado meditando sobre mis opciones para el uso de una "plantilla" mxd dentro de un modelo. Mi modelo utiliza 4 diferentes mxds, pero en la actualidad se acepta de una en una (es decir, ejecutar el modelo de 4 veces para cada clase de entidad, el uso de las diferentes mxds). El modelo hace varias cosas tales como guardar una copia de la "plantilla" como una nueva mxd, la sustitución de fuentes de datos etc.

Hasta ahora he "Plantilla de Entrada mxd" como un modelo de parámetro. Esto está muy bien, si yo soy el que se ejecuta el modelo, de modo que sé que mxd es la correcta. Sin embargo, si alguien fuera a ejecutar el modelo, se podría introducir cualquier mxd que deseaba, lo que conduciría inevitablemente a la modelo en su defecto. Las opciones que pensé fueron:

1. Trust that the user will enter the correct template mxd containing 
   the correct layers: if only.
2. Force the user to enter a template mxd which has the correct name: 
   won't work in this multiple template mxds scenario, as I would then have to 
   duplicate the model 4 times to check for the 4 different names. Alternatively,
   if I wrote an if statement inside the model to check which template I'm receiving,
   it still would not potentially stop the user from renaming Template1.mxd to 
   Template2.mxd, causing the wrong processes to run.
3. Store the templates inside the same file gdb with the model: as stated, 
   cannot be done.

Mi escenario actual tiene mi modelo y las características de la plantilla clases dentro de un gdb, dentro de una carpeta junto con los cuatro plantilla mxds. El modelo automáticamente los accesos de cada plantilla mxd según sea necesario, de modo que la rama para cada plantilla se ejecuta de forma consecutiva cada vez que se ejecuta el modelo. Sin embargo, el usuario aún puede cambiar el nombre del mxds, o simplemente eliminarlos de la carpeta...

Mi pregunta es, hay alguna manera de alguna manera que guarde la plantilla mxds dentro del modelo en sí mismo o en alguna otra forma para que el usuario no puede cambiar?

3voto

Simon Nickerson Puntos 17147

Usted puede proveer todos los archivos adicionales (mxds) en un archivo zip. Para proteger aún más a ellos que usted puede establecer una contraseña para tal archivo o comparar las sumas de comprobación.

Para hacer esto usted necesita para crear y usar secuencia de comandos de python en el módulo. Acaba de escribir la secuencia de comandos que se descomprima el mxds a alguna carpeta temporal (puede pasar esta carpeta y el archivo zip como un parámetro de entrada para la secuencia de comandos). A continuación, agregue esta secuencia de comandos para su caja de herramientas y en que modelo en el Modelo del Generador.

Otra forma es exportar el modelo entero a python y realizar más desarrollo. Estoy por lo general prefieren esta forma, en los casos en que estoy frente adicionales más complejas tareas de procesamiento y tienen necesidades en otras librerías.

Incluso hay una manera más para: se puede crear una secuencia de comandos de python para ArcToolbox que aceptar a todos los necesarios parámetros de entrada, a continuación, descomprima el mxds y ejecutar el modelo personalizado (el que tiene ahora), luego de realizar todas las operaciones de limpieza (de los ficheros de archivos). De tal manera que sólo el cambio de punto de entrada para la tarea de procesamiento.

Aquí hay algunos puntos para empezar a partir de:

  1. ¿Cómo puedo comprimir el contenido de una carpeta usando python?.
  2. Unziping archivos en python
  3. Consideraciones a la hora de exportar un modelo a una secuencia de comandos de Python

3voto

Hameno Puntos 129

Dado que le preocupa que el usuario ejecute el mxd incorrecto, le sugiero que elimine ese parámetro del modelo mxd y use la opción Iterar archivos para ejecutar su modelo en cada plantilla mxd.

0voto

Ali Asad Puntos 772

Si lo estoy entendiendo bien: puede usar una variable (o una lista de selección significativa) y luego insertar un bucle condicional ..else para todos estos mxds.

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