作者:贤
一. 介绍
SuperMap iObjects .NET
是基于 Microsoft 的 .NET 技术开发的一款 SDK 产品,该篇主要说明如何基于 SuperMap iObjects .NET
组件如何快速在三维场景中实现热力图效果。
话不多说,先看效果,如下图所示效果满足您的需求,请详细阅读以下内容;若该三维场景热力图效果无法满足您的当前需求,可在此篇评论您的需求以及此示例的改进建议。
二. 开发环境
软件 | 版本 | 下载地址 | 说明 |
---|---|---|---|
SuperMap iObjects .NET | 11.2 及以上版本 | http://support.supermap.com.cn/DownloadCenter/ProductPlatform.aspx | 建议参考 SuperMap iObjects .NET 组件包中的帮助文档进行环境和许可配置 |
Visual Studio | 2022 及以上版本 | https://visualstudio.microsoft.com/zh-hans/ | SuperMap iObjects .NET 从 10.2.0 版本开始只提供 64 位组件包,Visual Studio 2022 开始支持在工具箱中添加 SuperMap iObjects .NET 64 位 UI 控件 |
三. 核心接口
SuperMap iObjects .NET
组件提供了 TrackingLayer3D.Add 接口用于在三维场景跟踪图层添加点集合并以热力图的方式显示。
3.1 接口描述
// TrackingLayer3D 类的 Add 接口
public int Add(
List<Geometry> geoList,
GeoStyle3D geoStyle3D,
bool value,
HeatMapInfo info,
string tag
)
3.2 接口参数说明
参数 | 类型 | 描述 |
---|---|---|
geoList | List<Geometry> | 点集合 |
geoStyle3D | GeoStyle3D | 点的三维样式 |
value | bool | 是否以热力图方式显示,true表示以热力图方式显示,false以点的方式显示 |
info | HeatMapInfo | 热力图信息 |
tag | String | 热力图标签 |
3.3 热力图类 (HeatMapInfo)
参数 | 类型 | 描述 |
---|---|---|
Bounds | Rectangle2D | 点集合的范围 |
Intension | double | 强度值 |
PointPixel | int | 热力图像素大小 |
四. 代码实现
// 获取三维点数据集合
List<Geometry> geometries = new List<Geometry>();
Datasource datasource = workspace.Datasources.Open(datasourceConnectionInfo);
DatasetVector datasetVector = (DatasetVector)datasource.Datasets["NewPoint3D"];
Recordset recordset = datasetVector.GetRecordset(false, CursorType.Static);
recordset.MoveFirst();
while (!recordset.IsEOF)
{
Geometry3D geometry = (Geometry3D)recordset.GetGeometry();
geometries.Add(geometry);
recordset.MoveNext();
}
recordset.Close();
recordset.Dispose();
// 构建热力图类,设置热力图显示效果参数
HeatMapInfo heatMapInfo = new HeatMapInfo
{
Bounds = datasetVector.Bounds,
Intension = 2,
PointPixel = 100
};
// 将三维点集合添加到跟踪图层并以热力图显示
sceneControl.Scene.TrackingLayer.Add(geometries, new GeoStyle3D(), true, heatMapInfo, "heatmap3d");
五. 总结
基于 SuperMap iObjects .NET
组件实现三维场景热力图,若通过上述教程学习自行实现时依然存在逻辑不清晰的情况,建议可以参考示例源码 SceneHeatMapDemo。