1

I would like to create centerlines for many glaciers I am doing work with in ArcMap. I feel like I have a conceptual model that could work but can't seem to figure out how to make it happen with the tools available. I have polygons for each glacier outline, and DEMs for elevation data.

My idea is as follows:

  1. Using zonal stats find max/min elevation for each glacier using the outline polygons
  2. Turn the max and min pixel into a point file
  3. Then find either a least cost path using the DEM between the max/min for each glacier(seems complicated) or find the path between the two points that lies in the center of either side of the polygon.

It's the last step I need help with.

PolyGeo
  • 65,136
  • 29
  • 109
  • 338
user119128
  • 21
  • 1
  • Does this help https://support.esri.com/en/technical-article/000012414, it's for vectors but you can convert your raster to vectors for your glaciers. I think what you're describing is a flow path, not a centreline, which one do you want? You could get a flow path using the hydro tools (fill sinks first) http://downloads.esri.com/blogs/hydro/ah2/arc_hydro_tools_2_0_overview.pdf and https://support.esri.com/en/technical-article/000012346 – Michael Stimson Apr 20 '18 at 03:50
  • Due to usually convex shape of glacier tongue, Hydrology tools won't work most of the time, flowpath will hit a side of the glacier before reaching low point. – FelixIP Apr 20 '18 at 04:10

2 Answers2

5

This is workflow for single glacier:

arcpy.PolygonToLine_management("Glacier", "./OUTLINE.shp")
arcpy.InterpolateShape_3d("DEM", "OUTLINE", "./outline3d.shp")
arcpy.FeatureVerticesToPoints_management("outline3d", "./points3d.shp", "ALL")
arcpy.AddZInformation_3d("points3d", "Z")
arcpy.Sort_management("points3d", "./sorted.shp", "Z DESCENDING")
# select extreme points
arcpy.SelectLayerByAttribute_management("sorted", "NEW_SELECTION", '"FID" in ( 0, 772)')
arcpy.SplitLineAtPoint_management("OUTLINE", "sorted", "./threeOrMore.shp", "0.5 Meters")
# set environment extent to glacier
arcpy.gp.EucAllocation_sa("threeOrMore", "./alloc", "", "", "5", "FID", "", "")
arcpy.gp.FocalStatistics_sa("ALLOC", "./fstat", "Rectangle 3 3 CELL", "RANGE", "DATA")
arcpy.gp.Thin_sa("fStat", "./thinned", "ZERO", "NO_FILTER", "ROUND", "50")
arcpy.RasterToPolyline_conversion("thinned", "./Skeleton.shp", "ZERO", "0", "SIMPLIFY", "VALUE")
arcpy.Clip_analysis("Skeleton", "Glacier", "./clipped.shp")
arcpy.SelectLayerByLocation_management("clipped", "INTERSECT", "sorted", "10 Meters")
arcpy.Dissolve_management("clipped", "./c_line.shp", "", "", "SINGLE_PART")

enter image description here

It's enough to create a loop through individual features to achieve your goal. You still need to decide what to do with holes in polygons caused by nunataks.

Hornbydd
  • 43,380
  • 5
  • 41
  • 81
FelixIP
  • 22,922
  • 3
  • 29
  • 61
2

GLARE toolbox created by bunch of authors have option for glacier flowline creation, it is called there "Trunk Stream Tool".

enter image description here

The inputs are:

  • Moraine - Frontal or lateral moraines that indicate the lower limit
    of the glacier
  • Zone Field - Field in the moraine feature class that
    identifies different features
  • DEM
  • Min Flow Accumulation (optional) - Minimum number of pixels from which water upstream would flow to consider a point as part of a stream
  • Output File Name - Name and storage for the resulting flowline
  • Output watershed (optional) - Name and storage for the resulting watershed

enter image description here

Here is a full information and article about the toolbox:

Ramón Pellitero, Brice R. Rea, Matteo Spagnolo, Jostein Bakke, Susan Ivy-Ochs, Craig R. Frew, Philip Hughes, Adriano Ribolini, Sven Lukas, Hans Renssen - GlaRe, a GIS tool to reconstruct the 3D surface of palaeoglaciers - Computers & Geosciences, Volume 94, 2016, Pages 77-85, ISSN 0098-3004.

sciencedirect.com, researchgate.com

sk1me
  • 364
  • 2
  • 12