ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Desktop.Mapping Namespace / Map Class / GetZsFromSurfaceAsync Method / GetZsFromSurfaceAsync(Geometry) Method
the input geometry
Example Version

GetZsFromSurfaceAsync(Geometry) Method
Obtains a geometry that is similar to the given input geometry, where all Z values are populated from the default Ground Surface Layer.
Syntax
public Task<SurfaceZsResult> GetZsFromSurfaceAsync( 
   Geometry geometry
)

Parameters

geometry
the input geometry

Return Value

A result that contains a status, plus an output geometry only if the status is favorable.
Exceptions
ExceptionDescription
The input geometry is null.
This Map does not have a Ground Surface Layer.
This Map does not have a CIM definition.
This Map does not have any surfaces.
Remarks
If the surface has no data at a particular input geometry point, then the corresponding output geometry point Z will be set to the value specified in SurfaceZsMissingHandler.DefaultOutputZ.
Example
Get Z values from the default ground surface
var mapPoint = await QueuedTask.Run<MapPoint>(() =>
{
  MapPoint mapCentergeometry = MapView.Active.Map.CalculateFullExtent().Center;
  return mapCentergeometry;
});
//Pass any Geometry type to GetZsFromSurfaceAsync
var surfaceZResult = await MapView.Active.Map.GetZsFromSurfaceAsync(mapPoint);
if (surfaceZResult.Status == SurfaceZsResultStatus.Ok)
{
  // cast to a mapPoint
  var mapPointZ = surfaceZResult.Geometry as MapPoint;
  var z = mapPointZ.Z;
}
Get Z values from a specific surface
var eleLayer = MapView.Active.Map.GetElevationSurfaceLayers().FirstOrDefault(l => l.Name == "TIN");
//Pass any Geometry type to GetZsFromSurfaceAsync
var zResult = await MapView.Active.Map.GetZsFromSurfaceAsync(polyline, eleLayer);
if (zResult.Status == SurfaceZsResultStatus.Ok)
{
  var polylineZ = zResult.Geometry as Polyline;

  // process the polylineZ
}
Requirements

Target Platforms: Windows 11, Windows 10

ArcGIS Pro version: 3 or higher.
See Also