ArcGIS Runtime SDK for iOS: AGSScene Class Reference
ArcGIS Runtime SDK for iOS  100.11
AGSScene Class Reference

Description

A scene containing 3D geographic content.

Instance of this class represent a scene. It can be displayed on the screen by AGSSceneView. Thus, a scene represents the Model in an MVC architecture, and an AGSSceneView object represents the View. A scene specifies how the geographic data is organized, and a sceneview renders the data and allows users to interact with it.

Conceptually, a scene's geographic content is derived from its basemap and operationalLayers, which may be draped over a baseSurface to account for elevation.

A basemap helps orient the user and provides a geographical context for the content you want to display in the scene. It is used for locational reference and provides a framework on which you can overlay operational layers. Thus, the basemap serves as a foundation and provides a framework for working with information geographically. It's content is typically static and does not change frequently. For eg, streets, parcel boundaries, or geographic features such as rivers. Some basemaps also contain reference layers, such as labels, which are drawn on top of operational layers.

Operational layers provide content that is of unique interest to the application and the task at hand. Their content might change frequently. For example, earthquakes, traffic, or the weather.

The scene has a spatialReference which specifies how the geographic content from its basemap and operational layers is aligned when combined together.

See also
AGSMap for 2D geographic content.
Since
100
Inheritance diagram for AGSScene:
AGSLoadableBase AGSObject <AGSLoadable>

Instance Methods

(void) - cancelLoad
 
(void) - doCancelLoading
 
(void) - doStartLoading:
 
(instancetype) - initWithBasemap:
 
(instancetype) - initWithBasemapStyle:
 
(instancetype) - initWithBasemapType:
 
(instancetype) - initWithItem:
 
(instancetype) - initWithTilingScheme:
 
(nullable instancetype) - initWithURL:
 
(void) - loadDidFinishWithError:
 
(void) - loadWithCompletion:
 
(void) - onLoadStatusChanged
 
(void) - retryLoadWithCompletion:
 

Class Methods

(__nullable id< AGSJSONSerializable >) + fromJSON:error:
 
(instancetype) + scene
 
(instancetype) + sceneWithBasemap:
 
(instancetype) + sceneWithBasemapStyle:
 
(instancetype) + sceneWithBasemapType:
 
(instancetype) + sceneWithItem:
 
(instancetype) + sceneWithTilingScheme:
 
(nullable instancetype) + sceneWithURL:
 

Properties

AGSBasemapbasemap
 
AGSSurfacebaseSurface
 
NSMutableArray< AGSBookmark * > * bookmarks
 
AGSViewpointinitialViewpoint
 
AGSItemitem
 
NSError * loadError
 
AGSLoadSettingsloadSettings
 
AGSLoadStatus loadStatus
 
NSMutableArray< AGSLayer * > * operationalLayers
 
AGSSceneViewTilingScheme sceneViewTilingScheme
 
AGSSpatialReferencespatialReference
 
NSMutableArray< AGSFeatureTable * > * tables
 
NSArray< AGSTransportationNetworkDataset * > * transportationNetworks
 
NSDictionary< NSString *, id > * unknownJSON
 
NSDictionary< NSString *, id > * unsupportedJSON
 
NSString * version
 

Method Documentation

◆ cancelLoad

- (void) cancelLoad
requiredinherited

Cancels loading if it is in progress, otherwise it does nothing. This should be called carefully because other objects could be waiting for loadWithCompletion: or retryLoadWithCompletion: to complete and this will call them all back with the error of NSUserCancelledError

Since
100

◆ doCancelLoading

- (void) doCancelLoading

Never call this method directly. The framework calls this method on a background thread when cancelLoad (AGSLoadable-p) is called. It is meant to be overriden by subclasses. Subclasses should override this method to cancel loading their data and call loadDidFinishWithError: (AGSLoadableBase(ForSubclassEyesOnly)) at the end passing in an error representing NSUserCancelledError.

Since
100

Provided by category AGSLoadableBase(ForSubclassEyesOnly).

