跳到正文
AWS Machine Learning Blog· Amit Makashir·· 1 天前AI 评分40

Amazon Quick Sight 层级地图新增 GeoJSON 点与路线可视化

Visualize points and routes with GeoJSON in Amazon Quick Sight layer maps

AI 导读

Amazon Quick Sight 层级地图在原有 GeoJSON 多边形绘制基础上,新增支持 Point 和 LineString 两种几何类型,可标注具体位置(如门店)和绘制位置间路线(如航班路径)。

正文 · AI 翻译

借助 Amazon Quick Sight 图层地图,您现在可以绘制点和路线,例如整个城市的商店位置或从机场出发的航班。地理空间地图帮助企业发现与位置相关的模式,例如某个地区的表现或客户集中的位置。Amazon Quick Sight 支持多种地图类型,包括点地图、填充地图和图层地图。当 图层地图首次推出时,您可以上传 GeoJSON 文件来绘制自定义形状图层,例如销售区域或辖区,并将这些形状与数据集联接。这能很好地处理区域和边界,但无法覆盖其中的单个位置或它们之间运行的路线。

图层地图现在通过相同的 GeoJSON 工作流支持另外两种几何类型:Point(点)和 LineString(线串)。点标记具体位置,例如单个商店或设施所在地。线串描绘位置之间的路线,例如配送路径或机场之间的航班。

Amazon Quick Sight 是 Amazon Quick 的商业智能(BI)功能,是一项统一的 BI 服务。它提供现代化交互式仪表板、自然语言查询、像素级精确报告、机器学习(ML)洞察以及大规模嵌入式分析。Amazon Quick 将用于商业洞察、研究和自动化的 AI 智能体整合到同一个集成体验中,帮助您在维护安全与访问策略的同时,更聪明、更高效地工作。

在这篇文章中,我们将介绍图层地图所需的数据集和 GeoJSON 结构。我们还会讲解点和线在图层地图视觉对象中的工作方式,以及何时选择每一种。最后,我们介绍一些高级技巧,包括控制视口、叠加几何图形以及以编程方式更新 GeoJSON 文件。

数据集结构注意事项

图层地图从 GeoJSON 文件获取形状,从 Quick Sight 数据集获取指标,并通过共享键将两者联接。这两者各自的结构决定了地图能够显示的内容。本节介绍您在开始之前需要准备什么,以及 GeoJSON 文件的组织方式。

先决条件

以下是在 Quick Sight 中创建图层地图前需要的先决条件:

  • 一个描述几何图形的 GeoJSON 文件。
  • 一个包含指标和维度的 Quick Sight 数据集。
  • Quick Sight 数据集与 GeoJSON 文件之间共享的联接键。
  • GeoJSON 文件必须以 .geojson 格式保存,支持的最大文件大小为 100 MB。

GeoJSON 文件的结构

GeoJSON 是一种基于 JSON 的格式,用于描述点、线等地理要素。

{
  "type": "FeatureCollection",
  "features": [{
    "type": "Feature",
    "geometry": {
      "type": "Point",
      "coordinates": [88.4, 22.6]
    },
    "properties": { "prop0": "value0" }
  }, {
    "type": "Feature",
    "geometry": {
      "type": "LineString",
      "coordinates": [
        [88.2, 22.4],
        [88.9, 23.1],
        [89.5, 22.8],
        [90.1, 23.6]
      ]
    },
    "properties": { "prop0": "value0" }
  }]
}

该文件的结构如下:

  • FeatureCollection 是整个文件。它的类型为 FeatureCollection,并包含一个 features 数组。
  • Feature 是单个地图元素。它包含一个 geometry(形状)和一个 properties 对象,后者保存联接键。
  • geometry 包含一个 type(Point、LineString 或 Polygon)及其 coordinates。coordinates 对于 Point 保存单个 [longitude, latitude] 位置,对于 LineString 保存有序的位置列表。

配置 Quick Sight 数据集及其 GeoJSON

