UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

168 lines (166 loc) 9.5 kB
import type SpatialReference from "../geometry/SpatialReference.js"; import type Layer from "./Layer.js"; import type ElevationInfo from "../symbols/support/ElevationInfo.js"; import type { MultiOriginJSONSupportMixin } from "../core/MultiOriginJSONSupport.js"; import type { APIKeyMixin, APIKeyMixinProperties } from "./mixins/APIKeyMixin.js"; import type { CustomParametersMixin, CustomParametersMixinProperties } from "./mixins/CustomParametersMixin.js"; import type { OperationalLayer, OperationalLayerProperties } from "./mixins/OperationalLayer.js"; import type { PortalLayer, PortalLayerProperties } from "./mixins/PortalLayer.js"; import type { ScaleRangeLayer, ScaleRangeLayerProperties } from "./mixins/ScaleRangeLayer.js"; import type { SpatialReferenceProperties } from "../geometry/SpatialReference.js"; import type { ElevationInfoProperties } from "../symbols/support/ElevationInfo.js"; import type { LayerProperties } from "./Layer.js"; /** @since 5.0 */ export interface GaussianSplatLayerProperties extends LayerProperties, APIKeyMixinProperties, CustomParametersMixinProperties, ScaleRangeLayerProperties, PortalLayerProperties, OperationalLayerProperties, Partial<Pick<GaussianSplatLayer, "url">> { /** * Specifies how the Gaussian Splatting scene is placed on the vertical axis (z). This property may only be used * in a [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/). See the * [ElevationInfo sample](https://developers.arcgis.com/javascript/latest/sample-code/scene-elevationinfo/) for an example of how this property * may be used. * > [!WARNING] * > * > This property only affects [GaussianSplatLayers](https://developers.arcgis.com/javascript/latest/references/core/layers/GaussianSplatLayer/) when using the `absolute-height` mode. * * @since 5.0 */ elevationInfo?: ElevationInfoProperties | null; /** * The spatial reference of the layer. * * @since 5.0 */ spatialReference?: SpatialReferenceProperties; /** * The title of the layer used to identify it in places such as the [LayerList](https://developers.arcgis.com/javascript/latest/references/core/widgets/LayerList/) widget. * * When loading a layer by service url, the title is derived from the service name. * When the layer is loaded from a portal item, the title of the portal item will be used instead. * Finally, if a layer is loaded as part of a webmap or a webscene, then the title of the layer as stored in the * webmap/webscene will be used. * * @since 5.0 */ title?: string | null; } /** * * [Overview](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-GaussianSplatLayer.html#overview) * * [Creating a GaussianSplatLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-GaussianSplatLayer.html#creating-a-gaussiansplat-layer) * * [Data Visualization](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-GaussianSplatLayer.html#data-visualization) * * <span id="overview"></span> * ## Overview * * The GaussianSplatLayer is designed for visualizing highly realistic, complex geometry of built and natural environments in a * [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/). * It excels at rendering high-fidelity details, making it ideal for thin and intricate structures like powerlines, guard rails, * and antennas in infrastructure workflows. It also captures transparency and reflections in human-made features, such as building * windows or metal surfaces and can accurately represent vegetation and other natural features. * * Gaussian splatting is a technique in computer graphics that renders a 3D scene from millions of individual elements called Gaussian splats. * They can be seen as fuzzy ellipsoids that are defined by their position, rotation, size, color, and transparency. * Gaussian splats are optimized during a training process. When rendered together, Gaussian splats blend to form a smooth, * photorealistic 3D representation. * * > [!WARNING] * > * > **Known Limitations** * > * > * Currently, Elevation Profile, Viewshed, Line of Sight, Slice and Volume Measurement are not supported. * > * Gaussian splat layers do not cast or receive shadows. * > * Gaussian splat layers are not guaranteed to always draw correctly in a local scene using WGS84 as spatial reference * > (WKID 4326). * * <span id="creating-a-gaussiansplat-layer"></span> * ## Creating a GaussianSplatLayer * Gaussian splat data is generated by a highly automated process from large sets of overlapping imagery and/or from lidar surveys. * You can use [ArcGIS Reality Studio](https://doc.esri.com/en/arcgis-reality-studio/latest/), * [ArcGIS Drone2Map](https://doc.arcgis.com/en/drone2map/latest/get-started/what-is-drone2map.htm), and * [ArcGIS Reality for ArcGIS Pro](https://pro.arcgis.com/en/pro-app/latest/help/data/imagery/introduction-to-arcgis-reality-extension.htm) * to create a Gaussian splat dataset. * * From ArcGIS Pro, you can author a Gaussian splat layer and share it to ArcGIS Online or ArcGIS Enterprise 12.1 or newer. * In addition, you can upload a 3TZ file (3D Tiles Package). * * The Scene Service is identified by the [url](https://developers.arcgis.com/javascript/latest/references/core/layers/GaussianSplatLayer/#url) or [portalItem](https://developers.arcgis.com/javascript/latest/references/core/layers/GaussianSplatLayer/#portalItem) * property and can be used to create an instance of a Gaussian splat layer: * * ```js * let gaussianSplatLayer = new GaussianSplatLayer({ * url: "https://tiles.arcgis.com/tiles/V6ZHFr6zdgNZuVG0/arcgis/rest/services/Portcoast_industrial/3DTilesServer/tileset.json" * }); * ``` * * ```js * let gaussianSplatLayer = new GaussianSplatLayer({ * portalItem: { * id: "01596d71a5ce40ec8a6f21baad6e5b6f" * } * }); * ``` * * <span id="data-visualization"></span> * ## Data Visualization * Besides human-made structures, natural objects such as vegetation can be visualized with high fidelity. This includes details like tree leaves, * enabling classification of tree species or other types of vegetation. * * A Gaussian splat layer is a 3D layer that can be visualized in either a local or global scene. For example, if you create a Gaussian splat layer in a * projected coordinate system, you can visualize it in a local scene using the same projected coordinate system. * Since Gaussian splat layers support the * [ESRI_CRS](https://github.com/Esri/3D-tiles-layer/blob/main/ESRI_CRS/Esri_crs_extension.md) extension, you can also visualize the same Gaussian splat layer * in a global scene that uses the geodetic coordinate system WGS84. * * You can visualize and explore other layers such as feature, imagery, and other 3D layers together with the Gaussian splat layer in your scene. * * @since 5.0 * @see [Sample - GaussianSplatLayer](https://developers.arcgis.com/javascript/latest/sample-code/layers-gaussiansplatlayer/) * @see [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/) * @see [Map](https://developers.arcgis.com/javascript/latest/references/core/Map/) */ export default class GaussianSplatLayer extends GaussianSplatLayerSuperclass { /** @since 5.0 */ constructor(properties?: GaussianSplatLayerProperties); /** * Specifies how the Gaussian Splatting scene is placed on the vertical axis (z). This property may only be used * in a [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/). See the * [ElevationInfo sample](https://developers.arcgis.com/javascript/latest/sample-code/scene-elevationinfo/) for an example of how this property * may be used. * > [!WARNING] * > * > This property only affects [GaussianSplatLayers](https://developers.arcgis.com/javascript/latest/references/core/layers/GaussianSplatLayer/) when using the `absolute-height` mode. * * @since 5.0 */ get elevationInfo(): ElevationInfo | null | undefined; set elevationInfo(value: ElevationInfoProperties | null | undefined); /** * The spatial reference of the layer. * * @since 5.0 */ get spatialReference(): SpatialReference; set spatialReference(value: SpatialReferenceProperties); /** * The title of the layer used to identify it in places such as the [LayerList](https://developers.arcgis.com/javascript/latest/references/core/widgets/LayerList/) widget. * * When loading a layer by service url, the title is derived from the service name. * When the layer is loaded from a portal item, the title of the portal item will be used instead. * Finally, if a layer is loaded as part of a webmap or a webscene, then the title of the layer as stored in the * webmap/webscene will be used. * * @since 5.0 */ accessor title: string | null | undefined; /** * The layer type provides a convenient way to check the type of the layer without the need to import specific layer modules. * * @since 5.0 */ get type(): "gaussian-splat"; /** * The URL of the root json file. * * @since 5.0 */ accessor url: string | null | undefined; } declare const GaussianSplatLayerSuperclass: typeof Layer & typeof APIKeyMixin & typeof CustomParametersMixin & typeof MultiOriginJSONSupportMixin & typeof ScaleRangeLayer & typeof PortalLayer & typeof OperationalLayer