◆ doStartLoading:

- (void) doStartLoading: (BOOL)  retrying

Never call this method directly. The framework calls this method on a background thread when loadWithCompletion: (AGSLoadable-p) or retryLoadWithCompletion: (AGSLoadable-p) is called. It is meant to be overriden by subclasses. Subclasses should override this method to load their data and call loadDidFinishWithError: (AGSLoadableBase(ForSubclassEyesOnly)) upon completion, passing in the error if any.

Parameters
retryingflag that is true if this method was called from retryLoadWithCompletion: (AGSLoadable-p).
Since
100

Provided by category AGSLoadableBase(ForSubclassEyesOnly).

◆ fromJSON:error:

+ (__nullable id<AGSJSONSerializable>) fromJSON: (id)  JSONObject
error: (NSError **)  error 

Initializes and returns an object from its JSON representation.

Parameters
JSONObjectNSDictionary or NSArray containing the JSON.
errorencountered during the operation, if any.
Since
100.3

◆ initWithBasemap:

- (instancetype) initWithBasemap: (AGSBasemap *)  basemap

Creates a scene with the given basemap.

Parameters
basemapto use with the scene.
Since
100

◆ initWithBasemapStyle:

- (instancetype) initWithBasemapStyle: (AGSBasemapStyle basemapStyle

Creates a scene with a basemap.

Parameters
basemapStyleThe basemap style.
See also
AGSBasemapStyle
Since
100.10

◆ initWithBasemapType:

- (instancetype) initWithBasemapType: (AGSBasemapType basemapType

Creates a scene with a basemap. In order to take advantage of geographically load balanced services and monitor usage with API keys or named users, use initWithBasemapStyle:.

Parameters
basemapTypeThe basemap.
Since
100.0

◆ initWithItem:

- (instancetype) initWithItem: (AGSItem *)  item

Creates a scene based on the given web scene item.

Parameters
itemthat represents a web scene on ArcGIS Online or an on-premises portal. Item's type must be AGSPortalItemTypeWebScene.
Since
100.3

◆ initWithTilingScheme:

- (instancetype) initWithTilingScheme: (AGSSceneViewTilingScheme tilingScheme

Creates a scene with the given tiling scheme.

Parameters
tilingSchemeto use with the scene.
Since
100.2.1

◆ initWithURL:

- (nullable instancetype) initWithURL: (NSURL *)  URL

Creates a scene based on the given web scene URL. The URL you pass can be one of three basic types. Examples of these types are:

◆ loadDidFinishWithError:

- (void) loadDidFinishWithError: (nullable NSError *)  error

Only subclasses should call this method in doStartLoading: (AGSLoadableBase(ForSubclassEyesOnly)) and doCancelLoading (AGSLoadableBase(ForSubclassEyesOnly)) when done loading or failed to load.

Since
100

Provided by category AGSLoadableBase(ForSubclassEyesOnly).

◆ loadWithCompletion:

- (void) loadWithCompletion: (nullable void(^)(NSError *__nullable error))  completion
requiredinherited

Loads data for the object asynchronously. The completion block is invoked upon completion.

You can call this method any number of times, however only one attempt is made to load the data. If it is already loading, it will just continue to load (i.e. not force a reload). If it has already loaded successfully, the completion block will be invoked right away. If it has already failed to load, the completion block will be invoked right away with error previously encountered. This method supports multiple callers and will call them all back on completion. However, each caller's completion block will be invoked once and only once.

Parameters
completionblock that is invoked when object loads successfully or fails to load. An error is passed to the block if the object fails to load.
Note
The completion block is always invoked on the main thread.
Since
100
See also
- cancelLoad to cancel loading
- retryLoadWithCompletion: to force reload

◆ onLoadStatusChanged

- (void) onLoadStatusChanged

Never call this method directly. The framework calls this method on a background thread when AGSLoadable::loadStatus changes is called. Subclasses can optionally implement this to know when their loading status has changed.

Since
100

Provided by category AGSLoadableBase(ForSubclassEyesOnly).

◆ retryLoadWithCompletion:

- (void) retryLoadWithCompletion: (nullable void(^)(NSError *__nullable error))  completion
requiredinherited

Tries to reload when an object has failed to load. This method should be called judiciously. It should be called when:

  1. you didn't have network connectivity earlier when it failed and you want to retry now that you have connectivity
  2. the server was down earlier when it failed and you want to retry
  3. the request is taking too long and you want to cancel it and retry, in which case you will first call cancelLoad and then this method

If the data hasn't started loading, it will start loading. If it is already loading, it will just continue to load. If it has already loaded successfully, calls back right away. If it has already failed to load, tries again. This method supports multiple callers and will call them all back on completion. However, each caller's completion block will be invoked once and only once.

Parameters
completionblock that is invoked when object loads successfully or fails to load. An error is passed to the block if the object fails to load.
Note
The completion block is always invoked on the main thread.
Since
100

◆ scene

+ (instancetype) scene

Creates a scene.

Returns
A new scene.
See also
AGSScene::load, AGSScene::requestRequired
Since
100.0

◆ sceneWithBasemap:

+ (instancetype) sceneWithBasemap: (AGSBasemap *)  basemap

Creates a scene with the given basemap.

Parameters
basemapto use with the scene.
Returns
A new scene created from the basemap.
Since
100

◆ sceneWithBasemapStyle:

+ (instancetype) sceneWithBasemapStyle: (AGSBasemapStyle basemapStyle

Creates a scene with a basemap.

Parameters
basemapStyleThe basemap style.
Returns
A new scene created from the basemapStyle.
See also
AGSBasemapStyle
Since
100.10

◆ sceneWithBasemapType:

+ (instancetype) sceneWithBasemapType: (AGSBasemapType basemapType

Creates a scene with a basemap. In order to take advantage of geographically load balanced services and monitor usage with API keys or named users, use sceneWithBasemapStyle:.

Parameters
basemapTypeThe basemap.
Returns
A new scene created from the basemapType.
Since
100.0

◆ sceneWithItem:

+ (instancetype) sceneWithItem: (AGSItem *)  item

Creates a scene based on the given web scene item.

Parameters
itemthat represents a web scene on ArcGIS Online or an on-premises portal. Item's type must be AGSPortalItemTypeWebScene.
Returns
A new scene created from the item.
Since
100.3

◆ sceneWithTilingScheme:

+ (instancetype) sceneWithTilingScheme: (AGSSceneViewTilingScheme tilingScheme

Creates a scene with the given tiling scheme.

Parameters
tilingSchemeto use with the scene.
Returns
A new scene created from the tilingScheme.
Since
100.2.1

◆ sceneWithURL:

+ (nullable instancetype) sceneWithURL: (NSURL *)  URL

Creates a scene based on the given web scene URL. The URL you pass can be one of three basic types. Examples of these types are:

Property Documentation

◆ basemap

- (AGSBasemap*) basemap
readwritenonatomicstrong

The scene's basemap.

Since
100

◆ baseSurface

- (AGSSurface*) baseSurface
readwritenonatomicstrong

The base surface of this scene which provides an elevation context for the basemap and operational layers. The layers may be draped on or offset from this surface.

Since
100

◆ bookmarks

- (NSMutableArray<AGSBookmark*>*) bookmarks
readnonatomicstrong

The bookmarks associated with the scene.

Note
This array does not allow duplicate objects.
Since
100

◆ initialViewpoint

- (AGSViewpoint*) initialViewpoint
readwritenonatomicstrong

The scene's initial viewpoint. This is the area initially displayed by an AGSSceneView object when the scene is used.

Since
100

◆ item

- (AGSItem*) item
readnonatomicstrong

The web scene item that was used to create the scene (if any).

Since
100.3

◆ loadError

- (NSError*) loadError
readnonatomicstronginherited

The error that was encountered during the most recent load operation. Will be nil if the operation succeeded.

Since
100

◆ loadSettings

- (AGSLoadSettings*) loadSettings
readwritenonatomicstrong

Settings that are applied to layers when the scene is loaded. Making changes to the settings after the scene is already loaded has no effect.

Since
100.2

◆ loadStatus

- (AGSLoadStatus) loadStatus
readrequirednonatomicassigninherited

Status of the load operation.

Since
100

◆ operationalLayers

- (NSMutableArray<AGSLayer*>*) operationalLayers
readnonatomicstrong

The scene's operational layers. These layers are displayed in a scene view sandwiched between an AGSBasemap::baseLayers property at the bottom and the AGSBasemap::referenceLayers property at the top. The layers are drawn in a bottom-up fashion with the first layer in the array drawn first, next layer drawn on top of the previous one, and so on.

Note
This array does not allow duplicate objects.
Since
100

◆ sceneViewTilingScheme

- (AGSSceneViewTilingScheme) sceneViewTilingScheme
readnonatomicassign

The AGSSceneViewTilingScheme as used to render tile based data. The default value is AGSSceneViewTilingSchemeWebMercator. The tiling scheme property is used by the AGSSceneView object to determine how to render tiled data. If this property was not set in advance of loading the scene it will be determined during the AGSScene::load. This will examine the AGSSpatialReference of the first tiled elevation source (see AGSArcGISTiledElevationSource) or tiled layer in the basemap or operational layers (see AGSArcGISTiledLayer) to choose either AGSSceneViewTilingSchemeGeographic or AGSSceneViewTilingSchemeWebMercator values. The AGSSceneViewTilingScheme must correspond to the AGSSpatialReference for those layers to render correctly.

Since
100.2.1

◆ spatialReference

- (AGSSpatialReference*) spatialReference
readnonatomicstrong

The scene's spatial reference.

Spatial references define where coordinates are located on the earth's surface and how the geographic content from the basemap and operational layers is aligned when combined together.

If a spatial reference wasn't provided when the scene was instantiated, it is typically derived from the bottom-most base layer in the basemap. If the scene does not have a basemap or if the basemap is empty, the spatial reference is derived from the bottom-most operational layer.

If the spatial reference of layers is different from that of the scene, the layers must be reprojected to the spatial reference of the scene before displaying. Some layers may not be able to re-project their data, for example layers based on tiles that have been pre-generated ahead of time. To maximize performance, avoid reprojection entirely by ensuring all layers have the same spatial reference as the scene.

Since
100

◆ tables

- (NSMutableArray<AGSFeatureTable*>*) tables
readnonatomicstrong

List of non-spatial tables associated with the scene. These tables typically participate in one or more relationships with feature layers in the scene's operational layers.

See also
- queryRelatedFeaturesForFeature:parameters:completion: (AGSArcGISFeatureTable) for performing related queries.
Since
100.3

◆ transportationNetworks

- (NSArray<AGSTransportationNetworkDataset *>*) transportationNetworks
readnonatomiccopy

A collection of transportation network datasets defined for the scene. Scene authors can use ArcGIS Pro to create mobile scene packages containing scenes that include transportation networks. If so, this property will be populated with the collection of AGSTransportationNetworkDataset objects. An AGSTransportationNetworkDataset from this collection can be used to construct one of the network analysis tasks (such as AGSRouteTask, AGSServiceAreaTask, and AGSClosestFacilityTask).

See also
AGSRouteTask, AGSMobileScenePackage
Since
100.7

◆ unknownJSON

- (NSDictionary<NSString*,id>*) unknownJSON
readnonatomiccopy

A dictionary of values that was in the source JSON but was unparsed by API.

Since
100.3

◆ unsupportedJSON

- (NSDictionary<NSString*,id>*) unsupportedJSON
readnonatomiccopy

A dictionary of values that are supported by the REST API, but not exposed through the SDK API.

Since
100.3

◆ version

- (NSString*) version
readnonatomiccopy

The web scene specification version that the output of #toJSON will comply with. This applies to how the scene is persisted.

Since
100.3