在 Quick Sight 中,当您在图层地图视觉对象中配置图层时,有两个主要设置需要考虑。第一个是要可视化的几何类型,它设定渲染 GeoJSON 文件中的哪种几何形状:点、线或面。一个图层一次只渲染一种几何类型,因此当一个文件像前面的示例那样混合了多种类型时,地图上只会显示所选类型的 Feature。第二个是将形状文件键字段与数据集键字段相匹配,这会将 GeoJSON 中的每个 Feature 与 Quick Sight 数据集中的一行关联起来。字段名不必相同,但值必须相同。以下两个示例将端到端地展示这一点,第一个是LineString(线串)图层,第二个是Point(点)图层。

示例:LineString 图层

考虑显示从 JFK 飞往目的地城市(如洛杉矶)的航班的示例数据。单个数据点的 GeoJSON 结构配置如下:

{
  "type": "Feature",
  "geometry": {
    "type": "LineString",
    "coordinates": [
      [-73.7781, 40.6413],
      [-85.5627, 40.6407],
      [-97.1415, 39.4569],
      [-108.1612, 37.1753],
      [-118.4085, 33.9416]
    ]
  },
  "properties": { "route_id": "JFK-LAX" }
}

Quick Sight 数据集中对应的行包含以下信息:

Quick Sight dataset row for the JFK-LAX route with its route_id join key

图 1:JFK-LAX 航线的数据集行,以 route_id 为键

route_id 字段用于将 Quick Sight 数据集与 GeoJSON 文件进行关联。GeoJSON 中每条航线包含一个这样的 feature,数据集中每条航线包含一行。要可视化的几何类型设置为 Lines(线)。

Layer map rendering the JFK to Los Angeles flight path as a line

图 2:以 LineString 图层形式绘制的 JFK-LAX 航线

示例:Point 图层

考虑显示零售店位置(如长岛市)的示例数据。单个数据点的 GeoJSON 结构配置如下:

{
  "type": "Feature",
  "geometry": {
    "type": "Point",
    "coordinates": [-73.9490, 40.7447]
  },
  "properties": { "store_id": "S-109" }
}

Quick Sight 数据集中对应的行包含以下信息:

Quick Sight dataset row for a store with its store_id join key

图 3:商店的数据集行,以 store_id 为键

store_id 字段用于将 Quick Sight 数据集与 GeoJSON 文件进行关联。GeoJSON 中每家商店包含一个这样的 feature,数据集中每家商店包含一行。要可视化的几何类型设置为 Points(点)。

Layer map rendering a retail store location as a point

图 4:以 Point 图层形式标绘的商店

图层地图视觉对象中的线

图层地图视觉对象现在支持 LineString 几何形状,可以将有序的坐标列表连接成单一路径。如数据结构部分所述,每条航线是一个 feature,其坐标就是地图按顺序连接的有序位置。

当您想要展示位置之间的关系时可以使用线,例如飞行路径、配送路线、航运航道或管道段。该视觉对象会从 GeoJSON 文件中的坐标绘制每条路径,而不是在加载时根据您的数据生成。关联数据集中的某个字段可以决定线条的颜色编码,因此您可以按该字段所代表的任何内容对路线进行分组。除了颜色之外,您还可以使用宽度和不透明度控件自定义线条,以调整其在地图上的视觉突出程度和清晰度。GeoJSON properties 对象中的连接键将每个 LineString 与其提示框和颜色背后的数据集行关联起来。

例如,机场运营团队可能想绘制某一天从纽约(JFK)起飞的航班。GeoJSON 文件中每条航线包含一个 LineString,以与数据集连接的航线 ID 为键。每条线从 JFK 出发,止于其目的地,例如洛杉矶、芝加哥或迈阿密。数据集提供了显示在提示框中的出发地、目的地和航空公司信息。

Layer map showing multiple flight paths radiating from JFK to destination cities

图 5:以 LineString 路线形式绘制的从 JFK 飞往多个目的地的航班

图层地图视觉对象中的点

Amazon Quick Sight 提供了一种原生的点地图视觉对象类型,可自动对位置名称进行地理编码,并随您的 SPICE 计划或 Direct Query 连接刷新。它支持动态点大小、颜色编码,以及诸如聚合点和热力图密度渐变等点样式。它最适合数据频繁变化、并且您希望地图在视觉上响应这些变化的场景。

