Más

¿Identifica los máximos en DEM con ArcGIS Spatial Analyst?

¿Identifica los máximos en DEM con ArcGIS Spatial Analyst?


Tengo un DEM y quiero encontrar cada colina y crear un polígono para su área, efectivamente el contorno cerrado que encierra la colina. Puedo hacer esto visualmente, pero estoy a punto de trabajar en un área más grande, así que necesito encontrar una forma de escanear el DEM en busca de máximos estructurales.

¿Existe una herramienta que haga esto o un flujo de trabajo que pueda acercarme a mis resultados? He estado revisando las herramientas de hidrología en ArcGIS y parecen prometedoras, pero no estoy seguro de que puedan producir lo que estoy buscando. mi DEM.

¿Alguien ha hecho esto antes o saben cómo hacerlo? Estoy usando ArcGIS desktop 10.2 en este momento, pero si tiene una solución en otro software, estoy interesado.


Una forma fácil de hacer esto sería invertir su DEM multiplicándolo por uno negativo (Calculadora ráster) y luego ejecutando el Llenar herramienta en el DEM invertido. Finalmente, reste el DEM lleno del invertido y multiplíquelo por uno negativo nuevamente (devolviéndolo a la escala original). Esto convertirá efectivamente los picos en depresiones y encontrará la altura del derrame de cada depresión cerrada, es decir, la altura del contorno cerrado que rodea el pico / depresión.


Lo que encontré que funcionó mejor incorporó todas las respuestas, así que pensé en agregarlo aquí en lugar de aceptar solo una de ellas. Usé la herramienta 'pico' sugerida por Hornbydd para crear puntos en cada pico, luego invertí mi ráster y lo ejecuté nuevamente para encontrar los puntos bajos. Contorneé el DEM a alta resolución y luego convertí las líneas en polígonos en ET Geowizards (o FME). Luego tomé un alto como un polígono que contenía un pico pero sin valles, y los encontré usando seleccionar por ubicación, luego exporté la selección y la disolví para marcar los polígonos concéntricos.

El código es:

## agregue cajas de herramientas adicionales arcpy.AddToolbox ("…  Spatial Analyst Supplemental Tools.pyt") arcpy.AddToolbox ("…  ET GeoWizards.tbx") ## use la herramienta de picos para generar un punto en cada pico (que son áreas de elevación máxima local) arcpy.Peak_sas (myDEM, "peakrast.tif", "peakpoints.shp") ## Invierte el ráster y usa la herramienta de picos para encontrar valles invDEM = Raster (myDEM) * (- 1) arcpy.Peak_sas (invDEM, "troughrast.tif", "troughpoints.shp") ## crear contornos desde el DEM - arcpy.sa.Contour de alta resolución (myDEM, "Contours_L_1m.shp", 1) ## convertir contornos cerrados en polígonos ## para conjuntos de datos pequeños, este método funcionará, pero para conjuntos de datos más grandes puede que no haya suficiente RAM; si es el caso, use FME y use el transformador AreaBuilder y configure create Donuts en no arcpy.ET_GPPolylineToPolygon ("Contours_L_1m.shp", "Contours_G_1m.shp "," FALSE ") ## seleccionar contornos cerrados que contengan picos pero no valles y exportar a un nuevo FC arcpy.SelectLayerByLocation_management (" Contours_G_1m "," CONTAINS "," peakpoints.shp ") arcpy.SelectLayerB yLocation_management ("Contours_G_1m", "CONTAINS", "troughpoints.shp", "", "REMOVE_FROM_SELECTION") arcpy.FeatureClassToFeatureClass_conversion ("Contours_G_1m.shp", arcpy.env.workspace, "HIGHP#S_raw. ####################### Option2 comentada ## seleccionar contornos cerrados que contiene picos y exportación a un nuevo FC # arcpy.SelectLayerByLocation_management ( "Contours_G_1m.shp", "CONTAINS", "peakpoints.shp") # arcpy.FeatureClassToFeatureClass_conversion ("Contours_G_1m.shp", arcpy.env.workspace, "Peak_Areas.shp") ## seleccionar contornos cerrados que contengan valles pero no picos y exportar a un nuevo FC # arcpy. .FeatureClassToFeatureClass_conversion ("Contours_G_1m.shp", arcpy.env.workspace, "Low_Areas.shp") ## crea una nueva clase de característica que es la alta con las bajas eliminadas # arcpy.Erase_analysis ("Peak_Ar eas.shp "," Low_Areas.shp "," HIGHS_raw.shp ") ############################# fin de la opción 2 ## disuelve la entidad ya que está formada por muchos polígonos concéntricos arcpy.Dissolve_management ("HIGHS_raw.shp", "HIGHS_diss.shp") ## divide la entidad disuelta en funciones individuales y agrega un campo de área arcpy.MultipartToSinglepart_management ("HIGHS_diss .shp "," final_HIGHS.shp ") arcpy.AddField_management (" final_HIGHS.shp "," AREA_CALC "," DOUBLE "," "," "," "," Area ") arcpy.CalculateField_management (" final_HIGHS.shp " , "AREA_CALC", "! Shape! .Area", "PYTHON_9.3")

Lo que esto no hace es encontrar altos con un poco bajo en el medio; eso es lo que la opción 2 en el código está tratando de hacer. No logré que eso funcionara porque también crearía grandes donas donde hay una pequeña altura en el borde de una gran área baja. Creo que la opción perfecta sería la opción dos y luego de alguna manera verificar que los bordes internos y externos de las rosquillas estén a la misma altura. Por ahora, sin embargo, me quedo con la opción 1.


Siempre debe buscar en el sitio web de Arcscripts, ya que hay muchas herramientas de comunidad de usuarios ya escritas.

Una búsqueda rápida de la palabra "pico" arrojó las herramientas complementarias de Spatial Analyst.


Use la calculadora de ráster donde crea un nuevo ráster con la expresióncapa_dgm> = xdonde x es la altura que necesita para su línea de contorno. Eso seleccionará todos los píxeles que se encuentran más altos, necesariamente en las cimas de sus colinas.

Debería poder hacer una conversión de ráster a vector de esas áreas después, si lo necesita.

ACTUALIZAR: como señaló el usuario 30184, esto solo es válido para alturas absolutas, no para máximos locales.