8 votos

¿Extraer valores a puntos sin ArcGIS Spatial Analyst?

Tengo un DEM rasterizado y múltiples puntos. Quiero determinar la elevación del MDE en cada punto. Aparte de examinar manualmente el MDE en cada punto (lo que lleva mucho tiempo con muchos puntos), ¿hay alguna manera de hacerlo sin tener acceso a la herramienta de extracción de valores a puntos de Spatial Analyst? Tengo acceso a 3d Analyst si eso ayuda.

0 votos

10voto

FelixIP Puntos 4035

Guión:

import arcpy, traceback, sys, os

pntFile=arcpy.GetParameterAsText(0)
rasters=arcpy.GetParameterAsText(1)

rasters=rasters.split(';')
theFields=[x.name.lower() for x in arcpy.ListFields(pntFile)]
result=arcpy.GetCount_management(pntFile)
nF=int(result.getOutput(0))
p=arcpy.Point()
try:
    def showPyMessage():
        arcpy.AddMessage(str(time.ctime()) + " - " + message)
    for raster in rasters:
                desc=arcpy.Describe(raster)
                theFLD=raster.lower()
                arcpy.AddMessage("Sampling "+theFLD)
                if not(theFLD in theFields):
                        try:arcpy.AddField_management(pntFile, theFLD, "FLOAT")
                        except:
                                aF=raster.split(os.sep)[-1]
                                theFLD=aF.split(".")[0]
                                theFLD="F"+theFLD
                                arcpy.AddField_management(pntFile, theFLD, "FLOAT")
                arcpy.SetProgressor("step", "", 0, nF)
                with arcpy.da.UpdateCursor(pntFile,("SHAPE@XY",theFLD)) as rows:
                        for row in rows:
                                p.X,p.Y=row[0]
                                myArray = arcpy.RasterToNumPyArray(raster,p,1,1,-9999)
                                row[1]=myArray[0,0]
                                rows.updateRow(row)
                                arcpy.SetProgressorPosition()
                        del row,rows
except:
    message = "\n*** PYTHON ERRORS *** "; showPyMessage()
    message = "Python Traceback Info: " + traceback.format_tb(sys.exc_info()[2])[0]; showPyMessage()
    message = "Python Error Info: " +  str(sys.exc_type)+ ": " + str(sys.exc_value) + "\n"; showPyMessage()

Interfaz:

enter image description here

para trabajar de MXD dan raster(s) corto nombre único de tabla de contenido. Guión creará campo mismo nombre y tratar de rellenar con valores de celda.

Es lento, así uso con menos de 1000 puntos

0 votos

Hola, gracias por el guión. He intentado ejecutarlo un par de veces pero da este error "línea 27, en <módulo> para fila en filas: Tue May 17 12:56:55 2016 - Python Error Info: <tipo 'exceptions.RuntimeError'>: Se ha especificado una columna que no existe." ¿alguna idea? gracias.

0 votos

¿Cómo se llama esta trama en el índice mxd?

0 votos

He probado con DEMH y DEMH_copy como nombres de trama.

6voto

ThePiercingPrince Puntos 371

Analista 3D Añadir información sobre la superficie añadirá un campo Z a sus datos vectoriales con el valor de los datos de la capa rasterizada superpuesta:

Interpola las propiedades de elevación de la superficie para puntos, multipuntos y polilíneas.

Eso es para la v10, no capté qué versión de ArcGIS estabas usando.

4voto

David L Morris Puntos 917

Puede hacerlo con el programa gratuito de Hawthorne Beyer Entorno de modelización geoespacial (GME, antes conocido como Hawth's Tools). Allí hay una herramienta, Intersección de puntos con Raster que, como su nombre indica, actúa como la herramienta Intersección de ArcGIS, pero permite intersecar una capa de puntos con una trama, como la herramienta Extraer valores a puntos. También puede aplicar una consulta SQL a su capa de puntos para extraer sólo los valores ráster de un subconjunto de puntos. Tendrá que instalar o actualizar R en su PC, y también GME (depende de ArcGIS pero puede ejecutarse independientemente de una sesión de ArcGIS).

0 votos

Llegados a este punto, también puedes utilizar R. Incluyendo la adición de bibliotecas y la lectura de datos, sólo se necesitan unas 4 líneas de código para hacerlo y puedes consultar los datos sobre la marcha utilizando una sintaxis de índice.

1voto

Sushant23 Puntos 329

Otra opción para extraer valores ráster a shapefile de puntos es utilizar QGIS, que es un software gratuito de código abierto. Desde el gestor de plugins de QGIS descargue Plugin: Herramienta de muestreo de puntos que puede extraer múltiples valores ráster a un shapefile de puntos similar a Extraer los multivalores a los puntos que requiere la extensión Spatial Analyst en ArcGIS.

La herramienta funciona perfectamente si la proyección de los datos raster y el shapefile son iguales. Trabajar con diferentes proyecciones para los datos raster(s) y shapefile creará un shapefile con columnas vacías de valores raster.

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