随着图层地图视觉对象对 GeoJSON 点图层的额外支持,Quick Sight 现在提供了第二种点地图绘制能力,但有几个关键区别。图层地图视觉对象的点使用统一的标记大小,且不支持地理编码,因此您需要在 GeoJSON 文件中提供明确的坐标。作为回报,您可以精确控制视口,将地图锁定到确切的地理区域,并禁用平移和缩放。

下表总结了主要区别:

功能 点地图 图层地图视觉对象点
数据源 数据集中的经纬度值或地理位置名称 通过共享键与数据集联接的 GeoJSON Point 要素
地理编码 自动识别城市、县、州、国家和邮政编码 不可用。必须在 GeoJSON 文件中提供明确的坐标
位置更新 随着位置值的变化,地图随 SPICE 刷新或 Direct Query 自动更新 视觉对象使用静态 GeoJSON 文件存储点位置。需要手动重新上传或调用 API 来更新几何图形
视口 自动适配您的数据,平移和缩放始终启用 默认自动适配,可配置是否允许平移和缩放
外观 大小和颜色可由数据集编码。提供点样式配置(基本、聚合、热力图) 可自定义统一标记大小、填充不透明度、边框颜色和粗细。颜色可由数据集编码

在以下情况下选择图层地图视觉对象点:

  • 您需要一个锁定、不可滚动的视口。
  • 您的位置是固定且精心策划的(例如区域办事处、配送中心、零售门店),而不是随每次数据刷新而变化。
  • 您计划将点与其他几何类型组合(将在高级用例部分介绍)。

设想一个零售品牌,其区域经理使用 Quick Sight 仪表板来跟踪都市区内的门店表现。GeoJSON 文件包含每家门店的 Point 要素,其中带有一个与数据集联接的门店 ID 属性。数据集保存驱动工具提示和颜色编码的指标(门店类型、月度营收、每日客流量)。您将地图定位到覆盖都市区的缩放级别,然后禁用地图导航,使地图在每次加载时都以一致的视图呈现。经理们不会意外缩放到全国或全球视图。

Layer map of retail store points across a metro area with a locked viewport

图 6:禁用地图导航以锁定都市区视图后的门店位置点

高级用例

前面的章节介绍了标准的图层地图设置。当您需要更多控制读者所见内容、想在单一视图中组合几何类型,或者需要随时间变化的几何图形时,请使用以下技巧。

控制视口

当您需要在图层地图视觉对象中控制视口时,可以手动平移和缩放到所需的视图,然后禁用地图导航将其锁定在原位。对于需要更精确边界或编程式控制的用例,您可以通过 Quick Sight API 在视觉对象定义中设置精确的视口坐标。

图层地图视觉对象将其视口配置存储在 ChartConfiguration 内的 MapState 属性中。该属性接受两个字段:

  • Bounds:定义最小可见区域的地理坐标(北、南、东、西)。
  • MapNavigation:ENABLED 或 DISABLED,用于控制读者是否可以平移和缩放。

虽然 bounds 属性未在控制台中公开,但在以编程方式管理资产、处理仪表板定义 JSON 时,您可以设置这些边界。例如,要定义边界,可修改视觉对象定义中的 MapState 块,然后调用 CreateDashboard 或 UpdateDashboard API。

bounds 定义了保证可见的最小区域。地图会进行缩放,以确保整个区域都适合显示在视觉对象容器内。为了获得最紧凑的适配、使地图上增加的额外空间最少,请使边界的纵横比与视觉对象容器的形状相匹配。

叠加几何图形

对于需要将多种几何类型合并到单一视图中的用例,您可以将视觉对象相互叠加。例如,下面的屏幕截图演示了将客户位置作为点绘制在由多边形定义的美国区域边界内。这种组合展示了哪些区域的客户密度最高,并可用于与数据集中的其他指标(如业绩)进行关联。

Layer map combining customer location points with US regional polygon boundaries

图 7:叠加在多边形区域边界内的客户点

第二个示例演示了将点组合为配送路线路径上的停靠点。LineString 绘制计划路线,Point 要素标记沿途的每个计划停靠点。

Layer map combining a delivery route line with point markers for each stop

