跳到正文
AWS Machine Learning Blog· Amit Makashir·· 16 小时前精选AI 评分52

Amazon Quick Sight 图层地图新增 GeoJSON 点与路线显示

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

AI 导读

Amazon Quick Sight 图层地图现已支持 GeoJSON 的 Point 和 LineString 几何类型,可显示具体地点和地点之间的路线。文章介绍了 GeoJSON 文件结构、与数据集的关联方式,并比较图层地图点与原生点地图在坐标、更新和视口控制上的差异。还说明了如何叠加不同几何图层,以及通过 Amazon S3 和 Quick Sight API 更新 GeoJSON。

推荐理由

文章比较了 GeoJSON 点图层与原生点地图在坐标、更新机制和视口控制上的差异,帮助判断不同地图呈现方式的适用场景。

正文 · AI 翻译

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

图层地图现在支持同一 GeoJSON 工作流中的另外两种几何类型:Point 和 LineString。点用于标记特定位置,例如单个商店或设施的地点。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。对于 Point,coordinates 包含一个 [longitude, latitude] 位置;对于 LineString,则包含按顺序排列的位置列表。

配置 Quick Sight 数据集及其 GeoJSON

在 Quick Sight 中配置图层地图可视化的图层时,有两个主要设置需要考虑。第一个是要可视化的几何类型,用于设置要从 GeoJSON 文件中渲染哪种几何图形:点、线或多边形。一个图层一次只渲染一种几何类型,因此,如果文件像前面的示例一样混合了多种类型,地图上只会显示所选类型的要素。第二个设置是将形状文件键字段与数据集键字段进行匹配,以便将 GeoJSON 中的每个要素与 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 中每条航线对应一个这样的要素,数据集中每条航线对应一行。要可视化的几何类型设置为 Lines。

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

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

示例:Point 图层

考虑一个示例数据集,其中展示了零售店的位置,例如 Long Island City。单个数据点的 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 中每家商店对应一个这样的要素,数据集中每家商店对应一行。要可视化的几何类型设置为 Points。

Layer map rendering a retail store location as a point

图 4:以 Point 图层绘制的商店

图层地图可视化中的线

图层地图可视化现在支持LineString几何类型,可将按顺序排列的坐标连接成一条路径。如数据结构部分所述,每条航线都是一个要素,其坐标是地图依次连接的有序位置。

当你想展示的是地点之间的关系时,可以使用线,例如航线、配送路线、航道或管道区段。可视化会根据 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 APIs 在视觉对象定义中设置精确的视口坐标。

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

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

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

边界定义了保证可见的最小区域。地图会缩放,以确保整个区域都能显示在视觉对象容器中。若要让地图尽可能贴合并尽量减少额外空间,请使边界的宽高比与视觉对象容器的形状相匹配。

叠加几何图形

对于需要在单个视图中组合多种几何图形类型的使用场景,您可以将视觉对象彼此叠加。例如,下方屏幕截图展示了如何在多边形定义的美国区域边界内,以点的形式绘制客户位置。此组合可以显示客户密度最高的区域,并可用于与数据集中的其他指标(如业绩)进行关联分析。

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. 禁用平移和缩放:对每个图层地图视觉对象,在 Map options 下禁用平移和缩放,以确保对齐方式保持一致。
  5. 隐藏上层的底图和背景:在 Display settings 下将上层视觉对象的背景设为隐藏,并在 Map options 下禁用底图。
  6. 堆叠视觉对象:通过拖放将顶部视觉对象移至底层之上,或在 Display settings 下设置精确的尺寸和位置坐标。

图层顺序遵循自由布局中的视觉堆叠顺序。要更改某个可视化对象在堆叠中的位置,请选择该对象上的菜单图标(三个点),然后选择 后移 或 前移。读者可以查看最上层可视化对象的工具提示,因此请将读者需要查看详细信息的图层放在最上面。每张工作表最多支持五个图层地图可视化对象。

动态更新 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 社区,与同行交流并了解最新功能和资源。


作者简介

Amit Makashir

Amit Makashir

Amit 是 Amazon Quick Suite 可视化团队的软件开发工程师,曾参与构建 Quick Sight 的图层地图及其背后的地理空间制图技术栈。他的工作涵盖客户所见的地图可视化效果,以及为其提供支持的地理编码、数据和服务基础设施。地图、地点和空间问题解决一直令他着迷,这份好奇心也融入了他的许多工作中。工作之余,他喜欢户外活动——徒步旅行、探索新目的地,以及沿风景优美的路线长途驾车。

Jackson Dowden

Jackson Dowden

Jackson 是 AWS Amazon Quick 的全球生成式 AI 解决方案架构师。他最初以合作伙伴解决方案架构师的身份加入 AWS,如今专注于帮助 ISV 以及医疗保健和生命科学领域的客户,借助 Quick 服务实施 AI 驱动的分析和嵌入式洞察。

Koushik Muthanna Koravanda Ganapathy

Koushik Muthanna Koravanda Ganapathy

Koushik 是 AWS Amazon Quick 的专业解决方案架构师。他帮助客户在整个组织中设计、实施并扩展 Quick,涵盖从架构到日常使用的各个方面。

Salim Khan

Salim Khan

Salim 是 AWS Amazon Quick 的高级全球生成式 AI 解决方案架构师。他拥有 16 年以上实施企业商业智能解决方案的经验。在 AWS,Salim 与全球客户合作,设计并实施基于 Amazon Quick 的 AI 驱动型 BI 和生成式 AI 功能。加入 AWS 之前,他曾担任 BI 顾问,服务于汽车、医疗保健、娱乐、消费品、出版和金融服务等行业,交付商业智能、数据仓储、数据集成和主数据管理解决方案。

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