當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


JavaScript ArcGIS color.createVisualVariable用法及代碼示例


基本信息

以下是所在類或對象的基本信息。

AMD: require(["esri/smartMapping/renderers/color"], (colorRendererCreator) => { /* code goes here */ });

ESM: import * as colorRendererCreator from "@arcgis/core/smartMapping/renderers/color";

對象: esri/smartMapping/renderers/color

自從:用於 JavaScript 4.2 的 ArcGIS API

用法說明

color.createVisualVariable函數(或屬性)的定義如下:

createVisualVariable (params) {Promise<VisualVariableResult>}


此方法生成一個帶有默認停靠點的顏色視覺變量,這些默認停靠點是根據針對指定字段或表達式查詢的統計信息以及由視圖背景確定的顏色進行優化選擇的。

可以通過兩種不同的方式調用此方法。最常見的情況是提供 layerviewfieldtheme 。這是數據的統計信息不為人知且用戶不知道使用什麽顏色的場景。您可以選擇使用 valueExpression 而不是字段,根據運行時執行的腳本返回的數值來可視化特征。

提供其他選項是為了方便更多涉及的自定義可視化創作應用程序。例如,如果您已經在另一個操作中生成了統計信息,則可以在statistics 參數中傳遞對象以避免對服務器進行額外的調用。如果您不想為您挑選一個,您也可以提供colorScheme。在這種情況下,viewtheme 選項將被忽略。

參數:

規格:
類型說明
params Object

用於根據從給定字段或表達式返回的數據生成顏色視覺變量的輸入參數。有關每個參數的詳細信息,請參見下表。

規格:

為其生成視覺變量的層。

view

View

可選的

渲染輸入層的視圖。此方法檢查視圖的背景(即底圖、Web Map背景或視圖容器)以確定輸出渲染器的最佳顏色。在實踐中應始終設置此參數,但如果未提供此參數,則此方法將假定生成的渲染器將顯示在淺色背景上。當使用 valueExpression 創建渲染器或用於在 SceneView 中顯示的渲染器時,此參數是必需的。

field

String

可選的

將查詢其數據以進行統計並用作數據驅動可視化基礎的字段的名稱。如果使用 valueExpression,則忽略此屬性。

normalizationField

String

可選的

用於規範化給定 field 值的字段名稱。提供歸一化字段有助於最大限度地減少一些可視化錯誤並標準化數據,因此所有特征都以最小的偏差進行可視化,因為麵積差異或計數變化。此選項通常在可視化密度時使用。

theme

String

可選的
默認值:high-to-low

確定將在連續漸變和Map中強調哪些值。下麵列出了可能的值。

說明 示例
high-to-low 用強烈的顏色強調高值。高於平均值一個標準偏差的數據值被指定為最強的顏色。低於平均值一個標準偏差的數據值被指定為最弱的顏色。所有其他值都被插值。 high-to-low
above 用強烈的顏色強調高值。最大數據值被分配最強的顏色。中間或平均數據值被分配最弱的顏色。所有其他值都被插值。 above
below 用強烈的顏色強調低值。最小數據值被分配最強的顏色。中間或平均數據值被分配最弱的顏色。所有其他值都被插值。 below
above-and-below 以有意義的數據值(例如平均值)為中心的值用弱顏色顯示,而其他值用強顏色強調。所有其他值都被插值。 above-and-below
centered-on 以有意義的數據值(例如平均值)為中心的值用強烈的顏色強調,而其他值用弱的顏色顯示。所有其他值都被插值。 centered-on
extremes 用強烈的顏色強調高值和低值。所有其他人都用弱顏色可視化。所有其他值都被插值。 extremes

可能的值"high-to-low"|"above"|"below"|"above-and-below"|"centered-on"|"extremes"

colorScheme

ColorScheme

可選的

在創作應用程序中,用戶可以選擇預定義的配色方案。將方案對象傳遞給此屬性以避免基於 theme 和視圖背景獲取一個。

valueExpression

String

可選的

遵循 Arcade Visualization Profile 定義的規範的 Arcade 表達式。表達式可以使用 $feature 全局變量引用字段值,並且必須返回一個數字。此屬性覆蓋 field 屬性,因此用於代替輸入 field 值。

valueExpressionTitle

String

可選的

說明從 valueExpression 返回的值的文本。這是由Legend 小部件使用的。

sqlExpression

String

可選的

計算為數字的 SQL 表達式。

sqlWhere

String

可選的

用於過濾統計查詢函數的 SQL where 子句。例如,這在您希望避免除以零的情況下很有用,就像創建優勢可視化的情況一樣。

legendOptions

Object

可選的

當提供表達式而不是字段名稱時,提供用於為字段設置標題的選項。此標題將表示 Legend 中的字段。

規格:
title

String

可選的

用於表示 Legend 中給定字段或表達式的標題。

showLegend

Boolean

可選的

指示是否在圖例中說明渲染器。

可選的

summaryStatistics 函數生成的統計對象。如果該字段的統計信息已經生成,則在此處傳遞對象以避免向服務器進行第二次統計查詢。

minValue

Number

可選的

用戶設置的自定義最小值。將此與 maxValue 結合使用以生成上下限之間的統計信息。這將是返回的顏色視覺變量中的最低點。

maxValue

Number

可選的

用戶設置的自定義最大值。將此與 minValue 結合使用以生成上下限之間的統計信息。這將是返回的顏色視覺變量中的最高點。

worldScale

Boolean

可選的

指示符號的大小單位是否以米為單位。當使用 3D 體積符號係統生成可視化時,這應該是 true,但具有 mesh 幾何類型的圖層除外。如果此屬性設置為 true ,則必須提供 view

signal

AbortSignal

可選的

允許可取消的請求。如果取消,promise 將被拒絕,並出現名為 AbortError 的錯誤。另見AbortController

返回:

類型 說明
Promise<VisualVariableResult> 解析為 VisualVariableResult 的實例。

例子:

let layer = new FeatureLayer({
  url: "https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/counties_politics_poverty/FeatureServer/0"
});

// visualization based on field and normalization field
let colorParams = {
  layer: layer,
  view: view,
  field: "POP_POVERTY",
  normalizationField: "TOTPOP_CY",
  theme: "above-and-below"
};

// when the promise resolves, apply the visual variable to the renderer
colorRendererCreator.createVisualVariable(colorParams)
  .then(function(response){
    let renderer = layer.renderer.clone();
    renderer.visualVariables = [ response.visualVariable ];
    layer.renderer = renderer;
  });
let layer = new FeatureLayer({
  url: "https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/counties_politics_poverty/FeatureServer/0"
});

// visualization based off Arcade expression
let colorParams = {
  layer: layer,
  view: view,
  valueExpression: "($feature.POP_POVERTY / $feature.TOTPOP_CY) * 100",
  sqlWhere: "TOTPOP_CY > 0",
  legendOptions: {
    title: "% of people living in poverty"
  }
};

// when the promise resolves, apply the visual variable to the renderer
colorRendererCreator.createVisualVariable(colorParams)
  .then(function(response){
    let renderer = layer.renderer.clone();
    renderer.visualVariables = [ response.visualVariable ];
    layer.renderer = renderer;
  });

相關用法


注:本文由純淨天空篩選整理自arcgis.com大神的英文原創作品 color.createVisualVariable。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。