用例开发WorkshopVisualization widgets地图

注意:以下翻译的准确性尚未经过验证。这是使用 AIP ↗ 从原始英文文本进行的机器翻译。

地图

地图微件将对象集或对象数据显示为可配置的、交互式的地理空间可视化。

这些地图可视化由两种类型的图层组成:

  • 基础图层(也称为瓦片图层),提供背景地图图像,和
  • 覆盖图层,在基础图层上以点或形状表示数据。

地图微件支持通过MapboxGL ↗进行地图渲染。如果用户的浏览器不支持WebGL,地图微件将通过Leaflet ↗进行渲染。

地图微件使用Mapbox作为其基础地图图像的主要来源,并支持"Internal"样式(基础地图图像的自定义来源),用于无法代理Mapbox的安全网络。要了解有关网络地图技术的更多信息,请参阅Mapbox文档 ↗

下面的截图显示了配置好的地图微件示例,显示了各种图层类型:

map_overview

图层类型

在地图微件中,覆盖图层在地图的基础图层上以点或形状表示数据。地图微件包含以下类型的覆盖图层:

图层使用点或标记在地图上表示单个对象,通过地理哈希属性(以纬度-经度对的形式存储)绘制。可以根据所绘制对象的属性来设置点的颜色、图标类型和大小。

有关配置信息,请参阅下面的配置点图层部分。

示例:一张显示医院位置的地图,点的颜色根据可用医院床位的数量来表示。

聚类

聚类图层非常适合基于地理哈希位置属性的大型对象集。聚类与点类似,但不是为每个对象绘制一个单独的标记,而是根据其地理邻近性将要绘制的对象聚合为聚类,可以配置聚类的大小和/或颜色以表示给定区域内的对象数量(或其他聚合函数,例如该区域内对象属性的总和或平均值)。

有关配置信息,请参阅下面的配置聚类图层部分。

示例:一张显示全国各地气象站大致地理分布的地图。

等值线

地图微件的等值线图层显示根据某个属性或该区域所代表对象的聚合结果来着色的区域(例如国家或省份)。这提供了一种可视化不同区域间差异或模式的方法,并可选择查看这些值随时间的变化。

有关配置信息,请参阅下面的配置等值线图层部分。

为了支持在函数中对H3六边形进行自定义聚合,等值线图层也可以用于将H3六边形映射为单独的区域。请参阅下面的为H3配置等值线图层部分。

示例:一张显示各州人口密度的地图,每个州根据其人口密度着色。

线段

线段图层将单个对象绘制为连接两个点的线段。

有关配置信息,请参阅下面的配置线段图层部分。

示例:一张显示航线的地图,其中起始机场通过代表航线的线段连接到目的机场。

静态

静态图层显示无法动态筛选且来自非对象数据源的信息。这些图层通常在为同一地图上的其他数据图层提供背景信息时最有用。图层的数据可以以GeoJSON ↗格式提供或通过矢量图层提供。

有关配置信息,请参阅下面的配置静态图层部分。

示例:显示各个区域可能发生不利天气事件风险的图层。

已保存

已保存图层显示在地图图层编辑器中配置并保存为单独资源的地图图层。这些图层可以跨多个应用程序共享,通常用于在Foundry中以一致的方式提供背景信息。

配置选项

核心配置

下图显示了新添加且尚未配置的地图微件及其配置面板。

map_configuration_overview

