Amazon Quick Sight 图层地图支持用 GeoJSON 绘制点和路线
Visualize points and routes with GeoJSON in Amazon Quick Sight layer maps
Amazon Quick Sight 图层地图新增支持 GeoJSON 的 Point 和 LineString 两种几何类型,可在地图上标出具体地点和地点之间的路线,此前仅支持绘制销售区域等自定义形状图层。GeoJSON 文件须为 .geojson 格式、最大 100 MB,并通过共享键字段与 Quick Sight 数据集关联;每个图层一次只渲染一种几何类型。
借助 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。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 数据集中对应的行包含以下信息:
图 1:JFK-LAX 航线的数据集行,以 route_id 为键
route_id字段用于将 Quick Sight 数据集与 GeoJSON 文件连接。GeoJSON 中每条航线保存一个这样的要素,数据集中每条航线一行。要可视化的几何类型设置为线。
图 2:以 LineString 图层绘制的 JFK-LAX 航线
示例:Point 图层
考虑一个示例数据,显示长岛市等零售门店的位置。单个数据点的 GeoJSON 结构配置如下:
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-73.9490, 40.7447]
},
"properties": { "store_id": "S-109" }
}Quick Sight 数据集中对应的行包含以下信息:
图 3:某门店的数据集行,以 store_id 为键
store_id字段用于将 Quick Sight 数据集与 GeoJSON 文件连接。GeoJSON 中每家门店保存一个这样的要素,数据集中每家门店一行。要可视化的几何类型设置为点。
图 4:以 Point 图层绘制的门店
图层地图视觉对象上的线
图层地图视觉对象现在支持LineString几何图形,可将有序的坐标列表连接成单条路径。如数据结构部分所述,每条航线是一个要素,其坐标是地图按顺序连接的有序位置。
当你想展示位置之间的关系时,例如飞行路径、配送路线、航运通道或管道段,请使用线。该视觉对象根据 GeoJSON 文件中的坐标绘制每条路径,而不是在加载时根据数据生成路径。连接数据集中的字段可以决定线条颜色编码,因此你可以按该字段所代表的任何内容对航线进行分组。除了颜色之外,你还可以使用宽度和不透明度控件自定义线条,以调整地图上的视觉突出度和清晰度。GeoJSON properties 对象中的连接键将每条 LineString 与其工具提示和颜色背后的数据集行关联起来。
例如,机场运营团队可能在地图上标出某一天从纽约(JFK)出发的航班。GeoJSON 文件为每条航线保存一个 LineString,以连接到数据集的航线 ID 为键。每条线从 JFK 开始,到其目的地结束,例如洛杉矶、芝加哥或迈阿密。数据集提供显示在工具提示中的出发地、目的地和承运商。
图 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 属性,用于与数据集连接。数据集包含驱动工具提示和颜色编码的指标(门店类型、月收入、每日客流量)。您将地图定位在覆盖该都市区的缩放级别,然后禁用地图导航,以便地图在每次加载时都呈现一致的视图。经理们不会意外缩小到全国或全球视图。
图 6:门店位置以点表示,并禁用地图导航以锁定都市区视图
高级用例
前面的章节介绍了标准的图层地图设置。当您需要对读者看到的内容有更多控制、希望在单个视图中组合几何类型,或需要随时间变化的几何时,请使用以下技巧。
控制视口
当您需要控制图层地图视觉对象中的视口时,可以手动平移和缩放至所需的视图。然后禁用地图导航以将其锁定到位。对于需要更精确边界或编程控制的用例,您可以通过 Quick Sight API 使用视觉对象定义设置精确的视口坐标。
图层地图视觉对象将其视口配置存储在 ChartConfiguration 内的 MapState 属性中。该属性接受两个字段:
- Bounds:定义最小可见区域的地理坐标(北、南、东、西)。
- MapNavigation:
ENABLED或DISABLED,用于控制读者是否可以平移和缩放。
尽管控制台上未公开 bounds 属性,但在以编程方式管理资产时,您可以在处理控制面板定义 JSON 时设置这些边界。例如,要定义边界,请修改视觉对象定义中的 MapState 块,然后调用 CreateDashboard 或 UpdateDashboard API。
边界定义了保证可见的最小区域。地图会缩放以确保整个区域适合视觉对象容器。要使地图以最小额外空间实现最紧凑的适配,请将边界的宽高比与视觉对象容器的形状相匹配。
图层几何图形
对于需要将多种几何类型组合到单个视图中的用例,您可以将视觉对象层层叠加。例如,以下截图演示了将客户位置绘制为多边形定义的美国区域边界内的点。此组合显示了哪些区域拥有最高的客户密度,并可用于与数据集中存在的其他指标(如绩效)进行关联。
图 7:客户点叠加在多边形区域边界内
第二个示例演示了将点组合为配送路线路径上的停靠点。LineString 绘制计划路线,Point 要素标记沿途的每个计划停靠点。
图 8:绘制为 LineString 的配送路线,每个停靠点带有 Point 标记
要叠加几何图形,您需要将多个图层地图视觉对象层层堆叠,步骤如下:
- 使用自由形式布局:将 工作表布局设置更改为自由形式,以便视觉对象可以重叠和堆叠。
- 创建两个图层地图视觉对象:创建要组合到单个视图中的两个图层地图视觉对象,例如一个使用 Point GeoJSON 文件,另一个使用 LineString GeoJSON 文件。
- 使用匹配的边界:使用前面所述的视口控制方法,验证所有图层地图视觉对象使用相同的边界,以获得相同的底层地图视图。
- 禁用平移和缩放:对于每个图层地图视觉对象,在“地图”选项下禁用平移和缩放,以保持对齐不变。
- 隐藏上层的基础地图和背景:在“显示”设置下将上层视觉对象的背景设置为隐藏,并在“地图”选项下禁用基础地图。
- 堆叠视觉对象:使用拖放或在“显示”设置下匹配精确的大小和位置坐标,将顶层视觉对象移动到基础图层之上。
图层顺序遵循自由布局中的视觉堆叠顺序。要更改视觉对象在堆叠中的位置,请选择视觉对象上的菜单图标(三个点),然后选择下移一层或上移一层。读者可以访问最顶层视觉对象的工具提示,因此请将读者需要查看详细信息的图层放在顶部。每张工作表最多支持五个图层地图视觉对象。
动态更新 GeoJSON
与其他通过 SPICE 或 Direct Query 刷新数据的 Quick Sight 视觉对象不同,图层地图的几何数据存在于 GeoJSON 文件本身之中。当您的数据集按计划刷新时,指标会更新(例如颜色改变、工具提示值刷新),但几何数据仍保持在其原始位置。
要更新地图上显示的内容,例如新路线、新点位或更新的边界,您需要更新 GeoJSON 文件并重新发布仪表板。您可以通过 Quick Sight 控制台手动替换 GeoJSON 文件,方法是在分析中编辑图层地图视觉对象并上传新文件。这适用于不频繁的更改,例如每季度更新区域边界或添加新的门店位置。
对于自动化、按需或动态更新,流程涉及 Amazon Simple Storage Service(Amazon S3)和 Quick Sight API,具体步骤如下:
- 将新的 GeoJSON 上传到 Amazon S3:生成更新后的几何数据并将其保存到 Amazon S3 存储桶。自定义解决方案可以使用其他 AWS 服务(例如 Amazon Location Service)来创建 GeoJSON 文件。
- 在仪表板定义中引用该文件:仪表板定义包含一个 StaticFiles 数组,其中每个 GeoJSON 文件对应一个
SpatialStaticFile条目。修改文件引用,将其指向您更新后的文件条目所在的 S3 位置,每个 GeoJSON 文件均需如此。 - 调用 UpdateDashboard API:使用 UpdateDashboard API 提交包含新文件引用的更新后定义。
- 调用 UpdateDashboardPublishedVersion API:使用 UpdateDashboardPublishedVersion API 发布更改,使仪表板读者可以看到。
以下示例使用此模式在嵌入式仪表板中支持按需地图更新,以生成位置与途经点之间的最优路线。虽然这超出了本文的范围,但它代表了一个结合了上述每种方法的高级用例。
图 9:嵌入式仪表板中的按需路线生成
结论
在本文中,我们展示了如何在 Amazon Quick Sight 图层地图中使用 Point 和 LineString 几何数据来绘制特定位置及其之间的路线。我们介绍了图层地图所需的 GeoJSON 结构和数据集联接,并将图层地图点与原生点地图进行了比较。我们还介绍了控制视口、将多个独立视觉对象分层到一个视图中,以及使用 Amazon S3 和 Quick Sight API 刷新 GeoJSON 文件的高级技巧。
要了解有关分层地图的更多信息,请参阅Amazon Quick Sight 分层地图文档。访问 Amazon Quick Community 与同行交流,并随时了解最新功能和资源。
关于作者
Amit Makashir
Amit 是 Amazon Quick Suite 可视化团队的软件开发工程师,他参与构建了 Quick Sight 的图层地图及其背后的地理空间制图技术栈。他的工作涵盖客户看到的地图可视化,以及为其提供支持的地理编码、数据和服务基础设施。他对地图、地点和空间问题解决充满兴趣,并将这份好奇心带入他的大部分工作中。工作之余,他喜欢户外活动——徒步、探索新的目的地,以及进行长途风景驾车。
Jackson Dowden
Jackson 是 AWS 的 Amazon Quick 全球生成式 AI 解决方案架构师。他最初在 AWS 担任合作伙伴解决方案架构师,现在专注于帮助 ISV 以及医疗与生命科学客户使用 Quick 服务实施 AI 驱动的分析和嵌入式洞察。
Koushik Muthanna Koravanda Ganapathy
Koushik 是 AWS 的 Amazon Quick 专家解决方案架构师。他帮助客户在其组织中设计、实施和扩展 Quick,从架构到日常使用。
Salim Khan
Salim 是 AWS 的 Amazon Quick 高级全球生成式 AI 解决方案架构师。他拥有超过 16 年实施企业商业智能解决方案的经验。在 AWS,Salim 与全球客户合作,在 Amazon Quick 上设计和实施 AI 驱动的 BI 及生成式 AI 能力。在加入 AWS 之前,他曾作为 BI 顾问服务于多个行业垂直领域,包括汽车、医疗、娱乐、消费品、出版和金融服务,交付商业智能、数据仓库、数据集成和主数据管理解决方案。
来源:AWS Machine Learning Blog · aws.amazon.com








