Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public partial class DistanceMeasurement : ContentPage
new Uri("https://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer");

// Reference to the measurement used.
private LocationDistanceMeasurement _distanceMeasurement;
private ExploratoryLocationDistanceMeasurement _distanceMeasurement;

public DistanceMeasurement()
{
Expand Down Expand Up @@ -65,7 +65,7 @@ private void Initialize()
// Create an initial distance measurement and show it.
MapPoint start = new MapPoint(-4.494677, 48.384472, 24.772694, SpatialReferences.Wgs84);
MapPoint end = new MapPoint(-4.495646, 48.384377, 58.501115, SpatialReferences.Wgs84);
_distanceMeasurement = new LocationDistanceMeasurement(start, end);
_distanceMeasurement = new ExploratoryLocationDistanceMeasurement(start, end);
measureAnalysisOverlay.Analyses.Add(_distanceMeasurement);

// Keep the UI updated.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,20 +15,20 @@ Choose a unit system for the measurement. Tap any location in the scene to start
## How it works

1. Create an `AnalysisOverlay` object and add it to the analysis overlay collection of the `SceneView` object.
2. Specify the start location and end location to create a `LocationDistanceMeasurement` object. Initially, the start and end locations can be the same point.
2. Specify the start location and end location to create an `ExploratoryLocationDistanceMeasurement` object. Initially, the start and end locations can be the same point.
3. Add the location distance measurement analysis to the analysis overlay.
4. The `MeasurementChanged` event will be raised if the distances change. You can get the new values for the `DirectDistance`, `HorizontalDistance`, and `VerticalDistance` from the event arguments.

## Relevant API

* AnalysisOverlay
* LocationDistanceMeasurement
* LocationDistanceMeasurement.MeasurementChanged
* ExploratoryLocationDistanceMeasurement
* ExploratoryLocationDistanceMeasurement.MeasurementChanged

## Additional information

The `LocationDistanceMeasurement` analysis only performs planar distance calculations. This may not be appropriate for large distances where the Earth's curvature must be considered.
The `ExploratoryLocationDistanceMeasurement` analysis only performs planar distance calculations. This may not be appropriate for large distances where the Earth's curvature must be considered.

## Tags

3D, analysis, distance, measure
3D, analysis, distance, measure
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
],
"relevant_apis": [
"AnalysisOverlay",
"LocationDistanceMeasurement",
"LocationDistanceMeasurement.MeasurementChanged"
"ExploratoryLocationDistanceMeasurement",
"ExploratoryLocationDistanceMeasurement.MeasurementChanged"
],
"snippets": [
"DistanceMeasurement.xaml.cs",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public partial class LineOfSightGeoElement : ContentPage
private Graphic _taxiGraphic;

// Line of Sight Analysis
private GeoElementLineOfSight _geoLine;
private ExploratoryGeoElementLineOfSight _geoLine;

// For taxi animation - four points in a loop
private readonly MapPoint[] _points = {
Expand Down Expand Up @@ -109,7 +109,7 @@ private async Task Initialize()

// Create GeoElement Line of sight analysis (taxi to building)
// Create the analysis
_geoLine = new GeoElementLineOfSight(_observerGraphic, _taxiGraphic)
_geoLine = new ExploratoryGeoElementLineOfSight(_observerGraphic, _taxiGraphic)
{
// Apply an offset to the target. This helps avoid some false negatives
TargetOffsetZ = 2
Expand Down Expand Up @@ -202,18 +202,18 @@ private void UpdateUiAndSelection()
{
switch (_geoLine.TargetVisibility)
{
case LineOfSightTargetVisibility.Obstructed:
case ExploratoryLineOfSightTargetVisibility.Obstructed:
MyStatusLabel.Text = "Status: Obstructed";
_taxiGraphic.IsSelected = false;
break;

case LineOfSightTargetVisibility.Visible:
case ExploratoryLineOfSightTargetVisibility.Visible:
MyStatusLabel.Text = "Status: Visible";
_taxiGraphic.IsSelected = true;
break;

default:
case LineOfSightTargetVisibility.Unknown:
case ExploratoryLineOfSightTargetVisibility.Unknown:
MyStatusLabel.Text = "Status: Unknown";
_taxiGraphic.IsSelected = false;
break;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Show a line of sight between two moving objects.

A line of sight between `GeoElement`s (i.e. observer and target) will not remain constant whilst one or both are on the move.

A `GeoElementLineOfSight` is therefore useful in cases where visibility between two `GeoElement`s requires monitoring over a period of time in a partially obstructed field of view
An `ExploratoryGeoElementLineOfSight` is therefore useful in cases where visibility between two `GeoElement`s requires monitoring over a period of time in a partially obstructed field of view
(such as buildings in a city).

## How to use the sample
Expand All @@ -20,14 +20,14 @@ The taxi will be highlighted when it is visible. You can change the observer hei
## How it works

1. Instantiate an `AnalysisOverlay` and add it to the `SceneView`'s analysis overlays collection.
2. Instantiate a `GeoElementLineOfSight`, passing in observer and target `GeoElement`s (features or graphics). Add the line of sight to the analysis overlay's analyses collection.
3. To get the target visibility when it changes, react to the target visibility changing on the `GeoElementLineOfSight` instance.
2. Instantiate an `ExploratoryGeoElementLineOfSight`, passing in observer and target `GeoElement`s (features or graphics). Add the line of sight to the analysis overlay's analyses collection.
3. To get the target visibility when it changes, react to the target visibility changing on the `ExploratoryGeoElementLineOfSight` instance.

## Relevant API

* AnalysisOverlay
* GeoElementLineOfSight
* LineOfSight.TargetVisibility
* ExploratoryGeoElementLineOfSight
* ExploratoryLineOfSight.TargetVisibility

## Offline data

Expand All @@ -37,4 +37,4 @@ This sample downloads the following items from ArcGIS Online automatically:

## Tags

3D, line of sight, visibility, visibility analysis
3D, line of sight, visibility, visibility analysis
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@
],
"relevant_apis": [
"AnalysisOverlay",
"GeoElementLineOfSight",
"LineOfSight.TargetVisibility"
"ExploratoryGeoElementLineOfSight",
"ExploratoryLineOfSight.TargetVisibility"
],
"snippets": [
"LineOfSightGeoElement.xaml.cs",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public partial class LineOfSightLocation : ContentPage
private string _elevationSourceUrl = @"https://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer";

// Location line of sight analysis
private LocationLineOfSight _lineOfSightAnalysis;
private ExploratoryLocationLineOfSight _lineOfSightAnalysis;

// Observer location for line of sight
private MapPoint _observerLocation;
Expand Down Expand Up @@ -66,12 +66,12 @@ private void Initialize()
MySceneView.SetViewpointCameraAsync(newCamera);

// Create a new line of sight analysis with arbitrary points (observer and target will be defined by the user)
_lineOfSightAnalysis = new LocationLineOfSight(new MapPoint(0.0, 0.0, SpatialReferences.Wgs84), new MapPoint(0.0, 0.0, SpatialReferences.Wgs84));
_lineOfSightAnalysis = new ExploratoryLocationLineOfSight(new MapPoint(0.0, 0.0, SpatialReferences.Wgs84), new MapPoint(0.0, 0.0, SpatialReferences.Wgs84));

// Set the visible and obstructed colors (default would be green/red)
// These are static properties that apply to all line of sight analyses in the scene view
LineOfSight.VisibleColor = Colors.Cyan;
LineOfSight.ObstructedColor = Colors.Magenta;
ExploratoryLineOfSight.VisibleColor = Colors.Cyan;
ExploratoryLineOfSight.ObstructedColor = Colors.Magenta;

// Create an analysis overlay to contain the analysis and add it to the scene view
AnalysisOverlay lineOfSightOverlay = new AnalysisOverlay();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,16 @@ Tap to place the starting point for the line. Tap again to place the end point.
## How it works

1. Create an `AnalysisOverlay` and add it to the scene view.
2. Create a `LocationLineOfSight` with initial observer and target locations and add it to the analysis overlay.
2. Create an `ExploratoryLocationLineOfSight` with initial observer and target locations and add it to the analysis overlay.
3. Listen for taps on the scene view.
4. Update the target location with `lineOfSight.TargetLocation = scenePoint`.

## Relevant API

* AnalysisOverlay
* LocationLineOfSight
* ExploratoryLocationLineOfSight
* SceneView

## Tags

3D, line of sight, visibility, visibility analysis
3D, line of sight, visibility, visibility analysis
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
],
"relevant_apis": [
"AnalysisOverlay",
"LocationLineOfSight",
"ExploratoryLocationLineOfSight",
"SceneView"
],
"snippets": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public partial class ViewshedCamera : ContentPage
private string _elevationSourceUrl = "https://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer";

// Location viewshed analysis to show visible and obstructed areas from the camera
private LocationViewshed _viewshedForCamera;
private ExploratoryLocationViewshed _viewshedForCamera;

public ViewshedCamera()
{
Expand Down Expand Up @@ -58,8 +58,8 @@ private void Initialize()
Camera observerCamera = new Camera(new MapPoint(2.82691, 41.985, 124.987, SpatialReferences.Wgs84), 332.131, 82.4732, 0.0);
MySceneView.SetViewpointCameraAsync(observerCamera);

// Create a LocationViewshed analysis using the camera as the observer
_viewshedForCamera = new LocationViewshed(observerCamera, 1, 1000);
// Create an ExploratoryLocationViewshed analysis using the camera as the observer
_viewshedForCamera = new ExploratoryLocationViewshed(observerCamera, 1, 1000);

// Create an analysis overlay to contain the viewshed analysis results
AnalysisOverlay viewshedOverlay = new AnalysisOverlay();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,16 @@ The sample will start with a viewshed created from the initial camera location,

## How it works

1. Create a `LocationViewshed`, passing in a `Camera` and a min/max distance.
1. Create an `ExploratoryLocationViewshed`, passing in a `Camera` and a min/max distance.
2. Update the viewshed using `viewshed.UpdateFromCamera()`.

## Relevant API

* AnalysisOverlay
* ArcGISTiledElevationSource
* Camera
* ExploratoryLocationViewshed
* IntegratedMeshLayer
* LocationViewshed
* Scene
* SceneView

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@
"AnalysisOverlay",
"ArcGISTiledElevationSource",
"Camera",
"ExploratoryLocationViewshed",
"IntegratedMeshLayer",
"LocationViewshed",
"Scene",
"SceneView"
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ private async Task Initialize()
_tankOverlay.Graphics.Add(_tank);

// Create a viewshed for the tank.
GeoElementViewshed geoViewshed = new GeoElementViewshed(
ExploratoryGeoElementViewshed geoViewshed = new ExploratoryGeoElementViewshed(
geoElement: _tank,
horizontalAngle: 90.0,
verticalAngle: 40.0,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,15 @@ Tap to set a destination for the vehicle (a GeoElement). The vehicle will 'drive
1. Create and show the scene, with an elevation source and a buildings layer.
2. Add a model (the `GeoElement`) to represent the observer (in this case, a tank).
* Use a `SimpleRenderer` which has a heading expression set in the `GraphicsOverlay`. This way you can relate the viewshed's heading to the `GeoElement` object's heading.
3. Create a `GeoElementViewshed` with configuration for the viewshed analysis.
3. Create an `ExploratoryGeoElementViewshed` with configuration for the viewshed analysis.
4. Add the viewshed to an `AnalysisOverlay` and add the overlay to the scene.
5. Configure the SceneView `CameraController` to orbit the vehicle.

## Relevant API

* AnalysisOverlay
* ExploratoryGeoElementViewshed
* GeodeticDistanceResult
* GeoElementViewshed
* GeometryEngine.DistanceGeodetic
* ModelSceneSymbol
* OrbitGeoElementCameraController
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
],
"relevant_apis": [
"AnalysisOverlay",
"GeoElementViewshed",
"ExploratoryGeoElementViewshed",
"GeodeticDistanceResult",
"GeometryEngine.DistanceGeodetic",
"ModelSceneSymbol",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public partial class ViewshedLocation : ContentPage
private readonly Uri _buildingsUrl = new Uri("https://tiles.arcgis.com/tiles/P3ePLMYs2RVChkJx/arcgis/rest/services/Buildings_Brest/SceneServer/layers/0");

// Hold a reference to the viewshed analysis.
private LocationViewshed _viewshed;
private ExploratoryLocationViewshed _viewshed;

// Hold a reference to the analysis overlay that will hold the viewshed analysis.
private AnalysisOverlay _analysisOverlay;
Expand Down Expand Up @@ -71,7 +71,7 @@ private void Initialize()
MapPoint initialLocation = new MapPoint(-4.5, 48.4, 56.0);

// Create the location viewshed analysis.
_viewshed = new LocationViewshed(
_viewshed = new ExploratoryLocationViewshed(
initialLocation,
HeadingSlider.Value,
PitchSlider.Value,
Expand Down Expand Up @@ -110,7 +110,7 @@ private void Initialize()

// Update the frustum outline color.
// The frustum outline shows the volume in which the viewshed analysis is performed.
Viewshed.FrustumOutlineColor = Colors.Blue;
ExploratoryViewshed.FrustumOutlineColor = Colors.Blue;

// Subscribe to tap events to enable moving the observer.
MySceneView.GeoViewTapped += MySceneViewOnGeoViewTapped;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,16 @@ Use the sliders to change the properties (heading, pitch, etc.), of the viewshed

## How it works

1. Create a `LocationViewshed` passing in the observer location, heading, pitch, horizontal/vertical angles, and min/max distances.
1. Create an `ExploratoryLocationViewshed` passing in the observer location, heading, pitch, horizontal/vertical angles, and min/max distances.
2. Set the property values on the viewshed instance for location, direction, range, and visibility properties.

## Relevant API

* AnalysisOverlay
* ArcGISSceneLayer
* ArcGISTiledElevationSource
* LocationViewshed
* Viewshed
* ExploratoryLocationViewshed
* ExploratoryViewshed

## About the data

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@
"AnalysisOverlay",
"ArcGISSceneLayer",
"ArcGISTiledElevationSource",
"LocationViewshed",
"Viewshed"
"ExploratoryLocationViewshed",
"ExploratoryViewshed"
],
"snippets": [
"ViewshedLocation.xaml.cs",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public partial class DistanceMeasurement
"https://tiles.arcgis.com/tiles/P3ePLMYs2RVChkJx/arcgis/rest/services/Buildings_Brest/SceneServer/layers/0");

// Measurement.
private LocationDistanceMeasurement _distanceMeasurement;
private ExploratoryLocationDistanceMeasurement _distanceMeasurement;

public DistanceMeasurement()
{
Expand Down Expand Up @@ -66,7 +66,7 @@ private void Initialize()
// Create an initial distance measurement and show it.
MapPoint start = new MapPoint(-4.494677, 48.384472, 24.772694, SpatialReferences.Wgs84);
MapPoint end = new MapPoint(-4.495646, 48.384377, 58.501115, SpatialReferences.Wgs84);
_distanceMeasurement = new LocationDistanceMeasurement(start, end);
_distanceMeasurement = new ExploratoryLocationDistanceMeasurement(start, end);
measureAnalysisOverlay.Analyses.Add(_distanceMeasurement);

// Keep the UI updated.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,20 +15,20 @@ Choose a unit system for the measurement. Click any location in the scene to sta
## How it works

1. Create an `AnalysisOverlay` object and add it to the analysis overlay collection of the `SceneView` object.
2. Specify the start location and end location to create a `LocationDistanceMeasurement` object. Initially, the start and end locations can be the same point.
2. Specify the start location and end location to create an `ExploratoryLocationDistanceMeasurement` object. Initially, the start and end locations can be the same point.
3. Add the location distance measurement analysis to the analysis overlay.
4. The `MeasurementChanged` event will be raised if the distances change. You can get the new values for the `DirectDistance`, `HorizontalDistance`, and `VerticalDistance` from the event arguments.

## Relevant API

* AnalysisOverlay
* LocationDistanceMeasurement
* LocationDistanceMeasurement.MeasurementChanged
* ExploratoryLocationDistanceMeasurement
* ExploratoryLocationDistanceMeasurement.MeasurementChanged

## Additional information

The `LocationDistanceMeasurement` analysis only performs planar distance calculations. This may not be appropriate for large distances where the Earth's curvature must be considered.
The `ExploratoryLocationDistanceMeasurement` analysis only performs planar distance calculations. This may not be appropriate for large distances where the Earth's curvature must be considered.

## Tags

3D, analysis, distance, measure
3D, analysis, distance, measure
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
],
"relevant_apis": [
"AnalysisOverlay",
"LocationDistanceMeasurement",
"LocationDistanceMeasurement.MeasurementChanged"
"ExploratoryLocationDistanceMeasurement",
"ExploratoryLocationDistanceMeasurement.MeasurementChanged"
],
"snippets": [
"DistanceMeasurement.xaml.cs",
Expand Down
Loading
Loading