对于地图微件,核心配置选项如下:

  • 地图样式
    • 此设置控制显示的基础地图瓦片。默认情况下,这些瓦片从Mapbox加载(使用由现有企业许可覆盖)。Mapbox的瓦片支持多种主题,包括明亮、黑暗、卫星等。
    • 或者,您可以通过Internal设置选择自定义瓦片来源;有关配置自定义地图样式/基础瓦片来源的更多详细信息,请联系您的Palantir代表。
  • 地图视口: 您可以选择让地图自动缩放以适应可见数据的边界,或者在地图初次加载时使用预配置的视口。
    • 缩放适应: 地图将自动缩放以适应可见数据的边界,并将随着数据的变化而调整(例如,由于筛选)。
      • 最大缩放适应级别: 设置地图自动缩放的最大缩放级别。
    • 初始视口: 初次加载时显示的预配置视口;使用此设置时,除非重新加载页面或标签页,否则地图的视口不会重置。
  • 图例: 有各种与图例相关的配置设置,即:
    • 是否整体显示或隐藏图例
    • 位置和方向
    • 是否可以折叠图例(以在地图上节省空间)
    • 可切换图层: 最终用户是否应该能够自己显示/隐藏单个地图图层
  • 数据图层: 数据图层是基于对象集的地图图层。数据图层类型包括点、聚类、等值线和线段。每个都有特定类型的设置,但所有数据图层共享以下配置选项:
    • 映射对象集: 这是数据图层的输入变量,决定将在地图上显示的数据。这允许模块构建者定义一个新的对象集变量或重用在Workshop模块中其他地方创建的现有对象集变量。
    • 选择、可见性和事件配置: 有关更多信息,请参阅下面的配置选择、可见性和事件部分。请注意,这些配置选项显示在图层配置窗格的底部。
    • 下面是其他特定图层配置选项的更多详细信息:
  • 静态图层: 数据图层和静态图层之间的主要区别在于静态图层不需要显示对象集。因此,静态图层不能动态筛选。可以(但不要求)配置静态图层与对象集建立连接,以便在静态图层上悬停时显示Ontology中对应对象的详细信息。有关更多信息,请参阅静态图层配置部分。
  • 启用在地图上绘制形状: 此设置决定是否可以在地图上绘制形状。此配置选项在设置为后会详细显示。有关更多信息,请参阅下面的配置绘图控制部分。
  • 包含时间步进器: 此设置显示地图在不同时间/日期的状态。此配置选项在设置为后会详细显示。有关更多信息,请参阅下面的配置时间步进控制部分。
  • 已发布的视口筛选器: 此设置有助于根据微件中地图的可见边界筛选对象集。有关更多信息,请参阅下面的配置视口筛选控制部分。
  • 启用通用位置搜索: 启用后,用户将在地图的左上角看到一个搜索图标,用于搜索世界上任何地方的位置或地址。用户可以放大地图并在给定位置设置标记。搜索结果的标题和地理点数据将存储在必须初始化的字符串变量中,以便标记显示在地图上。
  • 显示用户当前位置: 启用后,用户的当前位置将根据其设备的地理位置信息显示在地图上。为了允许用户放大其当前位置,请启用地图左下角显示的额外按钮。请注意,此设置可能不支持所有设备和浏览器。

配置点图层

map_configure_point_layers

对于点图层,主要配置选项如下:

  • 地理哈希属性: 正在映射的对象集中的地理哈希属性类型,包含指示集合中每个对象位置的地理哈希(纬度-经度对)。
  • 搜索结果页数: 确定将加载的对象数量。最多可以加载10,000个对象。
  • 图例头: 描述应用案例/系列的图例标签。
  • 样式: 允许配置每个点的图标类型颜色大小,可以设置为静态样式或基于与每个点对应的对象上选定属性值的动态数据驱动样式。有关配置的更多详细信息,请参阅下面的非聚合值系列配置颜色配置部分。
  • 在对象预览中显示的属性: 悬停/点击每个点时显示的工具提示可以显示任何一组已配置的属性(例如重要特定)。
  • 点连接配置: 允许点通过线连接,假设数据是可排序的。此配置选项在设置为用线连接后会详细显示。
    • 排序属性类型: 用于排序点的属性;排序顺序决定哪些点相互连接。
    • 排序顺序: 排序点的顺序。
    • 颜色: 连接点的线的颜色。
    • 宽度: 连接点的线的宽度。
    • 描边: 连接点的线的描边。

配置聚类图层

map_configuration_cluster_layers

对于聚类图层,主要配置选项如下:

  • 地理哈希属性: 正在映射的对象集中的地理哈希属性类型,包含指示集合中每个对象位置的地理哈希(纬度-经度对)。定义聚类时会考虑附近的地理哈希点。
  • 聚合: 允许配置聚合以计算应为每个聚类显示的值。例如,下面的截图显示了一个聚类图层的配置,该图层显示美国机场的总出发航班(这将类似于上面显示的地图)。有关配置的更多详细信息,请参阅下面的聚合值系列配置部分。

map_cluster_layer_aggregation

  • 大小配置: 允许定义聚类大小,可以是单一大小(统一聚类)或动态的(根据上面配置的聚合返回的值进行缩放)。
    • 单一大小: 聚类将具有统一大小。
      • 大小: 聚类的大小。每个聚类将具有统一大小。
      • 图例标签: 定义应用案例/系列的标签。
    • 按值自动缩放: 聚类大小将基于基础值。
      • 缩放类型: 用于计算值以调整聚类大小的数学缩放类型(例如线性、对数或平方根)。如果您的数据非常偏斜,则对数或平方根缩放可能比线性缩放更合适。
      • 最大下限: 自动计算缩放的最高允许下限。如果有低于此下限的数据值,则缩放将扩展以包括这些值。
      • 最小上限: 自动计算缩放的最低允许上限。如果有高于此上限的数据值,则缩放将扩展以包括这些值。
  • 颜色配置: 允许定义聚类的颜色。聚类可以统一着色或根据值着色。有关配置的更多详细信息,请参阅下面的颜色配置部分。
  • 不透明度配置: 允许为聚类定义单一的、统一的不透明度。
  • 图例标签: 定义应用案例/系列的标签,显示在图例中。
  • 值格式器: 允许以不同格式表示值。例如,要将值表示为百分比,请设置%为值格式器。指定的值应为d3-format字符串 ↗

配置等值线图层

map_configure_choropleth_layers

