Click or drag to resize

Surface Class

Surface contains elevation sources and defines a surface upon which layers and overlays can be draped.
Inheritance Hierarchy
SystemObject
  Esri.ArcGISRuntime.MappingSurface

Namespace:  Esri.ArcGISRuntime.Mapping
Assembly:  Esri.ArcGISRuntime (in Esri.ArcGISRuntime.dll) Version: 100.11.0
Syntax
[ContentPropertyAttribute("ElevationSources")]
public class Surface : ILoadable, INotifyPropertyChanged

The Surface type exposes the following members.

Constructors
  NameDescription
Public methodCode exampleSurface
Initializes a new instance of the Surface class.
Top
Properties
  NameDescription
Public propertyBackgroundGrid
Gets or sets the settings applied to rendering the surface's background when no data is draped on top of it.
Public propertyCode exampleElevationExaggeration
Gets or sets the elevation exaggeration for the surface.
Public propertyCode exampleElevationSources
Gets the collection of elevation sources in the surface.
Public propertyIsEnabled
Gets or sets a value indicating whether this surface is enabled and should be rendered.
Public propertyLoadError
Gets the load error of the surface (null if loading was successful).
Public propertyLoadStatus
Gets the load status of the surface.
Public propertyName
Gets or sets the name for the surface.
Public propertyCode exampleNavigationConstraint
Gets or sets the type of navigation constraint from the surface.
Public propertyCode exampleOpacity
Gets or sets the opacity applied to the Surface.
Top
Methods
  NameDescription
Public methodCancelLoad
Cancels an ongoing load.
Public methodCode exampleGetElevationAsync
Gets the best available elevation from the elevation surface
Public methodLoadAsync
Initiates loading of the surface.
Public methodRetryLoadAsync
Retry loading the surface.
Top
Events
  NameDescription
Public eventLoaded
Occurs when the surface is loaded.
Public eventLoadStatusChanged
Occurs when the surface LoadStatus property is changed.
Public eventPropertyChanged
Occurs when a property value changes.
Top
Examples

WPF

Example Name: SceneLayerUrl

Display an ArcGIS scene layer from a URL.

Code example screen shot.

C#
// Copyright 2017 Esri.
// 
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
// You may obtain a copy of the License at: http://www.apache.org/licenses/LICENSE-2.0
// 
// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
// language governing permissions and limitations under the License.

using Esri.ArcGISRuntime.Geometry;
using Esri.ArcGISRuntime.Mapping;
using System;
using System.Windows;

namespace ArcGISRuntime.WPF.Samples.SceneLayerUrl
{
    [ArcGISRuntime.Samples.Shared.Attributes.Sample(
        name: "Scene layer (URL)",
        category: "Layers",
        description: "Display an ArcGIS scene layer from a URL.",
        instructions: "Pan and zoom to explore the scene.",
        tags: new[] { "3D", "Portland", "URL", "buildings", "model", "scene", "service" })]
    public partial class SceneLayerUrl
    {
        // URL for a service to use as an elevation source.
        private readonly Uri _elevationSourceUrl = new Uri(
            "https://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer");

        // URL for the scene layer.
        private readonly Uri _serviceUri = new Uri(
            "https://tiles.arcgis.com/tiles/P3ePLMYs2RVChkJx/arcgis/rest/services/Buildings_Portland/SceneServer");

        public SceneLayerUrl()
        {
            InitializeComponent();
            Initialize();
        }

        private async void Initialize()
        {
            // Create new Scene.
            Scene myScene = new Scene {Basemap = new Basemap(BasemapStyle.ArcGISImageryStandard)};

            // Create and add an elevation source for the Scene.
            ArcGISTiledElevationSource elevationSrc = new ArcGISTiledElevationSource(_elevationSourceUrl);
            myScene.BaseSurface.ElevationSources.Add(elevationSrc);

            // Create new scene layer from the URL.
            ArcGISSceneLayer sceneLayer = new ArcGISSceneLayer(_serviceUri);

            // Add created layer to the operational layers collection.
            myScene.OperationalLayers.Add(sceneLayer);

            try
            {
                // Load the layer.
                await sceneLayer.LoadAsync();

                // Get the center of the scene layer.
                MapPoint center = (MapPoint)GeometryEngine.Project(sceneLayer.FullExtent.GetCenter(), SpatialReferences.Wgs84);

                // Create a camera with coordinates showing layer data.
                Camera camera = new Camera(center.Y, center.X, 225, 220, 80, 0);

                // Assign the Scene to the SceneView.
                MySceneView.Scene = myScene;

                // Set view point of scene view using camera.
                await MySceneView.SetViewpointCameraAsync(camera);
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString(), "Error");
            }
        }
    }
}
XAML
<UserControl 
    x:Class="ArcGISRuntime.WPF.Samples.SceneLayerUrl.SceneLayerUrl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:esri="http://schemas.esri.com/arcgis/runtime/2013" 
    mc:Ignorable="d" 
    d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <esri:SceneView x:Name="MySceneView">
        </esri:SceneView>
    </Grid>
</UserControl>
See Also
Additional Examples
Hyperlink to ExampleDescription
AddAnIntegratedMeshLayerView an integrated mesh layer from a scene service.
Animate3DGraphicAn `OrbitGeoElementCameraController` follows a graphic while the graphic's position and rotation are animated.
ChangeAtmosphereEffectChanges the appearance of the atmosphere in a scene.
ChooseCameraControllerControl the behavior of the camera in a scene.
CreateTerrainSurfaceRasterSet the terrain surface with elevation described by a raster file.
CreateTerrainSurfaceTilePackageSet the terrain surface with elevation described by a local tile package.
DisplaySceneDisplay a scene with a terrain surface and some imagery.
DistanceMeasurementMeasure distances between two points in 3D.
GetElevationAtPointGet the elevation for a given point on a surface in a scene.
LineOfSightGeoElementShow a line of sight between two moving objects.
LineOfSightLocationPerform a line of sight analysis between two points in real time.
ListKmlContentsList the contents of a KML file.
PlayKmlToursPlay tours in KML files.
SceneLayerSelectionIdentify features in a scene to select.
SceneLayerUrlDisplay an ArcGIS scene layer from a URL.
SceneSymbolsShow various kinds of 3D symbols in a scene.
SurfacePlacementsPosition graphics relative to a surface using different surface placement modes.
TerrainExaggerationVertically exaggerate terrain in a scene.
ViewContentBeneathSurfaceSee through terrain in a scene and move the camera underground.
ViewPointCloudDataOfflineDisplay local 3D point cloud data.
ViewshedCameraAnalyze the viewshed for a camera. A viewshed shows the visible and obstructed areas from an observer's vantage point.
ViewshedGeoElementAnalyze the viewshed for an object (GeoElement) in a scene.
ViewshedLocationPerform a viewshed analysis from a defined vantage point.