• geoscene/smartMapping

predominance

AMD: require(["geoscene/smartMapping/renderers/predominance"], (predominanceRendererCreator) => { /* code goes here */ });
ESM: import * as predominanceRendererCreator from "@geoscene/core/smartMapping/renderers/predominance";
类: geoscene/smartMapping/renderers/predominance
起始版本:GeoScene Maps SDK for JavaScript 4.9

该对象包含一个用于生成众数渲染可视化的辅助方法。可视化众数渲染涉及根据一组相互竞争的数值属性中的哪个属性在总计数中胜出或击败其他属性来为图层要素进行着色。这方面的常见应用包括可视化选举结果、调查结果和主要人口。

例如,假设有包含中国多个县的图层,其中字段包含各种作物的总销售额:小麦、大豆、玉米、棉花和蔬菜。可使用此模块中的 createRenderer() 方法生成一个默认可视化,以描绘每个县的获胜者或最主要的作物。

以下示例描述了基于城市街区群建造住宅的主要十年。

predominance-size

已知限制

  • 目前,只能为具有 point 几何类型的图层生成 3D 符号。
  • SceneLayers 必须启用 supportsRenderersupportsLayerQuery 功能,除非将预定义 statistics 对象提供给方法的 statistics 参数。请使用 getFieldInfoUsage() 方法检查 SceneLayer 的功能。

方法概述

名称 返回值类值 描述 对象
Promise<RendererResult>

基于一组竞争的数字字段生成众数渲染渲染器。

更多详情
predominance

方法详细说明

createRenderer(params){Promise<RendererResult>}

基于一组竞争的数字字段生成众数渲染渲染器。

可视化众数渲染涉及根据一组相互竞争的数值属性中的哪个属性在总计数中胜出或击败其他属性来为图层要素进行着色。这方面的常见应用包括可视化选举结果、调查结果和主要人口。

例如,假设有包含中国多个县的图层,其中字段包含各种作物的总销售额:小麦、大豆、玉米、棉花和蔬菜。如果某个要素的每个字段具有以下值:

字段名称 计数 Color
Wheat 130 紫色
Soybeans 2000 蓝色
Corn 0 黄色
Cotton 300 绿色
Vegetables 120 红色

然后,渲染器使用蓝色来符号化这一要素,因为大豆是主要作物。

要素的主要字段是根据此方法生成的 Arcade 表达式的结果确定的。您需要提供 layerviewfields 列表来生成此渲染器。或者,您可以将 includeSizeVariable 设置为 true 来更改每个要素的大小,以表示该要素相对于整个图层的影响程度。您还可将 includeOpacityVariable 设置为 true 以根据主要字段与所有其他字段相比的强度来为每个要素添加不透明度。对于上面的示例,该要素可能是不透明的,因为大豆销售额远远超过了其他所有要素的总和。如果大豆总额仍然最高,但仅为 301,则该要素将非常透明,表明大豆总额获胜,但差距不大。

为方便自定义更复杂的可视化创作应用程序,还提供了其他选项。

参数
规范
params Object

输入参数,用于根据一组竞争字段生成众数渲染可视化。各参数的详细信息见下表。

规范

为其生成可视化效果的图层。

view View

将在其中渲染可视化的视图实例。

fields Object[]

一组相互竞争的数字字段,用作众数渲染可视化的基础。例如,如果创建一个选举地图,您需指示表示存储总选票的候选人或政党的每个字段的名称。

规范
name String

数值字段的名称。

label String
optional

描述图例中字段名称 (或类别) 的标注。如果给定字段没有直观的字段名称,则应使用此选项。例如,对于名为 dem 的字段 (表示民主党的总选票计数),您可将标注设置为 Democrat,以明确最终可视化中类别的名称。

includeOpacityVariable Boolean
optional

表示是否在最终渲染器中包含数据驱动的不透明度。如果为 true,则主要值大大超过所有其他值的要素被赋予高不透明度。如果某个要素的优势值比其他要素略高,则将为该要素分配低不透明度,表明该要素虽然具有优势值,但优势并不大。

predominance-opacity

includeSizeVariable Boolean
optional

表示是否在最终渲染器中包含数据驱动的大小。如果为 true,则将根据 fields 参数中所有竞争值的总和为要素分配大小。根据图层的几何类型,总计数较小的要素将使用小图标或线条调整大小,而总计数较大的要素将使用大图标或线条调整大小。启用此选项有助于可视化特定要素与整个数据集相比的影响力。它消除了由地理面积较大但数据值相对较小的要素带来的偏差。

predominance-size

outlineOptimizationEnabled Boolean
optional
默认值: false

仅适用于面图层。指示多边形轮廓宽度是否应根据视图比例而变化。设置后,必须在 view 参数中提供有效的 MapView 实例。3D SceneViews 不支持此选项。

sizeOptimizationEnabled Boolean
optional
默认值: false

指示符号大小是否应根据视图比例而变化。设置后,必须在 view 参数中提供有效的 MapView 实例。3D SceneViews 不支持此选项。

legendOptions Object
optional

提供用于修改 Legend 属性 (用于描述可视化效果) 的选项。

规范
title String
optional

用于描述 Legend 中的渲染器的标题。

showLegend Boolean
optional

指示是否在图例中包括渲染器。

optional

