Get the outline geometry for the corresponding feature identified by the object id.
This method must be called on the MCT. Use QueuedTask.Run.
Get the Mask Geometry for a Feature
var featureLayer = MapView.Active.Map.GetLayersAsFlattenedList()
.OfType<BasicFeatureLayer>().FirstOrDefault();
if (featureLayer == null)
return;
var mv = MapView.Active;
QueuedTask.Run(() =>
{
using (var table = featureLayer.GetTable())
{
using (var rc = table.Search())
{
//get the first feature...
//...assuming at least one feature gets retrieved
rc.MoveNext();
var oid = rc.Current.GetObjectID();
//Use DrawingOutlineType.BoundingEnvelope to retrieve a generalized
//mask geometry or "Box". The mask will be in the same SpatRef as the map
//At 2.x - var mask_geom = featureLayer.QueryDrawingOutline(oid, mv, DrawingOutlineType.Exact);
var mask_geom = featureLayer.GetDrawingOutline(oid, mv, DrawingOutlineType.Exact);
//TODO - use the mask geometry...
}
}
});
Get the Mask Geometry for an Annotation
var annoLayer = MapView.Active.Map.GetLayersAsFlattenedList()
.OfType<AnnotationLayer>().FirstOrDefault();
if (annoLayer == null)
return;
var mv = MapView.Active;
QueuedTask.Run(() =>
{
//get the first annotation feature...
//...assuming at least one feature gets selected
using (var fc = annoLayer.GetFeatureClass())
{
using (var rc = fc.Search())
{
rc.MoveNext();
using (var row = rc.Current)
{
var oid = row.GetObjectID();
//Use DrawingOutlineType.BoundingEnvelope to retrieve a generalized
//mask geometry or "Box". The mask will be in the same SpatRef as the map.
//The mask will be constructed using the anno class reference scale
//At 2.x - var mask_geom = annoLayer.QueryDrawingOutline(oid, mv, DrawingOutlineType.Exact);
var mask_geom = annoLayer.GetDrawingOutline(oid, mv, DrawingOutlineType.Exact);
}
}
}
});
Target Platforms: Windows 11, Windows 10
ArcGIS Pro version: 3 or higher.