ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Desktop.Mapping Namespace / SurfaceZsResultStatus Enumeration
Example Example Version

SurfaceZsResultStatus Enumeration
Defines the status types resulting from calling Map.GetZsFromSurfaceAsync(). See SurfaceZsResult
Syntax
Members
MemberDescription
CalculationError Error: something went wrong when calculating, probably a SpatialReference issue.
Canceled Information: the calculation was canceled, Zs are not available
InvalidState Error: something went wrong internally.
NoVisibleSourceThe specified ElevationSurfaceLayer has no visible elevation sources, all Zs were set to a constant value, Zs are available.
Ok Calculation went fine, Zs are available.
OutsideDomain Information: input is entirely outside the surface domain, Zs are not available.
Example
Get Elevation profile from the default ground surface
// find the elevation profile for a polyline / set of polylines
var result = await MapView.Active.Map.GetElevationProfileFromSurfaceAsync([lineGeom]);
if (result.Status == SurfaceZsResultStatus.Ok)
{
  var polylineZ = result.Polyline;

  // process the polylineZ
}

// find the elevation profile for a set of points
result = await MapView.Active.Map.GetElevationProfileFromSurfaceAsync(pts);
if (result.Status == SurfaceZsResultStatus.Ok)
{
  var polylineZ = result.Polyline;

  // process the polylineZ
}
Get Elevation profile from a specific surface
// find the elevation profile for a polyline / set of polylines
var eleLayer = MapView.Active.Map.GetElevationSurfaceLayers().FirstOrDefault(l => l.Name == "TIN");
var zResult = await MapView.Active.Map.GetElevationProfileFromSurfaceAsync([lineGeom], eleLayer);
if (zResult.Status == SurfaceZsResultStatus.Ok)
{
  var polylineZ = zResult.Polyline;

  // process the polylineZ
}

// find the elevation profile for a set of points
zResult = await MapView.Active.Map.GetElevationProfileFromSurfaceAsync(pts, eleLayer);
if (zResult.Status == SurfaceZsResultStatus.Ok)
{
  var polylineZ = zResult.Polyline;

  // process the polylineZ
}
Interpolate a line between two points and calculate the elevation profile
int numPoints = 20;

// use the default ground elevation surface
var result = await MapView.Active.Map.GetElevationProfileFromSurfaceAsync(startPt, endPt, numPoints);
if (result.Status == SurfaceZsResultStatus.Ok)
{
  var polylineZ = result.Polyline;

  // process the polylineZ
}

// use a specific elevation surface
var eleLayer = MapView.Active.Map.GetElevationSurfaceLayers().FirstOrDefault(l => l.Name == "TIN");
result = await MapView.Active.Map.GetElevationProfileFromSurfaceAsync(startPt, endPt, numPoints, eleLayer);
if (result.Status == SurfaceZsResultStatus.Ok)
{
  var polylineZ = result.Polyline;

  // process the polylineZ
}
Get Z values from a TIN Layer
var tinLayer = MapView.Active.Map.GetLayersAsFlattenedList().OfType<TinLayer>().FirstOrDefault();
await QueuedTask.Run(() =>
{
  if (tinLayer.CanGetZs())
  {
    // get z value for a mapPoint
    var zResult = tinLayer.GetZs(mapPoint);
    if (zResult.Status == SurfaceZsResultStatus.Ok)
    {
      // cast to a mapPoint
      var mapPointZ = zResult.Geometry as MapPoint;
      var z = mapPointZ.Z;
    }

    // get z values for a polyline
    zResult = tinLayer.GetZs(polyline);
    if (zResult.Status == SurfaceZsResultStatus.Ok)
    {
      // cast to a Polyline
      var polylineZ = zResult.Geometry as Polyline;
    }
  }
});
Inheritance Hierarchy

System.Object
   System.ValueType
      System.Enum
         ArcGIS.Desktop.Mapping.SurfaceZsResultStatus

Requirements

Target Platforms: Windows 11, Windows 10

ArcGIS Pro version: 3 or higher.
See Also