

{
tinLayer = null;
MapPoint observerPoint = null;
MapPoint targetPoint = null;
CIMPointSymbol obstructionPointSymbol = null;
CIMLineSymbol visibleLineSymbol = null;
CIMLineSymbol invisibleLineSymbol = null;
var losParams = new LineOfSightParams();
losParams.ObserverPoint = observerPoint;
losParams.TargetPoint = targetPoint;
// add offsets if appropriate
// losParams.ObserverHeightOffset = observerOffset;
// losParams.TargetHeightOffset = targerOffset;
// add obstruction feature class if appropriate (multipatch)
//losParams.ObstructionsMultipatchFeatureClass = obsFeatureClass;
// set output spatial reference
losParams.OutputSpatialReference = MapView.Active.Map.SpatialReference;
LineOfSightResult results = null;
try
{
// Note: Needs QueuedTask to run
{
if (tinLayer.CanGetLineOfSight(losParams))
results = tinLayer.GetLineOfSight(losParams);
}
}
catch (Exception)
{
// handle exception
}
if (results != null)
{
bool targetIsVisibleFromObserverPoint = results.IsTargetVisibleFromObserverPoint;
//These properties are not used. They will always be false
// results.IsTargetVisibleFromVisibleLine;
// results.IsTargetVisibleFromInvisibleLine;
if (results.VisibleLine != null)
MapView.Active.AddOverlay(results.VisibleLine, visibleLineSymbol.MakeSymbolReference());
if (results.InvisibleLine != null)
MapView.Active.AddOverlay(results.VisibleLine, invisibleLineSymbol.MakeSymbolReference());
if (results.ObstructionPoint != null)
MapView.Active.AddOverlay(results.ObstructionPoint, obstructionPointSymbol.MakeSymbolReference());
}
}
System.Object
ArcGIS.Desktop.Mapping.LineOfSightParams
Target Platforms: Windows 11 Home, Pro, Enterprise (64 bit)