5 votos

Crear condicional para verificar si el ráster tiene valor

Tengo un problema con este código:

 ac = ExtractByMask(raster, "area.shp")
arcpy.RasterToPoint_conversion(ac, "point.shp", "VALUE")
 

El problema es que a veces el ráster no tiene valor. (Es una acumulación de flujo y la precisión de mi ráster no es suficiente para lo que estoy preguntando, pero ese no es el punto). Entonces, RasterToPoint no puede funcionar.

Entonces mi pregunta es:
¿Cómo puedo hacer una condición como: "if my raster has no value, don't do the RasterToPoint"

7voto

Aaron Puntos 25882

Hay varias formas de incorporar propiedades de trama en una instrucción condicional. Aquí hay tres métodos:

 import arcpy, os, numpy

ras = r"C:\path\to\raster.tif"

# Method 1 Using Spatial Analyst
if arcpy.sa.Raster(ras).maximum > 0:
    arcpy.RasterToPoint_conversion(ras, r"C:\temp\out.shp", "VALUE")

# Method 2 using the raster properties
if arcpy.GetRasterProperties_management(ras, "MAXIMUM").getOutput(0) > 0:
    arcpy.RasterToPoint_conversion(ras, r"C:\temp\out.shp", "VALUE")

# Method 3 Describing the raster via a numpy array
array = arcpy.RasterToNumPyArray(ras)

if numpy.max(array) > 0:
    arcpy.RasterToPoint_conversion(ras, r"C:\temp\out.shp", "VALUE")
 

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