summaryStatistics 函数生成的统计信息对象。createAgeRenderer() 方法可生成一个 Arcade 表达式,并对图层执行该表达式结果的统计查询。如果已生成表达式的统计信息,则在此处传递对象以避免进行第二次统计信息查询。

sortBy String
optional
默认值: count

表示如何在图例中对值进行排序。有关可能传递给该参数的值的信息,请参见下表。

可能值 描述
count 唯一值/类型将根据每个类别中的要素数量从高到低排序。
value 唯一值/类型将按照它们在 fields 参数中指定的顺序进行排序。

可能值"count"|"value"

predominanceScheme PredominanceScheme
optional

在制作应用程序中,用户可以选择预定义的众数渲染方案。将方案对象传递到此属性,以避免基于 view 的背景获取方案对象。

symbolType String
optional
默认值:2d

要生成的符号类型。这取决于您正在使用的视图和所需的可视化效果。对于具有 mesh 几何类型的图层,不需要指定此参数。下面描述了可能的值。

描述
2d 使用 2D 符号生成可视化,如 SimpleMarkerSymbolSimpleLineSymbolSimpleFillSymbol。如果为 MapView 中的数据生成可视化效果,请使用此选项。
3d-flat 使用具有平面符号图层的 3D 符号生成可视化,例如 IconSymbol3DLayerLineSymbol3DLayerFillSymbol3DLayer。如果为 SceneView 中的数据生成 2D 可视化,请使用此选项。
3d-volumetric 使用具有体积符号图层的 3D 符号生成可视化效果,例如 ObjectSymbol3DLayerPathSymbol3DLayerExtrudeSymbol3DLayer。如果为 SceneView 中的数据生成 3D 可视化,请使用此选项。如果使用此选项,则必须为 view 参数提供 SceneView 实例。
3d-volumetric-uniform 使用具有体积符号图层的统一大小的 3D 符号生成可视化效果。如果为 SceneView 中的数据生成 3D 可视化效果,并且符号的大小应一致,例如球体,请使用此选项。如果使用此选项,则必须为 view 参数提供 SceneView 实例。

可能值"2d"|"3d-flat"|"3d-volumetric"|"3d-volumetric-uniform"

defaultSymbolEnabled Boolean
optional
默认值:true

在渲染器上启用 defaultSymbol,并将其分配给没有值的要素。

colorMixMode String
optional
默认值:replace

此选项仅适用于为网格 SceneLayers 生成渲染器。指定如何将符号的颜色应用于几何颜色/纹理。有关更多上下文,请参阅 FillSymbol3DLayer.material 文档。有关可能的值,请参见下表。

描述
tint 将符号 color 应用于不饱和的几何体/纹理颜色。
replace 移除几何/纹理颜色并应用符号color
multiply 将几何图形/纹理颜色值与符号 color 值相乘。结果是颜色变深。与白色相乘可使几何图形颜色保持不变。
forBinning Boolean
optional

指示生成的渲染器是否用于图格可视化。如果为 true,则此方法中的输入字段应引用该图层的 featureReduction 属性中定义的聚合字段

optional

允许可取消的请求。如果取消,则承诺将被拒绝,并返回一个名为 AbortError 的错误。另请参见 AbortController

返回
类型 描述
Promise<RendererResult> 解析为 RendererResult 的实例。
示例
const layer = new FeatureLayer({
  url: "https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/USA_County_Crops_2007/FeatureServer/0"
});

// will create a visualization of predominant crop by U.S. county

const params = {
  layer: layer,
  view: view,
  fields: [{
    name: "M217_07",
    label: "Vegetables"
  }, {
    name: "M188_07",
    label: "Cotton"
  }, {
    name: "M172_07",
    label: "Wheat"
  }, {
    name: "M193_07",
    label: "Soybeans"
  }, {
    name: "M163_07",
    label: "Corn"
  }],
  includeOpacityInfo: true
};

// when the promise resolves, apply the renderer to the layer
predominanceRendererCreator.createRenderer(params)
  .then(function(response){
    layer.renderer = response.renderer;
  });

类型定义

RendererResult

createRenderer() 方法的结果对象。各属性的详细信息见下表。

属性

表示众数渲染可视化的唯一值渲染器对象。在图层的 renderer 属性上对它进行设置以更新其可视化效果。

predominantCategoryInfos UniqueValueInfo[]

描述渲染器中所表示的每个唯一类型或类别的值、符号和计数的对象数组。

excludedCategoryInfos Object[]

一组对象,描述了在可视化给定字段的数据时排除在考虑之外的值或类别。每个对象的规范与 predominantCategoryInfos 属性中指定的对象的规范相匹配。

optional

大小视觉变量,表示众数渲染可视化中包含的所有字段的总数。如果参数 includeSizeVariable 为 true,则包含该变量。

optional

不透明度视觉变量,表示由所有字段的主要值组成的总计数的百分比。此变量表示与其他值相比,特定值的优势强度。

predominanceScheme PredominanceScheme

渲染器使用的众数渲染方案。

basemapId String

用于确定要素的最佳填充颜色的底图的 ID。

basemapTheme String

表示输入视图底图的平均颜色是 light 还是 dark

您的浏览器不再受支持。请升级您的浏览器以获得最佳体验。请参阅浏览器弃用帖子以获取更多信息