7 votos

¿Selección de características del vector que superposición raster en ArcPy?

Tengo dos conjuntos de datos: clase de entidad de punto y trama (almacenado en la geodatabase de archivos).

La extensión espacial de la trama es más pequeño que el punto del conjunto de datos.

Es allí una manera de que yo pueda seleccionar (o crear una nueva capa temporal/clase de entidad) sólo los puntos que caen dentro de la extensión de la trama?

Básicamente me gustaría tener una salida similar a Clip o Intersect de herramientas, pero no parecen aceptar los rásteres como entradas.

Es allí fácilmente disponibles arcpy herramienta(s) que podría ser utilizado para lograr eso? O sería necesario que alguna solución personalizada?

6voto

Ron Tuffin Puntos 113

Puede utilizar la herramienta "Raster a polígono" de las "herramientas de conversión". Como salida obtienes un shapefile con la extensión de la imagen raster. Con este shapefile y el otro podría ejecutar el comando intersect.

import arcpy
from arcpy import env
env.workspace = "C:/data"
arcpy.RasterToPolygon_conversion("zone", "c:/output/zones.shp", "NO_SIMPLIFY",
                                  "VALUE")

6voto

Aaron Puntos 25882

La secuencia de comandos adjunta que utiliza Trama dominio funcionará para usted.

# Import arcpy module
import arcpy
from arcpy import env

# Check out any necessary licenses
arcpy.CheckOutExtension("3D")

# Set Workspace
env.workspace = r"C:\data"

# Create a polygon around the raster boundary
arcpy.RasterDomain_3d("inRaster.tif", "outShp", "POLYGON")

# Intersect points with boundary polygon
arcpy.Intersect_analysis(["outShp.shp", "points.shp"], "intersect_output", "ALL", "", "INPUT")

Un enfoque directo, no de ESRI, echa un vistazo geoespacial modelado del entorno (GME) isectpntrst (puntos de intersección con trama).

5voto

Matt Puntos 297

Usar estas herramientas de ArcToolbox:

1-Spatial Analyst Tools> Raster Creation> Create Constant Raster ("Constant value" can
  be 0.5, 1, ... and "Output extent" must be your overlay raster )

2-Conversion Tools> From Raster> Raster to Polygon (Use output raster from step1)

3-Analysis Tools> Overlay> Intersect (the polygon with the points)

4-Done!

y aquí está el modelo:enter image description here

1voto

Fred Strauss Puntos 425

Raster to Polygon > Intersección sin duda el trabajo.

Dependiendo del tamaño de la trama (en términos de filas/columnas, no la extensión geográfica) la Trama Polígono paso puede ser computacionalmente costoso.

Si la trama no contiene ninguna de las áreas de nodata, o no le importa si se incluyen los puntos que caen en nodata, muy rápida solución sería establecer el entorno de la extensión a la extensión de la trama, y, a continuación, cree una copia del archivo que contendrá solamente los puntos dentro de la extensión de la trama del cuadro delimitador. La 'Copia' de la herramienta no utiliza el entorno de la extensión, así que me gustaría usar la 'mezcla' de la herramienta con solo un punto del conjunto de datos como entrada.

import arcpy
from arcpy import env

#set environment to raster extent
env.extent = yourraster

arcpy.Merge_management(yourpoints, output_points)

El gran valor de este método es que es muy rápido.

Si la trama contiene áreas de nodata que desea excluir de su punto final conjunto de datos, puede utilizar la herramienta Spatial Analyst "Extraer los Valores de los Puntos". De nuevo, establecer su grado variable de entorno en la medida de la trama y, a continuación, utilizar la ExtractValuesToPoints herramienta para crear un archivo de punto de los puntos que caen dentro del alcance de su trama con un nuevo campo llamado RASTERVALU. Puntos de caída en nodata contenedores tendrá un valor de '-9999' (advertencia: si la trama contiene los valores reales de -9999, que podría ser un problema - no sé si hay una solución).

import arcpy
from arcpy import env
from arcpy import sa

#Check out Spatial Analyst license or raise exception
if arcpy.CheckExtension("Spatial") == "Available":
    arcpy.CheckOutExtension("Spatial")
else:
    sys.exit('Spatial Analyst license not available.')

env.extent = yourraster

sa.ExtractValuesToPoints(yourpoints, yourraster, outputpoints)

A continuación, puede seleccionar los puntos con valores nodata para eliminarlos de tu punto de salida de archivo, o extracto de los puntos relevantes a través de cualquier método que funciona para usted.

Bono a esto es que se adhiere a los valores del ráster a cada uno de sus puntos, por lo que no sólo puede seleccionar los puntos que no caiga en el nodata, pero usted puede mostrar y manipular sus otros puntos relativos a los asociados ráster de valores. NOTA: ExtractValuesToPoints no funciona con varias características de punto.

ExtractMultiValuesToPoints también funcionaría.

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