HeatmapRenderer 使用核密度分析将 FeatureLayers、CSVLayers、GeoJSONLayers 和 OGCFeatureLayers 中的点要素渲染为栅格表面。
要创建此视觉效果,HeatmapRenderer 将在每个点上拟合平滑的曲面。曲面值在该点的位置处最高,并与距该点的距离成比例地减小,在距以半径指定的点的距离处达到零。曲面值等于点的字段值,如果未提供字段,则为 1。每个像素的密度可通过将它们覆盖的所有核曲面的值相加来计算。
由于没有用于在图层视图中查询密度值的 API,我们建议您使用 heatmapRendererCreator 智能制图函数来创建热点图的初始视图,然后根据需要进行渲染器调整。
颜色根据其密度值分配给每个像素。由 colorStops 属性指定的色带将颜色映射到每个像素的密度值与 maxDensity 的比率。这简化了创建自己色标的过程,因为您不需要知道将色带应用于渲染器的密度值范围。
layer.renderer = {
type: "heatmap",
field: "crime_count",
colorStops: [
{ ratio: 0, color: "rgba(255, 255, 255, 0)" },
{ ratio: 0.2, color: "rgba(255, 255, 255, 1)" },
{ ratio: 0.5, color: "rgba(255, 140, 0, 1)" },
{ ratio: 0.8, color: "rgba(255, 140, 0, 1)" },
{ ratio: 1, color: "rgba(255, 0, 0, 1)" }
],
minDensity: 0,
maxDensity: 500,
radius: 10
};
构造函数
属性概述
名称 | 类型 | 描述 | 类 |
---|---|---|---|
AuthoringInfo | 创作元数据仅包含在从智能制图创建器方法之一生成的渲染器中,例如 sizeRendererCreator.createContinuousRenderer() 或 colorRendererCreator.createContinuousRenderer()。 更多详情 | 渲染器 | |
HeatmapColorStop[] | 描述渲染器色带的对象数组。 更多详情 | HeatmapRenderer | |
String | 类的名称。 更多详情 | Accessor | |
String | 用于对每个热点图的密度进行加权的属性字段的名称。 更多详情 | HeatmapRenderer | |
Object | 一个对象,提供用于在图例中描述渲染器的选项。 更多详情 | HeatmapRenderer | |
Number | 要在热点图曲面中指定颜色的最大密度值。 更多详情 | HeatmapRenderer | |
Number | 要在热点图曲面中指定颜色的最小密度值。 更多详情 | HeatmapRenderer | |
Number | 用于创建围绕每个点拟合的平滑内核曲面的搜索半径 (以磅为单位)。 更多详情 | HeatmapRenderer | |
Number | 设置后,热点图在给定比例下的可视化将保持静态,不会随着用户放大和缩小视图而改变。 更多详情 | HeatmapRenderer | |
String | 渲染器的类型。 更多详情 | HeatmapRenderer | |
String | 遵循 Arcade 可视化配置文件定义的规范的 Arcade 表达式 表达式。 更多详情 | HeatmapRenderer | |
String | 标题,用于标识和描述 valueExpression 属性中定义的 Arcade 表达式 表达式。 更多详情 | HeatmapRenderer |
属性详细信息
-
-
创作元数据仅包含在从智能制图创建器方法之一生成的渲染器中,例如 sizeRendererCreator.createContinuousRenderer() 或 colorRendererCreator.createContinuousRenderer()。这包括来自 UI 元素的信息,例如滑块和选定的分类方法和主题。这允许用户客户端保存特定的可覆盖设置,以便下次通过 UI 访问时,可以记住它们的选择。
-
colorStops HeatmapColorStop[]
-
描述渲染器色带的对象数组。像素的密度值与渲染器的 maxDensity 之比将映射到相应的颜色。第一个停靠点的颜色(即具有最低
ratio
值的停靠点)的 alpha 值必须为0
,以便基础底图在应用程序中可见。默认值如下:
[ { ratio: 0, color: "rgba(255, 140, 0, 0)" }, { ratio: 0.75, color: "rgba(255, 140, 0, 1)" }, { ratio: 0.9, color: "rgba(255, 0, 0, 1)" } ]
-
类的名称。声明的类名称格式化为
geoscene.folder.className
。
-
field String
-
用于对每个热点图的密度进行加权的属性字段的名称。
例如,假设您有一个表示建筑物的点图层,其中包含一个字段
num_units
,表示建筑中的单元数(如果是公寓综合体)。您可以根据num_units
字段对热点图渲染器进行加权,以创建表示城市中住房单元密度的热点图。示例renderer.field = "num_units";
-
legendOptions Object起始版本:GeoScene Maps SDK for JavaScript 4.24
-
一个对象,提供用于在图例中描述渲染器的选项。
- 属性
-
minLabel String
用于描述图例中低密度区域的标注。如果未指定,则图例中将显示本地化版本的 "Low”。
maxLabel String用于描述图例中最大密度区域的标注。如果未指定,则图例中将显示本地化版本的 "High”。
title String
示例renderer.legendOptions = { title: "Car crashes", minLabel: "Few crashes", maxLabel: "Frequent crashes" };
-
maxDensity Number起始版本:GeoScene Maps SDK for JavaScript 4.24
-
要在热点图曲面中指定颜色的最大密度值。minDensity 和
maxDensity
可确定如何将 colorStops 应用于热点图曲面。密度值高于此数字的像素将在色带中分配最终(或最热)颜色。通常,
minDensity
为零,且maxDensity
将设置为适合数据集的较高值。默认值可能不适合数据集,因此此值可能需要更改。确定
minDensity
和maxDensity
的最佳值是留给开发人员的一项实践,因为不同类型的数据、比例、密度和分布需要为这些属性提供不同的值,以创建适合数据和应用程序的高密度和低密度区域的视觉上令人愉悦的分离。由于没有用于在图层视图中查询密度值的 API,我们建议您使用 heatmapRendererCreator 智能制图函数来创建热点图的初始视图,然后根据需要进行调整。
- 默认值:0.04
示例renderer.maxDensity = 100;
-
minDensity Number起始版本:GeoScene Maps SDK for JavaScript 4.24
-
要在热点图曲面中指定颜色的最小密度值。
minDensity
和 maxDensity 可确定如何将 colorStops 应用于热点图曲面。密度值低于minDensity
的像素将从可视化中排除。使用字段对热点图进行加权时,将
minDensity
设置为零以上可能有助于在视觉上降低频繁出现但值较低的区域的重要性。此属性实际上不会过滤数据或修改计算的密度值。相反,它会缩放色带,以便像素需要更高的密度值才能获得明显的颜色。确定
minDensity
和maxDensity
的最佳值是留给开发人员的一项实践,因为不同类型的数据、比例、密度和分布需要为这些属性提供不同的值,以创建适合数据和应用程序的高密度和低密度区域的视觉上令人愉悦的分离。由于没有用于在图层视图中查询密度值的 API,我们建议您使用 heatmapRendererCreator 智能制图函数来创建热点图的初始视图,然后根据需要进行调整。
- 默认值:0
示例renderer.minDensity = 10;
-
起始版本:GeoScene Maps SDK for JavaScript 4.24
-
用于创建围绕每个点拟合的平滑内核曲面的搜索半径 (以磅为单位)。密度值在点的位置处最高,并随离点的距离增加而减小。在以
radius
指定的点距离处,密度值为0
。已知限制
- 在 3D SceneViews 中,HeatmapRenderer.radius 限制为
112
pt。
- 默认值:18
示例// radius in points renderer.radius = 14;
// radius in pixels renderer.radius = "20px";
// radius in points renderer.radius = "14pt";
- 在 3D SceneViews 中,HeatmapRenderer.radius 限制为
-
referenceScale Number起始版本:GeoScene Maps SDK for JavaScript 4.24
-
设置后,热点图在给定比例下的可视化将保持静态,不会随着用户放大和缩小视图而改变。这将每个点的影响半径固定为不随缩放级别而变化的实际范围。
radius
的像素在参考比例下定义。值为 0 表示热点图没有
referenceScale
。以下图像演示了设置参考比例如何在不同比例上保持热点图,而不是在缩放时动态更新。
与参考比例的缩放偏移 静态 (参考比例) 动态 (无参考比例) +1 LOD reference scale -1 LOD 示例// locks the heatmap surface at the current view scale // so that it doesn't change as the user zooms in and out renderer.referenceScale = view.scale;
-
type Stringreadonly
-
渲染器的类型。
对于 HeatmapRenderer,类型总是 "heatmap"。
-
valueExpression String起始版本:GeoScene Maps SDK for JavaScript 4.25
-
遵循 Arcade 可视化配置文件定义的规范的 Arcade 表达式 表达式。HeatmapRenderer 中的表达式可能使用
$feature
配置变量来引用字段值,并且必须返回一个数字。此表达式返回的值用于加权每个热点的密度。
该属性通常用作数据驱动可视化的字段的替代值。
已知限制
- 仅在 2D MapView 中有效。
- 当将 HeatmapRenderer 持久化为 WebMap.save() 或 WebScene.save() 的一部分时,不支持此属性。
示例// expression calculating voter turnout based on two field values let renderer = { type: "heatmap", // autocasts as new HeatmapRenderer() valueExpression: "( $feature.TOT_VOTES / $feature.REG_VOTERS ) * 100", };
-
valueExpressionTitle String起始版本:GeoScene Maps SDK for JavaScript 4.25
-
标题,用于标识和描述 valueExpression 属性中定义的 Arcade 表达式 表达式。如果 legendOptions 属性中没有
title
,则它将在 Legend 中显示为渲染器的标题。已知限制
- 仅在 2D MapView 中有效。
- 当将 HeatmapRenderer 持久化为 WebMap.save() 或 WebScene.save() 的一部分时,不支持此属性。
- 另请参阅
示例renderer.valueExpression = "($feature.POP / $feature.SQ_MI) * 100"; renderer.valueExpressionTitle = "Population per square mile";
方法概述
名称 | 返回值类值 | 描述 | 类 |
---|---|---|---|
添加一个或多个与对象的生命周期相关联的句柄。 更多详情 | Accessor | ||
HeatmapRenderer | 创建 renderer 的深度克隆。 更多详情 | HeatmapRenderer | |
* | 创建此类的新实例并使用从 GeoScene 产品生成的 JSON 对象值对其进行初始化。 更多详情 | 渲染器 | |
Boolean | 如果存在指定的句柄组,则返回 true。 更多详情 | Accessor | |
移除对象拥有的句柄组。 更多详情 | Accessor | ||
Object | 将此类的实例转换为 GeoScene Portal JSON 表示。 更多详情 | 渲染器 |
方法详细说明
-
addHandles(handleOrHandles, groupKey)inherited起始版本:GeoScene Maps SDK for JavaScript 4.25
-
添加一个或多个与对象的生命周期相关联的句柄。当对象被销毁时,将移除句柄。
// Manually manage handles const handle = reactiveUtils.when( () => !view.updating, () => { wkidSelect.disabled = false; }, { once: true } ); // Handle gets removed when the object is destroyed. this.addHandles(handle);
参数handleOrHandles WatchHandle|WatchHandle[]对象销毁后,标记为要移除的句柄。
groupKey *optional标识句柄应添加到的组的键。组中的所有句柄稍后都可使用 Accessor.removeHandles() 进行删除。如果未提供键,则句柄将被添加到默认组。
-
clone(){HeatmapRenderer}
-
创建 renderer 的深度克隆。
返回类型 描述 HeatmapRenderer 调用此方法的对象的深度克隆。 示例// Creates a deep clone of the first layer's renderer let renderer = view.map.layers.getItemAt(0).renderer.clone();
-
fromJSON(json){*}static
-
创建此类的新实例并使用从 GeoScene 产品生成的 JSON 对象值对其进行初始化。传入到输入
json
参数的对象通常来自对 REST API 中查询操作的响应或来自另一个 GeoScene 产品的 toJSON() 方法。有关何时以及如何使用该函数的详细信息和示例,请参阅指南中的使用 fromJSON() 主题。参数json ObjectGeoScene 格式实例的 JSON 表示。有关各种输入 JSON 对象的结构示例,请参阅 GeoScene REST API 文档。
返回类型 描述 * 返回该类的新实例。
-
起始版本:GeoScene Maps SDK for JavaScript 4.25
-
如果存在指定的句柄组,则返回 true。
参数groupKey *optional组键。
返回类型 描述 Boolean 如果存在指定的句柄组,则返回 true
。示例// Remove a named group of handles if they exist. if (obj.hasHandles("watch-view-updates")) { obj.removeHandles("watch-view-updates"); }
-
removeHandles(groupKey)inherited起始版本:GeoScene Maps SDK for JavaScript 4.25
-
移除对象拥有的句柄组。
参数groupKey *optional要移除的组键或组键的数组或集合。
示例obj.removeHandles(); // removes handles from default group obj.removeHandles("handle-group"); obj.removeHandles("other-handle-group");
-
将此类的实例转换为 GeoScene Portal JSON 表示。有关详细信息,请参阅使用 fromJSON() 指南主题。
返回类型 描述 Object 此类实例的 GeoScene Portal JSON 表示。