PointCloudLayer 旨在可视化 SceneView 中的大型点集合。
点云数据是经过后处理的空间组织激光雷达数据,由大型 3D 点集合组成。地面、建筑物、森林树冠、高速公路立交桥以及在激光雷达勘测期间捕获的任何其他内容的高程构成了点云数据。此图层类型可在浏览器中创建点云数据的快速可视化效果。
场景服务由 GeoScene Server REST 资源的 URL 标识:
let pointCloudLayer = new PointCloudLayer({
url: "https://tiles.arcgis.com/tiles/V6ZHFr6zdgNZuVG0/arcgis/rest/services/BARNEGAT_BAY_LiDAR_UTM/SceneServer"
});
如果从其他域请求点云服务,则需要启用了 CORS 的服务器或代理。
- 示例:
构造函数
属性列表
属性 | 类型 | 描述 | 类 | |
---|---|---|---|---|
String | 更多信息 用于访问资源或服务的授权字符串。 | 更多信息 | PointCloudLayer | |
String | 更多信息 由场景服务定义的版权文本。 | 更多信息 | PointCloudLayer | |
String | 更多信息 类名。 | 更多信息 | Accessor | |
Object | 更多信息 指定点在垂直轴 (z) 上的放置方式。 | 更多信息 | PointCloudLayer | |
Field[] | 更多信息 图层中可访问的字段数组。 | 更多信息 | PointCloudLayer | |
FieldsIndex | 更多信息 一个方便的属性,可用于按名称对字段进行不区分大小写的查找。 | 更多信息 | PointCloudLayer | |
Array<(PointCloudValueFilter|PointCloudReturnFilter)> | 更多信息 用于过滤点的 pointCloudFilters 数组。 | 更多信息 | PointCloudLayer | |
Extent | 更多信息 图层的完整范围。 | 更多信息 | Layer | |
String | 更多信息 分配给图层的唯一 ID。 | 更多信息 | Layer | |
Number | 更多信息 场景服务图层的图层 ID 或图层索引。 | 更多信息 | PointCloudLayer | |
Boolean | 更多信息 指示图层是否将包含在图例中。 | 更多信息 | PointCloudLayer | |
String | 更多信息 指示图层应如何在 LayerList 微件中显示。 | 更多信息 | Layer | |
Boolean | 更多信息 指示图层的资源是否已加载。 | 更多信息 | Layer | |
Error | 更多信息 如果在加载时发生错误,则返回 Error 对象。 | 更多信息 | Layer | |
String | 更多信息 表示加载操作的状态。 | 更多信息 | Layer | |
Object[] | 更多信息 加载时出现的警告列表。 | 更多信息 | Layer | |
Number | 更多信息 图层在视图中可见的最大比例(最大放大)。 | 更多信息 | PointCloudLayer | |
Number | 更多信息 图层在视图中可见的最小比例(最大程度缩小)。 | 更多信息 | PointCloudLayer | |
String[] | 更多信息 服务中包含每个功能的字段名称数组。 | 更多信息 | PointCloudLayer | |
Boolean | 更多信息 指示单击图层中的点时是否显示弹出窗口。 | 更多信息 | PointCloudLayer | |
PopupTemplate | 更多信息 图层的弹出模板。 | 更多信息 | PointCloudLayer | |
PortalItem | 更多信息 加载图层的门户项目。 | 更多信息 | PointCloudLayer | |
PointCloudRenderer | 更多信息 分配给图层的渲染器。 | 更多信息 | PointCloudLayer | |
SpatialReference | 更多信息 图层的空间参考。 | 更多信息 | PointCloudLayer | |
String | 更多信息 | 更多信息 | PointCloudLayer | |
String | 更多信息对于 PointCloudLayer,类型始终为 "point-cloud". | 更多信息 | PointCloudLayer | |
String | 更多信息 图层或场景服务的 REST 端点的 URL。 | 更多信息 | PointCloudLayer | |
Object | 更多信息 用于该服务的场景服务规范的版本。 | 更多信息 | PointCloudLayer | |
Boolean | 更多信息 指示图层是否在视图中可见。 | 更多信息 | Layer |
属性详细说明
-
apiKey String起始版本: GeoScene API for JavaScript 4.22
-
用于访问资源或服务的授权字符串。
示例代码:// 设置 api 密钥以访问受保护的服务 const layer = new FeatureLayer({ url: serviceUrl, apiKey: "YOUR_API_KEY" });
-
copyright String
-
由场景服务定义的版权文本。
-
起始版本: GeoScene API for JavaScript 4.22
-
类名。类的名称声明格式为
geoscene.folder.className
。
-
elevationInfo Object起始版本: GeoScene API for JavaScript 4.22
-
指定点如何放置在垂直轴 (z) 上。 此属性仅在使用
absolute-height
模式时影响 PointCloudLayers 。- 属性:
-
mode String
定义点如何放置在垂直轴 (z) 上。 目前仅支持绝对
absolute-height
模式。Mode 描述 absolute-height 点位于海平面以上的绝对高程(z 值)。 此 z 值是通过将 offset
值和点的 z 值相加来确定的。 它没有考虑地形的高度。 这是 PointCloudLayer 唯一支持的高程模式。offset Number默认值:0高程偏移,将其添加到每个点的垂直位置。
unit String默认值:metersoffset
值的单位。可选值:"feet"|"meters"|"kilometers"|"miles"|"us-feet"|"yards"
-
图层中可访问的字段数组。下表更详细地描述了 PointCloudLayers 的最常见字段:
属性 说明 ELEVATION 有关详细信息,请查看 LAS 规范。 INTENSITY 有关详细信息,请查看 LAS 规范。 CLASS_CODE 使用 PointCloudLayer.queryCachedStatistics 获取带有类标签的列表。 RGB 单个 RGB 通道 (uint8) 被打包到单个 uint32 值中。请参阅解码示例。 RETURNS 位 0-5 表示返回数和返回数。请参阅解码示例。 FLAGS 有关详细信息,请查看 LAS 规范。 示例代码:// 使用 Arcade 解码 rgb 值:
var rgb = $feature.RGB; var red = Floor(rgb/65536,0); var green = Floor((rgb-(red*65536))/256,0); var blue = rgb-(red*65536)-(green*256); return "rgb(" + red + "," + green + "," + blue + ")"; // 使用 Arcade 解码返回值:
var returnnumber = $feature.RETURNS % 16; var numberofreturns = Floor($feature.RETURNS / 16) return returnnumber + " / " + numberofreturns;
-
fieldsIndex FieldsIndexreadonly起始版本: GeoScene API for JavaScript 4.22
-
一个方便的属性,可用于按名称对字段进行不区分大小写的查找。它还可以提供图层中日期字段的列表。
示例代码:// 按名称查找字段。 名称不区分大小写 const field = layer.fieldsIndex.get("SoMeFiEld"); if (field) { console.log(field.name); // 一些字段 }
-
filters Array<(PointCloudValueFilter|PointCloudReturnFilter)>起始版本: GeoScene API for JavaScript 4.22
-
用于过滤点的 pointCloudFilters 数组。 只有满足所有过滤器的点才会显示在视图中。 可以设置两种类型的过滤器:PointCloudValueFilter 根据分类值过滤点,PointCloudReturnFilter 根据返回值过滤点。
示例代码:// 过滤掉不属于地面或建筑物的点
const pcLayer = new PointCloudLayer({ ..., filters: [{ type: "value", field: "CLASS_CODE", mode: "include", // values 包含 ground(2) and building(6) values: [2, 6] }] });
-
图层的完整范围。 默认情况下,这是全球范围的。 可以使用此属性设置视图的范围以匹配图层的范围,这样看起来要素填充了视图。 请参阅下面的示例片段。
示例代码:// 图层加载后,将视图的范围设置为图层的全范围 layer.when(function(){ view.extent = layer.fullExtent; });
-
分配给图层的唯一 ID。 如果没有开发者设置,则在图层加载时自动生成。
-
layerId Number
-
场景服务图层的图层 ID 或图层索引。这在从包含多个图层的服务加载具有 portalItem属性的单个图层时特别有用。 您可以在以下两种情况之一中指定此值:
- 通过 portalItem 属性加载图层时。
- 将图层 url 直接指向场景服务时。
如果以上两种情况下均未指定layerId,则选择服务中的第一层(
layerId = 0
)。示例代码:// 虽然这些示例使用 SceneLayer,但相同的模式可用于可能从 portalItem id 加载的其他层// 在给定的 Portal Item 中加载第三层 let layer = new SceneLayer({ portalItem: { id: "73df987984b24094b848d580eb83b0fb" }, layerId: 2 });
// 如果不指定,则返回第一层(layerId: 0) let layer = new SceneLayer({ portalItem: { id: "73df987984b24094b848d580eb83b0fb" } });
// 如果 URL 指向服务而不是层,也可以使用 let layer = new SceneLayer({ url: "https://www.geosceneonline.cn/server/rest/services/Hosted/4%E5%85%A8%E5%B1%80%E5%9C%BA%E6%99%AF_WSL1/SceneServer", layerId: 0 // 注意url不以/2结尾 });
// 此代码返回与上一个片段相同的层 let layer = new SceneLayer({ url: "https://www.geosceneonline.cn/server/rest/services/Hosted/4%E5%85%A8%E5%B1%80%E5%9C%BA%E6%99%AF_WSL1/SceneServer/layers/0", // 在 URL 中指定层 id });
-
legendEnabled Boolean起始版本: GeoScene API for JavaScript 4.22
-
指示图层是否将包含在图例中。
- 默认值:true
-
指示图层应如何在 LayerList 微件中显示。 下面列出了可能的值。
值 描述 show 该图层在内容列表中可见。 hide 该图层在内容列表中不可见。 hide-children 如果图层是GroupLayer,BuildingSceneLayer,KMLLayer, MapImageLayer, TileLayer 或 WMSLayer,从内容表中隐藏子图层。 可选值:"show"|"hide"|"hide-children"
- 默认值:show
-
指示图层的资源是否已加载。 当
true
时, 对象的所有属性都可以访问。- 默认值:false
-
如果在加载时发生错误,则返回 Error 对象。
- 默认值:null
-
表示加载操作的状态。
值 描述 not-loaded 该对象的资源尚未加载。 loading 该对象的资源正在加载。 loaded 该对象的资源已正确加载。 failed 对象的资源加载失败。 有关详细信息,请参阅 loadError。 可选值:"not-loaded"|"loading"|"failed"|"loaded"
- 默认值:not-loaded
-
加载时出现的警告列表。
-
maxScale Number
-
图层在视图中可见的最大比例(最大放大)。 如果地图放大超过此比例,则图层将不可见。
0
的值表示图层没有最大比例。 maxScale 值应始终小于 minScale 值,并且大于或等于服务规范。- 默认值:0
示例代码:// 当视图放大到超过 1:1,000 的比例时,图层将不可见 layer.maxScale = 1000;
// 图层的可见性不限于最大比例。 layer.maxScale = 0;
-
minScale Number
-
图层在视图中可见的最小比例(最大缩小)。如果地图缩小超过此比例,图层将不可见。值
0
表示图层不可见 没有最小比例。minScale 值应始终大于 maxScale 值,并且小于或等于服务规范。- 默认值:0
示例代码:// 当视图缩小到超过 1:3,000,000 的比例时,图层将不可见 layer.minScale = 3000000;
// 图层的可见性不限于最小比例。 layer.minScale = 0;
-
服务中要包含在每个要素中的字段名称数组。 要从图层中的所有字段中获取值,请使用
["*"]
。outFields
中指定的字段将与渲染和过滤所需的字段一起被请求。 必填字段和outFields
用于填充 PointCloudLayerView.availableFields。- 默认值:null
- 示例:
示例代码:// 包括层中服务的所有字段 pcl.outFields = ["*"];
//从层中的service中获取指定字段 // 这些字段将与渲染和标签字段一起添加到 FeatureLayerView.availableFields。 //使用这些字段进行客户端过滤和查询。 pcl.outFields = ["ELEVATION", "RGB", "CLASS_CODE];
-
popupEnabled Boolean起始版本: GeoScene API for JavaScript 4.22
-
指示单击图层中的点时是否显示弹出窗口。 该层需要有一个 popupTemplate 来定义应该在弹出窗口中显示哪些信息。 或者,如果 Popup.defaultPopupTemplateEnabled 设置为
true
,则可以自动使用默认弹出模板。- 默认值:true
- 示例:
-
popupTemplate PopupTemplateautocast起始版本: GeoScene API for JavaScript 4.22
-
图层的弹出模板。 在图层上设置时,
popupTemplate
允许用户在使用文本和/或图表选择功能时访问属性并在视图的弹出窗口中显示其值。 有关最常见的属性信息,请参阅 PointCloudLayer.fields。 在此图层类型上设置 PopupTemplate 的方式与 FeatureLayer 相同。当 Popup.defaultPopupTemplateEnabled 设置为
true
时,如果没有定义popupTemplate
,则自动使用默认弹出模板。
-
portalItem PortalItem
-
加载图层的门户项目。 如果门户项目引用要素服务或场景服务,则可以使用 layerId 属性指定要加载的单个图层。
从 4.17 版开始,可以从 GeoScene Online 和 GeoScene Enterprise 中托管的要素服务项目加载表格。 这仅适用于要素图层,并且会成功加载 如果 FeatureLayer.isTable 返回
true
。示例代码://虽然这个例子使用了FeatureLayer,但同样的模式也可以 // 用于可能从 portalItem ids 加载的其他层。 const lyr = new FeatureLayer({ portalItem: { // 转换成 new PortalItem() id: "caa9bd9da1f4487cb4989824053bb847" } //返回服务中的第一层 });
// 虽然此示例使用 FeatureLayer,但同样的模式也可以 // 用于 SceneLayers。 const lyr = new FeatureLayer({ portalItem: { // 转换成 new PortalItem() id: "8d26f04f31f642b6828b7023b84c2188" }, //加载给定要素服务中的第三项 layerId: 2 });
// 这个片段加载一个托管在 GeoScene Online 中的表格。 const table = new FeatureLayer({ portalItem: { id: "123f4410054b43d7a0bacc1533ceb8dc" } }); // 将表格添加到地图之前,必须先加载并确认它是正确的类型。 table.load().then(function() { if (table.isTable) { map.table.add(table); } });
-
renderer PointCloudRendererautocast
-
分配给图层的渲染器。渲染器定义如何可视化图层中的每个点。
- 示例:
示例代码:// 图层中的所有点都将使用 RGB 属性着色
layer.renderer = { type: "point-cloud-rgb", // 转换成 new PointCloudRGBRenderer() field: "RGB" };
-
spatialReference SpatialReferenceautocast
-
图层的空间参考。
-
title String
-
图层的标题用于在 Legend 和 LayerList 微件等位置识别它
通过服务 url 加载层时,标题来自服务名称。 如果服务有多个层,则每个层的标题将是服务名称和层名称的串联。 从门户项目加载图层时,将使用门户项目的标题。 最后,如果图层作为 webmap 或 webscene 的一部分加载,则存储的图层标题
-
type Stringreadonly
对于 PointCloudLayer,类型始终为 "point-cloud".
-
url String
-
图层或场景服务的 REST 端点的 URL。 URL 可能指向一个GeoScene Enterprise 或 GeoScene Online 上的资源。
当 url 直接指向服务而不是特定层时,可以使用 layerId 属性指定层。如果 layerId 未指定,则默认为服务中的第一层。
示例代码:// GeoScene 服务器上场景服务的图层 let sceneLayer = new SceneLayer({ url: "https://www.geosceneonline.cn/server/rest/services/Hosted/4%E5%85%A8%E5%B1%80%E5%9C%BA%E6%99%AF_WSL1/layers/0" });
// 如果 URL 指向服务而不是层,也可以使用 let layer = new SceneLayer({ // 注意url不以/0结尾 url: "https://www.geosceneonline.cn/server/rest/services/Hosted/4%E5%85%A8%E5%B1%80%E5%9C%BA%E6%99%AF_WSL1/SceneServer", layerId: 0 });
-
version Objectreadonly
-
用于该服务的场景服务规范的版本。
示例代码:// 将版本打印到控制台 console.log(layer.version.versionString);
-
- 默认值:true
示例代码:// 该层在视图中不可见 layer.visible = false;
方法列表
属性 | 返回值类型 | 描述 | 类 | |
---|---|---|---|---|
更多信息 如果 load() 操作已经在进行中,则取消它。 | 更多信息 | Layer | ||
Promise<LayerView> | 更多信息 当图层被添加到 Map.layers 集合并且必须为其创建图层视图时,由视图调用,例如 MapView 和 SceneView 。 | 更多信息 | Layer | |
PopupTemplate | 更多信息 为图层创建一个默认弹出模板,填充图层的所有字段。 | 更多信息 | PointCloudLayer | |
更多信息 销毁图层和任何相关资源(包括其portalItem,如果它是图层上的属性)。 | 更多信息 | Layer | ||
Boolean | 更多信息 在实例上触发事件。 | 更多信息 | Layer | |
Promise<Object> | 更多信息 在图层可用时获取图层的自定义属性数据。 | 更多信息 | Layer | |
Domain | 更多信息 返回与给定字段名称关联的Domain。 | 更多信息 | PointCloudLayer | |
Boolean | 更多信息 指示实例上是否存在与提供的事件名称匹配的事件侦听器。 | 更多信息 | Layer | |
Boolean | 更多信息
| 更多信息 | Layer | |
Boolean | 更多信息
| 更多信息 | Layer | |
Boolean | 更多信息
| 更多信息 | Layer | |
Promise | 更多信息 加载该类引用的资源。 | 更多信息 | Layer | |
Object | 更多信息 在实例上注册事件处理程序。 | 更多信息 | Layer | |
Object | 更多信息 从服务中查询给定字段的缓存统计信息。 | 更多信息 | PointCloudLayer | |
Promise | 更多信息
| 更多信息 | Layer |
方法详细说明
-
当图层被添加到 Map.layers 集合并且图层视图必须为其创建时,由 MapView 和 SceneView 等视图调用, 该方法内部使用,没有直接调用的用例。
参数:view *父视图
options Objectoptional指定附加选项的对象。 有关此对象所需的属性,请参阅下面的对象规格表。
规范:signal AbortSignaloptional一个中止图层视图创建的信号。
返回值:类型 描述 Promise<LayerView> 用 LayerView 实例解析。
-
createPopupTemplate(options){PopupTemplate}起始版本: GeoScene API for JavaScript 4.22
-
为图层创建默认弹出模板,并使用图层的所有字段进行填充。字段CLASS_CODE使用类别名称进行解码。字段 RGB 使用十进制代码描述 rgb。字段 RETURNS 使用总返回数 (1/3) 进行解码,该字段显示 3 个中的 1 个。
参数:options CreatePopupTemplateOptionsoptional用于创建弹出模板的选项。
返回值:类型 描述 PopupTemplate 弹出模板,如果图层没有任何字段,则为 null
。
-
destroy()inherited起始版本: GeoScene API for JavaScript 4.22
-
销毁图层和任何相关资源(包括其portalItem,如果它是图层上的属性)。该层一旦被销毁就不能再使用了。
被破坏的图层将从其父对象中删除,例如 Map、WebMap、WebScene,Basemap, Ground ,或 GroupLayer。
-
起始版本: GeoScene API for JavaScript 4.22
-
在实例上触发事件。仅当创建此类的子类时才应使用此方法。
参数:type String事件名称
event Objectoptional事件负载。
返回值:类型 描述 Boolean 如果侦听器收到通知,则为 true
-
getFieldDomain(fieldName){Domain}起始版本: GeoScene API for JavaScript 4.22
-
返回与给定字段名称关联的Domain。 Domain可以是 CodedValueDomain 或 RangeDomain。
参数:fieldName String字段名称。
返回值:类型 描述 Domain 与给定要素的给定字段名称相关联的Domain对象。
-
isFulfilled()
可用于验证创建类的实例是否已完成(无论成功或失败)。 如果已完成,将会返回true
。返回值:类型 描述 Boolean 指示创建类的实例是否已完成(无论成功或失败)。
-
isRejected()
可用于验证创建类的实例是否失败。 如果失败, 将会返回true
。返回值:类型 描述 Boolean 指示是否已拒绝创建类的实例。
-
isResolved()
可用于验证创建类的实例是否成功。 如果成功, 将会返回true
。返回值:类型 描述 Boolean 指示是否已解析创建类的实例。
-
加载此类引用的资源。 此方法自动为 View 及其在 Map 中引用的所有资源执行 如果视图是用地图实例构造的。
当访问一个不会在View中加载的资源时,开发者必须调用这个方法。
load()
方法仅在第一次调用时触发资源的加载。 随后的调用返回相同的promise。可以提供一个
signal
来停止对Loadable
实例加载状态的关注。 当信号中止时,实例不会停止其加载过程,只有 cancelLoad 可以中止它。参数:signal AbortSignaloptional可用于中止异步任务的 Signal 对象。 当发出中止信号时,返回的 Promise 将被一个名为
AbortError
的 Error 拒绝。另请参阅 AbortController 以获取有关如何构造可用于传递中止 signals 的控制器的更多信息。返回值:类型 描述 Promise 资源已加载时解析。
-
在实例上注册事件处理程序。调用此方法将事件与侦听器挂钩
参数:要监听的event 或者事件数组
listener Function事件触发时要调用的函数
返回值:类型 描述 Object 返回一个 remove()
方法的事件处理程序,该方法用以停止侦听事件。属性 类型 描述 remove Function 当被调用时,从事件中移除监听器。 示例代码:view.on("click", function(event){ // event是事件触发后返回的事件句柄。 console.log(event.mapPoint); });
-
queryCachedStatistics(fieldName, options){Object}起始版本: GeoScene API for JavaScript 4.22
-
从服务中查询给定字段的缓存统计信息。
参数:fieldName String要查询其统计信息的字段的名称。
options Objectoptional具有如下属性的对象。
规范:signal AbortSignaloptional可用于中止异步任务的 Signal 对象。 当发出中止信号时,返回的 Promise 将被一个名为
AbortError
的 Error 拒绝。另请参阅 AbortController 以获取有关如何构造可用于传递中止 signals 的控制器的更多信息。返回值:类型 描述 Object 统计文档。 示例代码:layer.queryCachedStatistics("ELEVATION") .then(function(statistics) { console.log(statistics); });
-
起始版本: GeoScene API for JavaScript 4.22
-
when()
创建类的实例后,会被执行一次。该方法接受两个参数:callback
函数和errback
函数。callback
在类的实例加载时执行。 如果类的实例无法加载,则执行errback
。参数:callback Functionoptional当 Promise 成功时,该函数将被调用。
errback Functionoptional当 Promise 失败时,该函数将被调用。
返回值:类型 描述 Promise 返回回调结果的新 promise,可用于链接其他函数。 示例代码:// 尽管此示例使用 MapView,但任何作为 Promise 的类实例都可以以相同的方式使用 when() let view = new MapView(); view.when(function(){ // 当 Promise resolved 时,函数将被执行 }, function(error){ // 当 Promise 通过 rejected 抛错时,这个函数将被执行 });
事件概述
属性 | 类型 | 描述 | 类 | |
---|---|---|---|---|
{view: View,layerView: LayerView} |
更多信息
在图层的 LayerView创建并在视图中呈现后触发。 |
更多信息 | Layer | |
{view: View,error: Error} |
更多信息
将图层添加到地图后,在创建 LayerView 期间发出错误时触发。 |
更多信息 | Layer | |
{view: View,layerView: LayerView} |
更多信息
在层的 LayerView 被销毁并且不再在视图中呈现后触发。 |
更多信息 | Layer |
事件详述
-
layerview-createinherited
-
在图层的 LayerView创建并在视图中呈现后触发。
示例代码:// 每次为此特定视图创建图层视图时,都会触发此函数。 layer.on("layerview-create", function(event){ / 发出此事件的图层的 LayerView event.layerView; });
-
layerview-create-errorinherited
-
将图层添加到地图后,在创建 LayerView 期间发出错误时触发。
示例代码:// 在创建图层的图层视图期间发生错误时会触发此函数 layer.on("layerview-create-error", function(event) { console.error("LayerView failed to create for layer with the id: ", layer.id, " in this view: ", event.view); });