关系

使用关系渲染器样式化人口普查区,显示家庭规模和房屋价值之间的地理关系 

什么是关系样式?

也称为二元分级统计图,您可以使用关系样式来探索两个数值属性之间的潜在关系。它叠加了两个连续配色方案,每个方案都与一系列值相关,会基于每个变量与另一变量的关系进行分类的方式对要素进行着色。

需注意的是,即使您观察到两个感兴趣变量之间存在正相关关系,也不意味着它们在统计上是相关的。这并不意味着一个变量的存在会影响另一变量。因此,应在事先知道两个变量可能相关的情况下,谨慎地使用此渲染器。

关系样式的工作方式

此渲染器可使用单独色带将每个变量分类为 2、3 或 4 个类。其中一个色带旋转 90 度并叠加在另一色带上,以创建 2x2、3x3 或 4x4 的正方形网格。x 轴指示一个变量的值范围,y 轴指示第二个变量值的范围。从左下角到右上角呈对角线的正方形表示两个变量可能相关或一致的要素。

关系渲染器的图例类似于两个相互叠加的单色序列色带的网格,沿对角线形成第三个色调,这表明这两个变量可能存在关联。

relationship-legend

右下角和左上角表示一个字段具有高值而另一个字段具有低值的要素,反之亦然。

示例

3x3 网格

以下示例使用 3x3 关系配色方案显示平均家庭规模与平均房屋价值之间的地理关系。展开地图右上角的图例以查看两个变量可能相关的位置和不相关的位置。

要创建关系地图,需要从关系智能制图模块请求渲染器。

GeoScene JS API
91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 108 108 108 108 108 108 108 108 108 108 108 108 108 108 108 108 108 108 108 108 108 108 108 108 108 108 108 108 108 108 108 108 108 108 108
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta
      name="viewport"
      content="initial-scale=1,maximum-scale=1,user-scalable=no"
    />
    <title>GeoScene Developer Guide: Relationship</title>

    <link rel="stylesheet" href="https://js.geoscene.cn/4.23/geoscene/themes/light/main.css"/>
    <script src="https://js.geoscene.cn/4.23/"></script>

    <style>
      html,
      body,
      #viewDiv {
        padding: 0;
        margin: 0;
        height: 100%;
        width: 100%;
    </style>

    <script>
      require([
        "geoscene/config",
        "geoscene/views/MapView",
        "geoscene/WebMap",
        "geoscene/layers/FeatureLayer",
        "geoscene/widgets/Legend",
        "geoscene/widgets/Expand",
        "geoscene/smartMapping/renderers/relationship"
      ], function (
      ) {
        geosceneConfig.apiKey = "YOUR_API_KEY";
        const layer = new FeatureLayer({
          portalItem: {
            id: "1cbb0faa0f1f424bbe213bfae9319309"
          blendMode: "multiply",
          definitionExpression: "STATE = 'AZ'"
        const map = new WebMap({
          portalItem: {
            id: "9cf503b654144873a8e33f996f91ba1d"
          layers: [ layer ]
        const referenceScale = 9244650*2;
        const view = new MapView({
          container: "viewDiv",
          map: map,
          scale: 1155580,
          center: [ -111.868, 33.411 ],
          // Set dock options on the view's popup
          popup: {
            dockEnabled: true,
            dockOptions: {
              breakpoint: false
          constraints: {
            snapToZoom:false
        view.ui.add(new Expand({
          content: new Legend({
        }), "top-right");
        function createRelationshipRenderer() {
          const params = {
            layer: layer,
            view: view,
            field1: {
              field: "AVGHHSZ_CY",
              label: "Household size"
            },
            field2: {
              field: "AVGVAL_CY",
              label: "Home value"
            },
            focus: null,
            numClasses: 3,
            outlineOptimizationEnabled: true
          };

          return relationshipRendererCreator.createRenderer(params);
        function applyRenderer(response) {
          const renderer = response.renderer;
          renderer.uniqueValueInfos.forEach(function (info) {
            switch (info.value) {
              case "HH":
                info.label = "Large households; Expensive homes";
                break;
              case "HL":
                info.label = "Large households; Cheaper homes";
                break;
              case "LH":
                info.label = "Small households; Expensive homes"
                break;
              case "LL":
                info.label = "Small households; Cheaper homes";
                break;
    </script>
  </head>

  <body>
    <div id="viewDiv"></div>
  </body>
</html>

API 支持

完全支持部分支持不支持
  • 1. 仅颜色
  • 2. 仅支持点符号按大小变化
  • 3. 不支持3D点符号按大小变化

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.