2 votos

Configuración de parámetros en el script de escritorio de ArcGIS

¿Cómo puedo crear los parámetros pixel_type y number_of bands (como se encuentra en MosaicToNewRaster) como entradas de usuario al inicio de mi propio script?

ERROR 000714: Error en el script BatchMosaic. Error al ejecutar: cmd.exe /C C:\Erosion\Scripts\BATCHM ~1.PY " C:\finalproject\Mosaic " " C:\finalproject\Mosiac_out " "mosaicme" "32_BIT_SIGNED" "1" Fallo en la ejecución (BatchMosaic).

import arcpy, os, sys

#User parameters.
in_workspace = sys.argv[1]
out_workspace = sys.argv[2]
output_name = sys.argv[3]

def getParameterInfo(self):
    param4 = arcpy.Parameter(
        pixel_type="Input value")

    param4.filter.type = "ValueList"
    param4.filter.list = [""]

def getParameterInfo(self):
    param5 = arcpy.Parameter(
        number_of_bands="Input value")

    param5.filter.type = "ValueList"
    param5.filter.list = []

#Attempts to mosaic all raster files in root and sub directories.
rasters = []
for dirpath, dirnames, filenames in arcpy.da.Walk(in_workspace, topdown = True, datatype="RasterDataset", type = "TIF"):
    for filename in filenames:
        rasters.append(os.path.join(dirpath, filename))

#Pixel Type and Number of Bands must be manualy inserted to script.
arcpy.MosaicToNewRaster_management(';'.join(rasters), out_workspace, output_name, pixel_type = "32_BIT_UNSIGNED", number_of_bands = 1)

enter image description here

4voto

Flinkman Puntos 4821

Tu código es bastante bonito, gracias por el ejemplo arcpy.da.walk, hay un poco de confusión acerca de alimentar una herramienta con los valores correctos y sys.argv, arcpy.GetParameter y arcpy.GetParameterAsText... I siempre uso sys.argv, sobre todo porque es menos escribir, sino que también toma la confusión de suministrar el tipo correcto a la herramienta.

import os, sys, arcpy

BaseFolder = sys.argv[1]
OutFolder  = sys.argv[2]
OutName    = sys.argv[3]

SpatRel    = sys.argv[4]
PixelType  = sys.argv[5]
NumBands   = sys.argv[6]

rasters = []

for dirpath, dirnames, filenames in arcpy.da.Walk(BaseFolder , topdown = True, datatype="RasterDataset", type = "TIF"):
    # thanks for that, I used to use os.walk() but this is much handier
    for filename in filenames:
            rasters.append(os.path.join(dirpath, filename))

arcpy.MosaicToNewRaster_management(';'.join(rasters),OutFolder,OutName,SpatRel,PixelType,number_of_bands = NumBands) # note, skipping cell size

Este es su guión con unas breves modificaciones. Tenga en cuenta que he omitido el parámetro CellSize en la herramienta utilizando el parámetro por su nombre number_of_bands = NumBands esto puede hacerse para cualquier parámetro opcional.

Para añadir esto a una caja de herramientas es necesario especificar un parámetro de script por sys.argv[] (o GetParameterAsText):

enter image description here

El tipo de datos de la segunda columna tiene nada que ver con lo que se pasa a la herramienta, sólo es utilizado por la herramienta para ayudarle a encontrar los elementos correctos .. por ejemplo, si especifica "clase de característica" la herramienta sólo le permitirá buscar una clase de característica, pero la secuencia de comandos no se pasa una clase de característica - que se pasa un cadena con la ruta de acceso a la clase de características.

Si desea controlar los tipos de píxeles a una lista de valores que lo haga en el cuadro de diálogo de la herramienta: enter image description here

Y esto reduce las opciones que se le da a elegir ... que también es útil en un lunes por la mañana - cuando usted está luchando para recordar era que Int32, Int_32, 32 bits o 32_bit_int ... al dar sólo unas pocas opciones (todas válidas) no hay posibilidad de dar el valor incorrecto a la herramienta ... ser sensato, sin embargo, la mayoría de los raster son 8 bits sin signo, 32 bits flotante o algún valor entero. Si no trabajas con imágenes de 1 bit o 64 bit Int por ejemplo entonces ¡no lo pongas en la lista!

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