对于等值线图层,主要配置选项如下:

  • 图例头: 这是图层图例部分的系列级图例头上方的头。图层内的每个系列都有提供图例头的选项。
  • 等值线图层配置: 等值线和线图层可以是聚合的非聚合的。所有等值线图层通常显示某种区域,如国家或省份;聚合类型之间的区别在于输入对象集中的每个对象是否对应于给定区域(非聚合),或给定区域中是否可能包含一个或多个对象(聚合)。
    • 聚合: 显示根据所代表区域的对象进行聚合而着色的区域(例如国家或省份)。例如,显示基于输入费用集的每个国家的成本与体积比的地图。
      • 区域ID属性类型: 允许选择一个区域ID属性。这是用于在每个区域中计算数据值的聚合执行的属性。重要的是,该区域ID属性的值必须与下面选择的边界来源的区域ID完全匹配。
      • 等值线边界来源: 允许选择图层的边界来源。下面等值线边界来源是支持的三种来源的详细信息:MapboxGeoJSON矢量
      • 聚合值配置: 允许定义聚合系列列表,其中每个系列中绘制的对象根据其区域ID进行聚合。区域的颜色可配置以表示给定区域的对象数量或其他聚合函数,例如区域内对象属性的总和或平均值。有关配置的更多详细信息,请参阅下面的聚合值系列配置颜色配置部分。
    • 非聚合: 显示根据所代表区域对象的属性值着色的区域。例如,一张显示美国各州人口密度的地图,其中每个州根据其人口密度着色,人口密度是州对象类型上的属性类型。
      • 区域ID属性类型: 允许选择一个区域ID属性。该属性值用于唯一标识每个区域,并且是如果您选择"区域"时进行筛选的属性。重要的是,该区域ID属性的值必须与下面选择的边界来源的区域ID完全匹配。
      • 等值线边界来源: 允许选择图层的边界来源。下面等值线边界来源是支持的三种来源的详细信息:MapboxGeoJSON矢量
      • 非聚合值配置: 允许定义非聚合系列列表,其中每个系列中区域的颜色可配置以表示绘制对象的属性值。有关配置的更多详细信息,请参阅下面的非聚合值系列配置颜色配置部分。
      • 搜索结果页数: 确定将加载的对象数量,每页为1000个对象。每个非聚合图层最多可以加载10,000个对象(10页)。
      • 在对象预览中显示的属性: 悬停/点击每个点时显示的工具提示可以显示任何一组已配置的属性(例如重要特定)。

等值线边界来源: 要配置等值线图层,必须指定将定义显示区域的边界的来源。边界数据有几种可能的来源:

  • Mapbox来源: 这是配置等值线最简单的方法,假设您希望显示世界各地的通用区域(例如国家、州、县等)。此选项利用Mapbox企业边界集 ↗的使用。了解如何在您的Foundry实例上安装Mapbox边界数据集
    • Mapbox企业边界版本: 当前支持两个Mapbox版本(V3和V4)。我们建议使用V4以获得最新的边界。
      • Mapbox来源配置ID: 允许选择边界类型和数据级别 ↗。Mapbox边界数据根据边界的功能分为五大类:行政立法地方性邮政统计。在每种边界类型内,特征按不同编号的级别组织成一个层次结构。通常,较大编号的级别将嵌套在较小编号的级别下。例如,在美国,县(行政级别2)是州(行政级别1)的子部分,而州是国家(行政级别0)的子部分。
        • 图层的区域ID属性类型必须与您选择的任何边界级别所需的Mapbox特征ID匹配。可以通过平台上应已经存在的导入数据集获取这些特征ID值的映射。如果您不知道如何找到这些映射,请联系您的Palantir代表。
      • 世界观: 当存在多个版本的边界时,此功能 ↗为不同受众渲染地图边界;当前可用的选项有美国、日本、印度和中国。
  • GeoJSON来源: 如果您有通过GeoJSON定义的简单、自定义区域,或者由于网络限制无法从您的环境访问Mapbox API,此选项很有用。此选项利用GeoJSON ↗格式的数据。
    • 聚合GeoJSON: 允许以单个GeoJSON文件(上传到项目)的形式定义边界集。如果形状的数量或复杂性通常较低,您要绘制的对象的规模较大,并且每个区域可能表示一个或多个对象(因此对象正在聚合),则此选项是理想的。
      • GeoJSON来源RID: 上传的GeoJSON文件的资源RID。
      • 区域ID特征属性: GeoJSON内部包含每个区域ID的属性ID。GeoJSON中的这些值将与对象上的区域ID属性(上面定义的)匹配。
      • 区域显示名称特征属性: GeoJSON内部包含每个区域显示名称的属性ID。
    • 非聚合GeoJSON: 允许选择输入对象的地理形状属性,其中包含地图上每个区域/对象的GeoJSON。此选项适合形状的规模或复杂性较高,但对象规模仍然可管理的情况。每个对象只能对应一个形状,每个形状只能对应一个对象。
      • GeoJSON几何属性类型: 定义GeoJSON几何的属性类型(支持geoshape字符串类型的属性)。
  • 矢量来源: 如果您有高度详细或非常高规模的自定义边界定义,矢量来源提供的性能优势使其成为最有用的选项。此选项要求矢量来源通过瓦片服务器托管(可以是内部或外部)。
    • 来源URL: 托管在某个瓦片服务器上的瓦片集的完整URL。
    • 图层名称: 给定配置的瓦片来源中矢量图层的ID。
    • 区域ID特征属性: 矢量特征内包含每个区域ID的属性ID。矢量特征中的这些值将与对象上的区域ID属性(上面定义的)匹配。
    • 区域显示名称特征属性: 矢量特征内包含每个区域显示名称的属性ID。这仅支持聚合矢量来源。
    • 最小缩放: 如果地图缩放级别低于最小缩放,则不会查询瓦片来源(图层将不显示)。
    • 最大缩放: 如果地图缩放级别高于最大缩放,则不会查询瓦片来源(图层将不显示)。

