不透明度

字数统计: 1.5k
阅读时长: 约 3 分钟
当前版本: 4.29

山洪灾害预警 (2002 - 2012)。警告区均被赋予相同的透明符号,这使得洪水活动更频繁的区域可以更清楚地显示。

聚类和热力图仅适用于点图层。当面重叠时,您可以使用每个要素的不透明度来可视化其密度。

什么是每个要素的不透明度?

通过在要素上设置高透明度符号,可以有效地可视化具有大量重叠要素的图层 (至少 90-99% 的透明度效果会最好)。这对于显示许多折线堆叠在一起的区域特别有效。

例如,以下地图显示了在 10 年内经历山洪警报的区域。每个多边形代表一个持续时间跨度为 1 到 12 小时的山洪警报。每个都分配了一个 alpha 值为 0.04 (96% 透明度) 的蓝色填充符号。

不透明度 0.04

可视化为高透明度多边形的山洪警报。不透明地区经历了大量的山洪预警。透明地区的山洪预警较少

仅经历一次山洪警报的区域的不透明度值为 0.04。经历多次山洪警报的区域将具有更高的不透明度值,使其更明显。

如果未基于每个要素设置不透明度,则只能区分至少经历一次山洪警报的区域。

完全不透明

可视化为不透明多边形的山洪警报。没有视觉提示指示比其他区域经历更多警报的区域。

无论您将所有数据存储在一个图层中,还是存储在多个图层中,此可视化技术都有效。在任一情况下,每个要素的透明度都会与其他重叠要素相乘,因此与要素稀疏的区域相比,您可以轻松查看要素密度较高的位置。

如何设置不透明度

不透明度只能通过符号 (表示每个要素) 的颜色属性进行设置。这允许给定像素处的不透明度与重叠要素相乘。

请注意下面代码段中的颜色值。每个参数表示一个颜色通道 (即 rgba(red, green, blue, alpha))。alpha (即不透明度) 值必须是一个非常小的数字。根据要素的密度,介于 0.01 和 0.1 之间的数字通常效果最佳。

js
    layer.renderer = new SimpleRenderer({
        symbol: new SimpleFillSymbol({
            color: "rgba(0,76,115,0.04)",
            outline: null
        })
    });

注:修改 layer.opacity (而不是渲染器的符号) 会在所有要素上应用一致的透明度,并不会产生所需的结果。

示例

一个图层的面密度

以下示例演示了如何基于每个要素设置不透明度,以有效地显示重叠面的密度。

  1. 创建一个简单渲染器。

  2. 在渲染器中设置一个符号,其 color 属性具有非常小的 alpha 值 (例如 0.01 - 0.1)。

js
    layer.renderer = new SimpleRenderer({
        symbol: new SimpleFillSymbol({
            color: "rgba(0,76,115,0.04)",
            outline: null
        })
    });

山洪灾害预警 (2002 - 2012)。所有警告区均被赋予相同的透明符号,这使得活动更激烈的区域可以更清楚地显示出来

两个图层的面密度

您可能需要考虑多个图层之间的要素密度。以下示例演示了如何显示两个图层 (表示火灾区域) 中的面密度。由于图层彼此重叠绘制,因此我们可以在两个或多个图层的要素上设置相同的符号,以实现与上一个示例相同的可视化效果。

  1. 创建一个简单渲染器。

  2. 在渲染器中设置一个符号,其具有非常小的 alpha 值 (例如 0.01 - 0.1)。

  3. 将同一渲染器应用于表示相同或相似现象的两个或多个图层。

js
    const renderer = new SimpleRenderer({
        symbol: new SimpleFillSymbol({
            color: "rgba(168, 0, 0, 0.17)",
            outline: null
        })
    });
    burnsLayer.renderer = renderer;
    prescribedLayer.renderer = renderer;

加州火灾区域 (1878 - 2020)。此可视化显示了哪些区域经历了更多的火灾,无论其是预先规划的、自然的还是意外的

多类型密度

以下示例演示了如何显示两个图层 (表示不同类型的要素) 中的面密度。此应用程序可视化了 10 年内所有山洪和龙卷风警报的位置。山洪警报被赋予一个透明的蓝色填充符号,龙卷风警报被赋予一个透明的橙色符号。

这使您可以查看洪水密度高的区域,龙卷风密度高的区域,以及两者密度都高的区域。

  1. 创建两个简单渲染器对象。

  2. 在每个渲染器中设置具有不同颜色的符号。颜色必须具有不同的色调,但颜色的 alpha 值应该是相同的值 (例如 0.01 - 0.1)。

  3. 将每个渲染器应用于其各自的图层。

  4. 在最顶层的图层上设置 average 混合模式。这将平均其下方所有图层的颜色。这可确保最上面的图层不会仅因为地图中的图层顺序而主导可视化。

山洪和龙卷风预警区 (2002 - 2012)。每个图层均应用具有相同透明度但不同色调的符号。这允许最终用户查看经历高密度山洪警报和/或龙卷风警报的区域。

js
    const tornadoes = new FeatureLayer({
        title: "Tornado warnings",
        url: "https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/Tornado_warnings_2002_to_2011_for_interactive_demo/FeatureServer",
        popupEnabled: false,
        blendMode: "average",
        renderer: new SimpleRenderer({
            symbol: new SimpleFillSymbol({
                color: "rgba(255, 128, 26,0.03)",
                outline: null
            })
        })
    });