图 8:绘制为 LineString 的配送路线,每个停靠点都有 Point 标记

要叠加几何图形,您可以将多个图层地图视觉对象相互堆叠,步骤如下:

  1. 使用自由布局:将工作表布局设置更改为自由布局,使视觉对象可以重叠和堆叠。
  2. 创建两个图层地图视觉对象:创建要合并到单一视图中的两个图层地图视觉对象,例如一个使用 Point GeoJSON 文件,另一个使用 LineString GeoJSON 文件。
  3. 使用匹配的边界:按照前面所述控制视口的方法,验证所有图层地图视觉对象使用相同的边界,以获得相同的底层地图视图。
  4. 禁用平移和缩放:对每个图层地图视觉对象,在地图选项下禁用平移和缩放,以保持对齐不变。
  5. 隐藏上层视觉对象的底图和背景:在显示设置下将上层视觉对象的背景设置为隐藏,并在地图选项下禁用底图。
  6. 堆叠视觉对象:使用拖放或在显示设置下匹配精确的大小和位置坐标,将顶部视觉对象移至基础图层之上。

图层顺序遵循自由布局中视觉对象的视觉堆叠顺序。要更改视觉对象在堆叠中的位置,请选择该视觉对象上的菜单图标(三个点),然后选择后移一层或前移一层。读者只能访问最上层视觉对象的工具提示,因此请将读者需要查看详情的图层置于最上层。每个工作表最多支持五个图层地图视觉对象。

动态更新 GeoJSON

与其他通过 SPICE 或 Direct Query 刷新数据的 Quick Sight 视觉对象不同,图层地图的几何图形存储在 GeoJSON 文件本身中。当您的数据集按计划刷新时,指标会更新(例如颜色变化、工具提示值刷新),但几何图形仍保持其原始位置。

要更新地图上显示的内容(例如新路线、新的点位位置或更新的边界),您需要更新 GeoJSON 文件并重新发布仪表板。您可以在分析中编辑图层地图视觉对象并上传新文件,通过 Quick Sight 控制台手动替换 GeoJSON 文件。这适用于不频繁的更改,例如每季度更新区域边界或添加新的门店位置。

如需自动化、按需或动态更新,流程涉及 Amazon Simple Storage Service (Amazon S3) 和 Quick Sight API,步骤如下:

  1. 将新的 GeoJSON 上传到 Amazon S3:生成更新后的几何图形并保存到 Amazon S3 存储桶。自定义方案可以使用其他 AWS 服务(例如 Amazon Location Service)来创建 GeoJSON 文件。
  2. 在仪表板定义中引用该文件:仪表板定义包含一个 StaticFiles 数组,每个 GeoJSON 文件对应一个 SpatialStaticFile 条目。将每个 GeoJSON 文件的文件引用修改为更新后文件条目的 S3 位置。
  3. 调用 UpdateDashboard API:使用 UpdateDashboard API 提交包含新文件引用的更新后定义。
  4. 调用 UpdateDashboardPublishedVersion API:使用 UpdateDashboardPublishedVersion API 发布更改,使其对仪表板读者可见。

以下示例使用此模式在嵌入式仪表板中支持按需地图更新,以生成位置与路径点之间的最佳路线。虽然这超出了本文的范围,但它代表了一个结合了上述所有方法的高级用例。

Animated demo of an embedded dashboard generating optimal routes between waypoints on demand

图 9:嵌入式仪表板中的按需路线生成

结论

在本文中,我们展示了如何在 Amazon Quick Sight 图层地图中使用 Point 和 LineString 几何图形来绘制具体位置及其之间的路线。我们介绍了图层地图所需的 GeoJSON 结构和数据集联接,并将图层地图点位与原生点位地图进行了比较。我们还演练了控制视口、将多个视觉对象分层叠加到一个视图,以及使用 Amazon S3 和 Quick Sight API 刷新 GeoJSON 文件的高级技巧。

要详细了解分层地图,请参阅 Amazon Quick Sight 分层地图文档。欢迎访问 Amazon Quick Community,与同行交流并随时了解最新功能和资源。


关于作者

来源: AWS Machine Learning Blog · aws.amazon.com