为H3配置等值线图层

要为H3配置等值线图层以支持在地图微件上显示的自定义聚合,您需要在Ontology Manager中配置一个对象类型,例如" H3 Hexagon",其中每个对象是所需分辨率的H3六边形,具有唯一标识每个六边形及其关联的GeoJSON形状的属性。下面提供了对象类型属性的示例:

  1. hex_index:每个H3六边形的唯一标识符。示例值:82f25ffffffffff
  2. hex_geojson:H3六边形的GeoJSON几何。示例值:{"type":"Polygon","coordinates":[[[-114.88722592804382,-74.86647343694071],[-110.43933775312789,-76.04791578897344],[-103.98485051466383,-75.45226049628374],[-103.08914246618076,-73.75952697882984],[-107.50751324842204,-72.74554847287561],[-112.95182804024837,-73.26746640072781],[-114.88722592804382,-74.86647343694071]]]}

然后可以按如下方式应用地图微件的配置选项:

  • 映射对象集:提供配置了H3六边形的对象类型(在我们的示例中为" H3 Hexagon")
  • 图层配置:选择"等值线"
    • 等值线图层配置:选择"非聚合"
      • 区域ID属性类型:选择每个H3六边形的唯一标识符(在我们的示例中为hex_index
      • 等值线边界来源和数据配置:选择"Geojson"
        • GeoJSON几何属性类型:选择包含GeoJSON几何的属性,在我们的示例中为hex_geojson

然后,您可以使用非聚合值配置选项配置基于函数的属性,以按H3六边形聚合对象集输入并在地图微件中显示值。例如,下面的函数将计算输入对象集内每个H3六边形的派生COVID检测阳性率:

Copied!
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 import { Function, Double, FunctionsMap} from "@foundry/functions-api"; import { Objects, ObjectSet, CovidPositive, CovidTest, H3Hexagon} from "@foundry/ontology-api"; // 定义一个类 MyFunctions export class MyFunctions { // 使用装饰器 @Function() 声明一个函数 calculateCovidPositivityRate @Function() public async calculateCovidPositivityRate(hexes: ObjectSet<H3Hexagon>, positives: ObjectSet<CovidPositive>, tests: ObjectSet<CovidTest>): Promise<FunctionsMap<H3Hexagon, Double>> { const map = new FunctionsMap<H3Hexagon, Double>(); // 设置最大桶数为6000,以便允许对所有 H3 六边形和分辨率2进行聚合 const max_buckets = {maxBuckets: 6000} // 将阳性病例根据 H3 六边形索引分组并计数 const positives_bucketed = await positives .groupBy(positive => positive.hex_index.exactValues(max_buckets)) .count(); // 将分组结果转换为 Map,以提高查找效率 const positives_hex_map = new Map(); positives_bucketed.buckets.forEach((bucket: any) => { positives_hex_map.set(bucket.key, bucket.value); }); // 将检测结果根据 H3 六边形索引分组并计数 const tests_bucketed = await tests .groupBy(test => test.hex_index.exactValues(max_buckets)) .count(); const tests_hex_map = new Map(); tests_bucketed.buckets.forEach(bucket => { tests_hex_map.set(bucket.key, bucket.value); }); // 遍历所有 H3 六边形,计算阳性率,并将结果存入 map hexes.all().forEach(hex => { const positive_count = positives_hex_map.get(hex.hex_index); const test_count = tests_hex_map.get(hex.hex_index); if ((positive_count !== undefined) && (test_count !== undefined)) { map.set(hex, positive_count/test_count * 100); } }); return map; } }

注意,如果您使用H3六边形分辨率2,并希望绘制所有5,882个六边形,您需要将搜索结果页数增加到6。

配置线段图层

对于线条图层,主要的配置选项如下:

  • 图例标题: 此图层的图例部分中位于系列级别图例标题上方的标题。图层内的每个系列都有提供图例标题的选项。
  • 线条图层配置: 线条图层,如等值线图,可以是聚合的非聚合的。线条图层显示某种线段;聚合和非聚合图层的区别在于输入对象集中每个对象是否对应一条特定的线(非聚合),或一个或多个对象是否对应一条特定的线(聚合)。
    • 聚合: 显示基于该线所代表对象的聚合进行着色的线条。例如,显示沿特定航线的所有航班的平均延误时间的地图。
      • 段ID属性类型: 允许选择一个线段ID属性。此属性是进行聚合以计算每条显示线的数据值的属性。此段ID属性的值必须与下方选择的线图层源的特征ID完全匹配。
      • 线条图层源: 允许选择图层的线源。线条图层源下是支持的两种聚合线图层源的详细信息:GeoJSONVector
      • 聚合系列配置: 允许定义一个聚合系列列表,其中每个系列中绘制的对象是根据其段ID聚合的。线条的颜色可配置以代表给定线的对象数量或其他聚合函数(例如该线内对象的属性的总和或平均值)。有关更多配置细节,请参见下方的聚合值系列配置颜色配置部分。
    • 非聚合: 显示基于该线所代表对象的属性值进行着色的线条。例如,显示电力线并按其当前运行状态着色的地图。
      • 段ID属性类型: 允许选择一个段ID属性。此属性值唯一标识每条线,并且在选择“线条”时是被筛选的属性。此段ID属性的值必须与下方选择的线图层源的特征ID完全匹配。
      • 线条图层源: 允许选择图层的线源。线条图层源下是支持的三种源的详细信息:点对点GeoJSONVector
      • 非聚合系列配置: 允许定义一个非聚合系列列表,其中每个系列中线条的颜色是可配置的,以代表绘制对象的属性值。有关更多配置细节,请参见下方的非聚合值系列配置颜色配置部分。
      • 搜索结果页数: 这决定了将加载的对象数量,每页为1000个对象。每个非聚合图层最多可以加载10,000个对象(10页)。
      • 在对象预览中显示的属性: 在悬停/点击时显示的工具提示可以显示任何一组配置的属性(例如重要特定)。

线条图层源: 以下是加载源信息以指定如何在线条图层上绘制线条的不同方法:

  • 点对点: 对于输入对象集中的每个对象,在提供的起始和结束地理哈希点之间绘制一条直线。请注意,此选项仅适用于非聚合线条图层。
  • GeoJSON源: 如果您有通过GeoJSON定义的简单自定义线条,或者由于网络限制无法从您的环境访问Mapbox API,此选项非常有用。此选项利用GeoJSON(https://geojson.org/)格式的数据。
    • 聚合GeoJSON: 允许以单个GeoJSON文件(上传到Foundry)的形式定义线条定义。如果线条数量/复杂度的规模通常较低,您想要绘制的对象规模较高,并且每条线可能代表一个或多个对象(因此对象被聚合),此选项非常理想。
      • GeoJSON源RID: 上传的GeoJSON文件的资源RID。
      • 区域ID特征属性: GeoJSON内部包含每个线特征ID的属性ID。GeoJSON中的这些值将与对象上的段ID属性(上面定义)匹配。
      • 区域显示名称特征属性: GeoJSON内部包含每个线段显示名称的属性ID。
    • 非聚合GeoJSON: 允许选择输入对象的地形形状属性,其中包含地图上每条线的GeoJSON。如果线条的规模或复杂度较高,但对象规模仍然可控,此选项非常理想。每个对象只能对应一条线,类似地,每条线只能对应一个对象。
      • GeoJSON几何属性类型: 定义GeoJSON几何的属性类型(支持类型为地形形状字符串的属性)。
  • Vector源: 如果您有自定义的高细节或超大规模的线条定义,由于矢量源提供的性能优势,相较于基础GeoJSON,此选项最有用。此选项要求通过瓦片服务器(可以是内部或外部)托管矢量源。
    • 源URL: 瓦片集的完整URL,托管在某个瓦片服务器上。
    • 图层名称: 在给定配置瓦片源中的矢量图层ID。
    • 区域ID特征属性: 每个矢量特征内部包含每条线ID的属性ID。这些矢量特征中的值将与对象上的段ID属性(上面定义)匹配。
    • 区域显示名称特征属性: 每个矢量特征中包含的每条线的显示名称的属性ID。此选项仅支持聚合矢量源。
    • 最小缩放: 如果地图缩放级别低于最小缩放,瓦片源将不会被查询(图层也不会显示)。
    • 最大缩放: 如果地图缩放级别高于最大缩放,瓦片源将不会被查询(图层也不会显示)。

配置静态图层

对于静态图层,主要的配置选项如下:

  • 图层源: 静态图层可以从GeoJSON或矢量瓦片集获取。
    • GeoJSON源: 此选项用于GeoJSON ↗格式的数据。允许以单个GeoJSON文件(上传到Foundry)的形式定义边界集。
      • Compass RID: 上传的GeoJSON文件的资源RID。
    • 矢量源: 如果您有高细节或超大规模的特征,由于矢量源提供的性能优势,相较于基础GeoJSON,此选项最有用。此选项要求通过瓦片服务器(可以是内部或外部)托管矢量源。可以从单个矢量瓦片源加载多个图层。
      • 源URL: 瓦片集的完整URL,托管在某个瓦片服务器上。
      • 图层名称: 在给定配置瓦片源中的矢量图层ID。
  • 区域ID配置: 允许配置一个ID以唯一标识GeoJSON或矢量源中的每个特征。区域ID可以是特征的固有ID(即给定特征的顶级ID字段),也可以从每个特征的给定属性/属性中提取区域ID。配置区域ID是悬停和选择交互所必需的;如果未配置区域ID,图层将不具有交互性。
  • 区域标签特征属性ID: 这是每个特征内包含该特征标签的属性/属性ID,悬停时在工具提示中显示。
  • 样式: 定义静态特征的样式。如果静态特征是多边形,颜色配置会影响多边形的填充。如果静态特征是线条,颜色配置会影响线条颜色。有关更多信息,请参见下方的颜色配置部分。
  • 对象配置: 这使您能够在悬停时为静态图层显示基于对象的工具提示,并为地图选择发布对象集筛选。
    • 区域ID属性: 这是用于将地图上的特征连接到Ontology中的对象的对象和属性类型。如果地图上的给定特征/区域的区域ID与此配置属性类型的值匹配,该特征将连接到Ontology中的对象。
    • 在对象预览中显示的属性: 在悬停/点击时显示的工具提示可以显示任何一组配置的属性(例如重要特定)。
  • 选择、可见性和事件配置: 有关更多信息,请参见下方的配置选择、可见性和事件部分。

配置聚合值系列

聚合值系列可以通过三种方式配置:简单聚合、函数聚合和派生聚合。

  • 简单聚合: 简单聚合以代表对象数量或另一种聚合函数(例如该属性在对象中的总和或平均值)。
  • 函数聚合: 聚合函数应返回一个**<locationId, value>**的映射。对于聚类图层,位置ID将是一个地理点或地理哈希,对于等值线图,它将是每个区域的区域ID。例如,下面的函数根据一组输入费用计算每个国家的成本与体积比率:
Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 @Function() public costToVolume(expenses: ObjectSet<Expense>): FunctionsMap<string, Double> { const map = new FunctionsMap<string, Double>(); // 根据国家分组计算每个国家的总成本 const costsPerCountry = expenses .groupBy(expense => expense.countryId.topValues()) .sum(expense => expense.cost); // 根据国家分组计算每个国家的总交易量 const volumePerCountry = expenses .groupBy(expense => expense.countryId.topValues()) .sum(expense => expense.volume); // 遍历成本数据,并计算每个国家的成本与交易量的比率 costsPerCountry.buckets.forEach(bucket => { // 查找对应国家的交易量 var volume = volumePerCountry.buckets.find(b => b.key === bucket.key); // 将国家与其成本/交易量比率存入map中 map.set(bucket.key, bucket.value / volume); }); return map; }

该代码定义了一个名为 costToVolume 的函数,该函数接受一个 expenses 集合,返回一个映射,每个国家的键对应其成本与交易量的比率。代码首先按照国家对支出进行分组,然后分别求出每个国家的总成本和总交易量,最后计算出每个国家的成本与交易量的比率并存入结果映射中。

  • 派生聚合: 由派生公式表示的聚合。公式应为基本数值公式。例如,一个国家30岁以下人口的百分比可以用公式 (people under 30/ total population) 表示。

配置非聚合值系列

非聚合值系列可以通过三种方式配置:静态属性、函数支持的属性和时间序列属性。

  • 静态属性: 需要其值来表示数据的属性。下面是一个截图,展示了一个地图的静态属性配置,其中美国各州按面积着色。

map_non_aggregate_value

  • 函数支持的属性: 非聚合函数应返回一个 <object, value> 的映射。例如,下面的函数将计算输入对象集中的每个国家的派生COVID检测阳性率:
Copied!
1 2 3 4 5 6 7 8 9 10 11 12 @Function() public countryPositivityRate(countries: ObjectSet<Country>): FunctionsMap<Country, Double> { const positivityRatePerCountry = new FunctionsMap<Country, Double>(); countries.all().forEach(country => { // 计算每个国家的阳性率 var positivityRate = country.dailyNewCases / country.dailyNewPositiveTests; // 将计算的阳性率存入positivityRatePerCountry映射中 positivityRatePerCountry.set(country, positivityRate); }); // 返回每个国家的阳性率映射 return positivityRatePerCountry; }
  • 时间序列属性: 时间序列属性,包括由时间序列变换生成的数据,可以像常规属性一样在地图上查看。时间序列属性是存储带有时间戳值历史记录的对象属性。有关更多信息,请参见 Workshop 中的时间序列属性

在下面的示例中,Country 对象有一个时间序列属性 COVID19 New Cases,它存储了该国每天观察到的新冠肺炎新病例的历史记录。然后,一个时间序列变换将这个每日病例计数转换为一个记录病例变化率的时间序列。最后,一个时间序列汇总器将变换后的时间序列中的最新值提供给地图数据层;也就是说,它计算出已知的最后一个病例变化率。颜色配置面板对地图进行样式设置,以突出国家之间的这一数值对比。有关时间序列变换和汇总器的更多信息,请参见 Workshop 中的时间序列属性,有关颜色方案配置的更多信息,请参见下面的颜色配置部分。

map_time_dependent_property

配置颜色控件

下面的截图显示了颜色配置的配置选项。

map_color_config

颜色配置的配置选项如下:

  • 颜色配置: 颜色可以通过三种方式设置:

    • 单一颜色: 允许选择单一颜色。
      • 颜色: 在地图上显示的颜色。
      • 图例: 描述应用案例/系列的图例标签。
    • 按值自动缩放: 根据值显示颜色变化。
      • 颜色比例: 不同的颜色模式选项。
      • 比例类型: 用于计算值到颜色桶的数学比例类型(例如线性、对数或平方根)。如果数据非常偏斜,对数或平方根缩放可能比线性缩放更适合。
      • 最大下限: 自动计算比例的最高允许下限。如果有比此下限更低的数据值,比例将扩展以包括这些值。
      • 最小上限: 自动计算比例的最低允许上限。如果有比此上限更高的数据值,比例将扩展以包括这些值。
      • 图例方向: 允许配置图例方向。可能的方向有水平和垂直。
    • 按属性值着色: 根据值设置颜色。颜色可以根据值的精确匹配或值的范围进行配置。
      • 精确值匹配: 当地图上的值与配置的值完全匹配时显示颜色。
        • 精确匹配的值: 当与地图上的值完全匹配时显示配置的颜色。
        • 颜色: 当地图上的值完全匹配上述配置的值时显示的颜色。
        • 图例标签: 当地图上的值完全匹配上述配置的值时显示的图例标签。
        • 备用颜色: 当地图上的值不匹配任何配置值时显示的颜色。
        • 备用图例: 当地图上的值不匹配任何配置值时显示的图例标签。
      • 范围值匹配: 当地图上的值落入配置的值范围内时显示颜色。
        • 最小值: 范围的下限(包括)。
        • 最大值: 范围的上限(包括)。
        • 颜色: 当地图上的值落入配置的值范围内时显示的颜色。
        • 图例标签: 当地图上的值落入上述配置的范围内时显示的图例标签。
        • 备用颜色: 当地图上的值不在配置的值范围内时显示的颜色。
        • 备用图例: 当地图上的值不在配置的值范围内时显示的图例标签。
  • 线边框样式: 线图层或其他图层类型边框样式的配置。

    • 线/边框宽度: 线图层上显示的线条宽度或其他图层类型的边框宽度。
    • 线/边框描边类型: 线图层上显示的线条描边或其他图层类型的边框宽度。
    • 显示线/边框方向: 显示定义线条方向的箭头。下面是显示方向的线图的截图。

    map_line_border_direction

  • 值格式器: 允许以不同格式表示值。例如,要将值表示为百分比,请配置 % 作为值格式器。指定的值应该是一个 d3-format 字符串 ↗

配置选择、可见性和事件

map_selection_visibility_events

以下是选择、可见性和事件配置的主要配置选项:

  • 图层 Z 索引: 控制重叠图层的显示顺序。工具提示内容和选择交互将优先显示具有更高 z 索引的图层。
  • 启用单选模式: 切换为 True 将禁用一次选择多个对象的功能。每次选择将删除上一次选择。
  • 初始隐藏: 切换为 True 允许在第一次加载地图时隐藏图层。如果图层是组的一部分,则考虑为第一个图层配置的设置。
  • 图层组名称: 允许将图层分组并在图例中的下拉列表中一起显示。
  • 对象集选择筛选器: 在地图上进行选择时发布的筛选器。
  • 选择时的事件: 允许配置Workshop 事件(例如导致抽屉式导航展开)以在地图上进行选择时触发。
  • 可见性条件: 允许基于 Workshop 变量的状态/值有条件地控制此图层的可见性。默认情况下,如果未配置条件,则始终显示图层。

配置绘图控件

下面的截图显示了一个配置好的地图微件,显示了不同形状及其配置面板:

map_drawing_controls

对于绘图控件,核心配置选项如下:

  • 半径/圆形控件: 设置控件为可见时,允许在地图上绘制一个带有半径显示的圆形。要绘制一个圆形,从左上角选择圆形按钮,在地图上的任何地方单击一次以设置圆心,松开鼠标点击,然后将鼠标从圆心移开。
    • 控件按钮选项:
      • 工具提示标签: 当光标悬停在左上角的圆形按钮上时提供标签。
      • 是否禁用: 设置为 true 时禁用圆形按钮。
    • 形状样式选项:
      • 填充颜色: 设置绘制形状的颜色。默认颜色是 #F29D49,这是浅橙色的十六进制代码。
      • 填充不透明度: 设置绘制形状的不透明度,从 01,最大不透明度为 1
      • 边框颜色: 设置绘制形状的边框颜色。默认颜色是 #F29D49,这是浅橙色的十六进制代码。
      • 边框不透明度: 设置绘制形状的边框不透明度。
      • 距离单位: 显示绘制的圆形半径的单位。可用的选项有公里、米、英里、码和英尺。
  • 多边形控件: 设置控件为可见时,允许在地图上绘制一个多边形形状。要绘制一个多边形,首先从左上角选择多边形按钮,然后点击地图。每次点击标记多边形的一个点,并在两个连续点之间绘制边缘。
    • 控件按钮选项:
      • 工具提示标签: 当光标悬停在左上角的多边形按钮上时提供标签。
      • 是否禁用: 设置为 true 时禁用多边形按钮。
    • 形状样式选项:
      • 填充颜色: 设置绘制形状的颜色。默认颜色是 #F29D49,这是浅橙色的十六进制代码。
      • 填充不透明度: 设置绘制形状的不透明度,从 01,最大不透明度为 1
      • 边框颜色: 设置绘制形状的边框颜色。默认颜色是 #F29D49,这是浅橙色的十六进制代码。
      • 边框不透明度: 设置绘制形状的边框不透明度。
      • 距离单位: 公里、米、英里、码和英尺是各种可用选项。
  • 删除控件: 设置控件为可见时,允许您删除地图上绘制的形状。要删除绘制的形状,首先从左上角选择删除按钮,然后点击绘制的形状。
    • 控件按钮选项:
      • 工具提示标签: 当光标悬停在左上角的删除按钮上时提供标签。
      • 是否禁用: 设置为 true 时禁用删除按钮。
  • 单次绘制模式: 如果启用,一次只能在地图上绘制一个形状,绘制新形状将删除旧形状。
  • 发布的筛选器: 输出一个对象集筛选变量,允许根据绘制形状的边界筛选正在映射的对象集。
  • 发布的绘制几何图形: 此选项允许将绘制形状的几何图形发布到字符串变量中。这使您能够将绘制的形状几何图形写入新属性。
  • 绘制时的事件: 此选项控制在地图上绘制形状时触发一个或多个 Workshop 事件。

配置时间步进器控件

地图微件有一个内置的时间步进器,允许用户“步进”前进和/或后退,以查看地图上数据随时间的变化。

时间步进器通过将对象集筛选器(对应于用户选择的时间窗口)发布到配置的对象集筛选变量来工作。此筛选变量可以用于筛选支持地图上一个或多个图层的对象集,以仅返回与该时间窗口相关的对象。

为了利用时间步进器,我们建议使用包含某些单位时间内某些测量值的对象的时间对象。每个对象应具有可以筛选的日期或时间戳属性,这样筛选给定时间窗口的对象将允许您加载单个对象(或聚合该窗口中的对象),以获取要在地图上显示的数据。

下面的截图显示了配置好的时间步进器的示例地图:

map_time_stepper_controls

下面的截图显示了时间步进器控件的配置选项:

map_time_stepper

时间步进器的核心配置选项如下:

  • 时间步进器类型: 此选项允许基于日期或时间戳设置时间步进器。
  • 默认窗口起始日期(时间戳): 地图微件首次加载时的默认日期(时间戳)。
  • 最小窗口起始日期(时间戳): 用户可以选择的日期(时间戳)范围的下限。
  • 最大窗口起始日期(时间戳): 用户可以选择的日期(时间戳)范围的上限。
  • 显示关于预测的警告: 在时间步进器显示未来信息按钮时的可配置文本。
  • 显示关于历史数据的警告: 在时间步进器显示过去信息按钮时的可配置文本。
  • 信息图标工具提示文本: 帮助传达信息给用户的工具提示文本。
  • 发布的筛选器: 输出一个对象集筛选变量,允许根据时间步进器中选择的日期(时间戳)范围筛选对象集。
  • 小步进: 允许配置小步进的行为。这定义了点击小步进时时间的回退/前进量。
  • 大步进: 允许配置大步进的行为。这定义了点击大步进时时间的回退/前进量。
  • 窗口大小: 定义从起始日期起的日期(时间戳)范围。例如,对于基于日期的时间步进器,如果起始日期是 1st Jan 且窗口大小是 1 天,那么选择的日期范围将是从 1st Jan 到 2nd Jan。

配置视口筛选控件

下面的截图显示了一个视口筛选的示例配置。

map_viewport_filter

视口筛选输出一个对象集筛选变量;这允许根据微件中地图的可见边界筛选正在映射的对象集。例如,对于映射机场位置的地图,如果用户放大到美国,视口筛选将生成一个筛选变量,该变量允许筛选对象集以仅包含美国机场的对象。

对于使用视口筛选的等值线图层,映射的对象类型需要具有地理哈希属性;这可以是区域的中心点。