Tengo una cuadrícula de acumulación de flujo y un archivo de formas que contiene áreas de captación. Ahora quiero hacer algunos cálculos sobre ellos, así que necesito extraer datos de las celdas en el ráster adyacente a ciertas áreas de captación.
En ese proceso, trato de usar Extract by Mask en mi ráster, con uno de los polígonos de captación como máscara (en un bucle más adelante, pero ahora solo necesito que funcione una vez).
El problema es que el ráster extraído se desplaza media celda hacia la izquierda, en comparación con el ráster original y el polígono de enmascaramiento. Esto está arruinando el resto de mi proceso, ya que trato de convertir el ráster en puntos e intersectarme con otros polígonos más adelante. Y a menos que el ráster extraído se superponga con el original, no obtendré el polígono correcto.
El ráster original y los polígonos se alinean perfectamente, ya que los polígonos se crean a partir del ráster. He tratado de verificar si de alguna manera ha habido algún tipo de cambio en las proyecciones, pero no puedo encontrar ninguno. También he intentado en nuevos documentos de ArcMap, reiniciando todo varias veces (esto resuelve el problema sorprendentemente a menudo) y ejecutando las herramientas desde el indicador de Python en lugar de llamar a mi script. Incluso he intentado ejecutar la herramienta Extraer por máscara de Toolbox, con el mismo resultado.
Este es el código (muy simple) que uso en el indicador de Python en ArcMap:
inpgs = r'C:\GIS\Catchm_ex.shp'
flowacc = r'C:\GIS\flowacc'
arcpy.MakeFeatureLayer_management(inpgs, 'currentMask', '"HydroID" = 269634')
outRaster = arcpy.sa.ExtractByMask(flowacc, 'currentMask')
Tengo algunos archivos de muestra aquí
Yo uso Windows 7, ArcInfo 10.0 y Python 2.6.
He probado Extract by Polygon ahora, y parece funcionar bien. ¿Es solo mi máquina que no funciona correctamente en ExtractByMask? El único inconveniente es que tengo problemas para usar esa función en mi script, ya que no puedo resolver cómo obtener las coordenadas de mi polígono de enmascaramiento (solo cubre 9 celdas, con un punto en el centro si eso ayuda).
Ahora lo tengo trabajando con Extract by polygon usando el código a continuación (modificado de las páginas de soporte de Esri ). Desafortunadamente, esto no resuelve mi problema. Parece que la salida (de esta herramienta, así como Extraer por máscara) a veces se desplaza media celda a la izquierda, y a veces no. Principalmente lo es, pero ocasionalmente se encuentra donde debería estar.
Así que ahora estoy realmente confundido. ¿Me está sucediendo esto en mi computadora? Si alguien más ha experimentado lo mismo, escriba un comentario para que sepa que no estoy solo :) Para mí, este problema parece ser un problema demasiado grande para ser un error, lo que me deja con esto como un problema que me he creado en el camino.
¿Alguna idea sobre cómo evitarlo?
def ReadPoints(infc):
try:
import arcpy, numpy
except ImportError:
sys.exit('Unable to import arcpy')
# Identify the geometry field
desc = arcpy.Describe(infc)
shapefieldname = desc.ShapeFieldName
points = []
# Create search cursor
rows = arcpy.SearchCursor(infc)
# Enter for loop for each feature/row
for row in rows:
# Create the geometry object
feat = row.getValue(shapefieldname)
partnum = 0
# Step through each part of the feature
for part in feat:
# Step through each vertex in the feature
for pnt in feat.getPart(partnum):
if pnt:
points.append([int(pnt.X), int(pnt.Y)])
pt = numpy.array(points)
pts = []
for i in range(len(pt)):
t = pt[i]
pts.append(arcpy.Point(t[0],t[1]))
return pts
En sus entornos ráster, configure el ráster de ajuste para que sea el mismo que el ráster de entrada (el que se extrae). Esto evitará cualquier cambio.
fuente