Amazon Quick Sight 图层地图新增 GeoJSON 点与路线显示
Visualize points and routes with GeoJSON in Amazon Quick Sight layer maps
Amazon Quick Sight 图层地图现已支持 GeoJSON 的 Point 和 LineString 几何类型,可显示具体地点和地点之间的路线。文章介绍了 GeoJSON 文件结构、与数据集的关联方式,并比较图层地图点与原生点地图在坐标、更新和视口控制上的差异。还说明了如何叠加不同几何图层,以及通过 Amazon S3 和 Quick Sight API 更新 GeoJSON。
文章比较了 GeoJSON 点图层与原生点地图在坐标、更新机制和视口控制上的差异,帮助判断不同地图呈现方式的适用场景。
使用 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 数据集中对应的行包含以下信息:
图 1:JFK-LAX 航线的数据集行,以 route_id 为键
route_id字段用于将 Quick Sight 数据集与 GeoJSON 文件关联起来。GeoJSON 中每条航线对应一个这样的要素,数据集中每条航线对应一行。要可视化的几何类型设置为 Lines。
图 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 数据集中对应的行包含以下信息:
图 3:商店的数据集行,以 store_id 为键
store_id字段用于将 Quick Sight 数据集与 GeoJSON 文件关联起来。GeoJSON 中每家商店对应一个这样的要素,数据集中每家商店对应一行。要可视化的几何类型设置为 Points。
图 4:以 Point 图层绘制的商店
图层地图可视化中的线
图层地图可视化现在支持LineString几何类型,可将按顺序排列的坐标连接成一条路径。如数据结构部分所述,每条航线都是一个要素,其坐标是地图依次连接的有序位置。
当你想展示的是地点之间的关系时,可以使用线,例如航线、配送路线、航道或管道区段。可视化会根据 GeoJSON 文件中的坐标绘制每条路径,而不是在加载数据时生成路径。关联数据集中的字段可用于决定线条的颜色编码,因此你可以根据该字段所代表的内容对航线进行分组。除了颜色之外,你还可以使用宽度和不透明度控件自定义线条,从而调整其在地图上的视觉突出程度和清晰度。GeoJSON properties 对象中的连接键会将每个 LineString 与其提示框和颜色所依据的数据集行关联起来。
例如,机场运营团队可能会绘制某一天从纽约 (JFK) 出发的航班地图。GeoJSON 文件中每条航线对应一个 LineString,并以航线 ID 为键与数据集关联。每条线都从 JFK 出发,终点为洛杉矶、芝加哥或迈阿密等目的地。数据集提供起点、终点和承运航空公司信息,这些信息会显示在提示框中。
图 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 属性,用于与数据集关联。数据集包含驱动工具提示和颜色编码的指标(门店类型、月收入、每日客流量)。你将地图定位到覆盖该大都市区的缩放级别,然后禁用地图导航,使地图每次加载时都以一致的视图呈现。经理无法意外缩小到全国或全球视图。
图 6:将门店位置显示为点,并禁用地图导航以锁定大都市区视图
高级用例
前文介绍了标准的图层地图设置。当你需要更好地控制读者所见内容、希望在单个视图中组合多种几何类型,或需要随时间变化的几何图形时,请使用以下技巧。
控制视口
当您需要控制图层地图视觉对象中的视口时,可以手动平移和缩放到所需视图,然后禁用地图导航以将其锁定。对于需要更精确边界或程序化控制的使用场景,您可以通过 Quick Sight APIs 在视觉对象定义中设置精确的视口坐标。
图层地图视觉对象将其视口配置存储在 MapState 中的 ChartConfiguration 属性里。该属性接受两个字段:
- Bounds:定义最小可见区域的地理坐标(北、南、东、西)。
- MapNavigation:
ENABLED或DISABLED,用于控制读者能否平移和缩放。
虽然控制台中未公开 bounds 属性,但在使用仪表板定义 JSON 进行程序化资产管理时,您可以设置这些边界。例如,要定义边界,请修改视觉对象定义中的 MapState 块,然后调用 CreateDashboard 或 UpdateDashboard APIs。
边界定义了保证可见的最小区域。地图会缩放,以确保整个区域都能显示在视觉对象容器中。若要让地图尽可能贴合并尽量减少额外空间,请使边界的宽高比与视觉对象容器的形状相匹配。
叠加几何图形
对于需要在单个视图中组合多种几何图形类型的使用场景,您可以将视觉对象彼此叠加。例如,下方屏幕截图展示了如何在多边形定义的美国区域边界内,以点的形式绘制客户位置。此组合可以显示客户密度最高的区域,并可用于与数据集中的其他指标(如业绩)进行关联分析。
图 7:叠加在多边形区域边界内的客户点
第二个示例展示了如何将点与配送路线上的停靠点路径组合起来。LineString 绘制计划路线,Point 要素则标记沿途的每个计划停靠点。
图 8:使用 LineString 绘制配送路线,并用 Point 标记各个停靠点
要叠加几何图形,请将多个图层地图视觉对象彼此堆叠,并按以下步骤操作:
- 使用自由布局:将工作表布局设置为自由布局,以便视觉对象可以重叠和堆叠。
- 创建两个图层地图视觉对象:创建要组合成单个视图的两个图层地图视觉对象,例如,一个使用 Point GeoJSON 文件,另一个使用 LineString GeoJSON 文件。
- 使用相同的边界:采用前文介绍的视口控制方法,确认所有图层地图视觉对象使用相同的边界,以确保底层地图视图一致。
- 禁用平移和缩放:对每个图层地图视觉对象,在 Map options 下禁用平移和缩放,以确保对齐方式保持一致。
- 隐藏上层的底图和背景:在 Display settings 下将上层视觉对象的背景设为隐藏,并在 Map options 下禁用底图。
- 堆叠视觉对象:通过拖放将顶部视觉对象移至底层之上,或在 Display settings 下设置精确的尺寸和位置坐标。
图层顺序遵循自由布局中的视觉堆叠顺序。要更改某个可视化对象在堆叠中的位置,请选择该对象上的菜单图标(三个点),然后选择 后移 或 前移。读者可以查看最上层可视化对象的工具提示,因此请将读者需要查看详细信息的图层放在最上面。每张工作表最多支持五个图层地图可视化对象。
动态更新 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条目。对于每个 GeoJSON 文件,请将文件引用修改为更新后文件所在的 S3 位置。 - 调用 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 社区,与同行交流并了解最新功能和资源。
作者简介
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








