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

Amazon Quick Sight 图层地图支持用 GeoJSON 绘制点与路线

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

AI 导读

Amazon Quick Sight 的图层地图现在支持 GeoJSON 中的 Point 和 LineString 两种几何类型,可在地图上标出具体地点并绘制地点之间的路线。

摘要与补充说明

此前图层地图只能上传 GeoJSON 绘制自定义形状图层(如销售区域或行政区),无法呈现区域内的单个位置和连接它们的路径。使用时需准备 .geojson 文件(最大 100 MB)、一份 Quick Sight 数据集,以及两者共享的关联键;每个图层一次只渲染一种几何类型,混合类型文件仅显示所选类型的要素。点适合标注门店或设施等具体位置,线适合展示配送路径、机场间航班等地点间关系。

正文· AI 翻译

借助 Amazon Quick Sight 图层地图,您现在可以绘制点和路线,例如城市中各门店的位置,或从机场起飞的航班。地理空间地图可帮助企业发现与位置相关的模式,例如某个区域的业绩表现如何,或客户集中在何处。Amazon Quick Sight 通过多种地图类型支持这一需求,包括点地图、填充地图和图层地图。在图层地图首次发布时,您可以上传 GeoJSON 文件来绘制自定义形状图层,例如销售区域或行政区,并将这些形状与数据集关联。这种方式能很好地处理区域和边界,但并未覆盖区域内的各个具体位置,也未覆盖它们之间的路线。

图层地图现在通过同一 GeoJSON 工作流支持另外两种几何类型:Point 和 LineString。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 文件中哪种几何图形会被渲染:点、线或多边形。一个图层一次只渲染一种几何类型,因此当文件混合了前面示例中的多种类型时,只有所选类型的要素会显示在地图上。第二个是将形状文件键字段与数据集键字段匹配,这会将 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:JFK-LAX 航线绘制为 LineString 图层

示例: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:从 JFK 出发的航班绘制为通往多个目的地的 LineString 航线

图层地图视觉对象上的点

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。

边界定义了保证可见的最小区域。地图会进行缩放以确保整个区域适合视觉对象容器。要使地图额外空间最小、实现最紧凑的适配,请使边界的宽高比与视觉对象容器的形状相匹配。

图层几何图形

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

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 文件:在 Analysis 中编辑图层地图视觉对象并上传新文件。这适用于不频繁的更改,例如每季度更新区域边界或添加新的门店位置。

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

  1. 将新的 GeoJSON 上传到 Amazon S3:生成更新后的几何数据,并将其保存到 Amazon S3 存储桶。自定义解决方案可以使用其他 AWS 服务(例如 Amazon Location Service)来创建 GeoJSON 文件。
  2. 在仪表板定义中引用该文件:仪表板定义包含一个 StaticFiles 数组,其中每个 GeoJSON 文件对应一个 SpatialStaticFile 条目。修改文件引用,使其指向更新后文件条目对应的 S3 位置,每个 GeoJSON 文件均需如此。
  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 与同行交流,并随时了解最新功能和资源。


关于作者

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阅读原文

相关阅读

专题与标签

相关资讯专题