4 votos

Bucle de la máscara en python para arcgis 10

Estoy trabajando con una trama de datos a nivel mundial con una resolución de 30 segundos de arco. Necesito exportar los datos en un formato de tabla, pero dada la alta resolución no se puede ejecutar el "Sample" (Spatial Analyst) comando para todo el conjunto de datos a la vez.

Por lo tanto, he creado una máscara para cada país(con El comando Set Null). Yo estaba tratando de escribir un código en Python, utilizando un bucle donde cada vez que la máscara se convertirá en una zona diferente, es decir, env.máscara = zone1, entonces zone2 y así sucesivamente. Sin embargo, supongo que dentro de un python sesión no se puede mantener en el cambio de la máscara de utilizar un bucle. Podría usted amablemente sugieren una forma de bucle de la máscara (por lo que sólo puedo tener un código para todos los países, pero mi programa aún funciona)?

3voto

Roy Puntos 2884

Una manera de hacerlo es utilizar un cursor que permite trabajar a través de los datos de la fila por fila. Ya que cada fila debe representar un polígono de País (en su caso) puede recorrer a través de la ejecución del Clip cada vez. Algo a tener en cuenta son los países que han islas (varios polígonos). Usted querrá asegurarse de que los datos se encuentran en varias partes de polígonos en contraposición a las características diferentes.

En este ejemplo se ejecuta en la ventana de python, ya que hace referencia a una característica de la capa en ArcMap ventana activa frente a un nombre de ruta de acceso.

import arcpy

# path name variables
clipFeat = r'...'
output = r'...'
raster = r'...'

# Name of OID field
fieldName = "OID"
cursor = arcpy.SearchCursor(clipFeat)
    for poly in cursor:
    mask = poly.OID

        # Create feature layer of current mask polygon
        whereClause = '"' + fieldName + '" = ' + "'" + mask + "'"
        arcpy.MakeFeatureLayer_management(clipFeat, 'currentMask', whereClause)

        # Save the clipped raster
        outRaster = arcpy.sa.ExtractByMask(raster, 'currentMask')
        outRaster.save(output + "\\" + mask + ".tif") # Create your own output name
        arcpy.Delete_management('currentMask')

if arcpy.Exists('currentMask'):
    arcpy.Delete_management('currentMask')
del cursor, poly

Buena Suerte

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