在线AI教程 / AI工具
[Amazon Bedrock] 在 Amazon Quick Sight 图层地图中使用 GeoJSON 可视化点和路线
Artificial Intelligence 在 Amazon Quick Sight 图层地图中使用 GeoJSON 可视化点和路线 借助 Amazon Quick Sight
Artificial Intelligence
在 Amazon Quick Sight 图层地图中使用 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 中,当你为图层地图视觉对象配置图层时,有两个主要设置需要考虑。第一个是 Geometry type to visualize(要可视化的几何类型),它决定 GeoJSON 文件中的哪种几何被渲染:Points、Lines 或 Polygons。一个图层一次只渲染一种几何类型,所以当前一个例子那样文件混合了多种类型时,地图上只会出现所选类型的 Feature。第二个是把 Shape file key field(形状文件键字段)与 Dataset key field(数据集键字段)匹配,从而把 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 数据集中对应的行包含以下信息:

图 1:JFK-LAX 航线的数据集行,以 route_id 为键
route_id 字段用于把 Quick Sight 数据集与 GeoJSON 文件关联起来。GeoJSON 中每条航线存放一个这样的要素,数据集中每条航线一行。Geometry type to visualize 设为 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 中每家门店存放一个这样的要素,数据集中每家门店一行。Geometry type to visualize 设为 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 来更新几何 视口自动适配你的数据,平移和缩放始终启用默认自动适配,可配置是否允许平移和缩放 外观大小和颜色可从数据集编码。提供点样式配置(basic、cluster、heatmap)可自定义统一标记大小、填充不透明度、边框颜色和粗细。颜色可从数据集编码
在以下情况下选择图层地图视觉对象的点:
你需要一个锁定、不可滚动的视口。 你的位置是固定且经过精心挑选的(例如区域办公室、配送中心、零售门店),而不是每次数据刷新都会变化。 你计划把点与其他几何类型结合使用(在高级用例一节中介绍)。
设想一家零售品牌,其区域经理使用 Quick Sight 仪表板跟踪整个都会区的门店业绩。GeoJSON 文件为每家门店包含一个 Point 要素,带有一个 store ID 属性并关联到数据集。数据集保存驱动工具提示和颜色编码的指标(门店类型、月度收入、每日客流量)。你把地图定位在覆盖该都会区的缩放级别,然后禁用地图导航,使地图在每次加载时都渲染成一致的视图。经理们不会不小心缩小到全国或全球视图。

图 6:以点表示的门店位置,并禁用地图导航以锁定都会区视图
高级用例
前面几节介绍的是标准的图层地图设置。当你需要对读者看到的内容有更多控制、想在同一视图中组合多种几何类型,或需要随时间变化的几何时,可以使用以下技巧。
控制视口
当你需要控制图层地图视觉对象的视口时,可以手动平移和缩放到所需的视图,然后禁用地图导航将其锁定。对于需要更精确边界或编程控制的使用场景,你可以通过视觉对象定义、使用 Quick Sight API 设置确切的视口坐标。
图层地图视觉对象把视口配置存储在 ChartConfiguration 内的 MapState 属性中。该属性接受两个字段:
Bounds:定义最小可见区域的地理坐标(北、南、东、西)。 MapNavigation:ENABLED 或 DISABLED,控制读者是否可以平移和缩放。
虽然边界属性未在控制台上公开,但在进行编程式资产管理时,你可以在仪表板定义 JSON 中设置这些边界。例如,要定义边界,请修改视觉对象定义中的 MapState 块,然后调用 CreateDashboard 或 UpdateDashboard API。
边界定义保证可见的最小区域。地图会缩放,以确保整个区域都能装入视觉对象容器。要获得最紧凑的适配、让地图上附加的额外空间最小,请让你的边界宽高比与视觉对象容器的形状匹配。
叠加几何图层
对于需要把多种几何类型组合到单个视图中的使用场景,你可以把多个视觉对象层层叠加。例如,下面的截图演示了把客户位置以点的方式绘制在美国各区域多边形边界之内。这种组合展示了哪些区域的客户密度最高,并可用于与数据集中已有的其他指标(例如业绩)做关联分析。

图 7:叠加在多边形区域边界内的客户点
第二个示例演示把点作为配送路线沿途的站点组合起来。LineString 绘制规划路线,Point 要素标记沿途的每个计划停靠点。

图 8:以 LineString 绘制、并用 Point 标记每个停靠点的配送路线
要叠加几何图层,请按以下步骤把多个图层地图视觉对象堆叠在一起:
使用自由布局:把工作表布局设置改为自由布局,使视觉对象可以重叠和堆叠。 创建两个图层地图视觉对象:创建你要组合成单一视图的两个图层地图视觉对象,例如一个使用 Point GeoJSON 文件,另一个使用 LineString GeoJSON 文件。 使用匹配的边界:使用前面介绍的控制视口的方法,确认所有图层地图视觉对象都使用完全相同的边界,以获得相同的底层地图视图。 禁用平移和缩放:对每个图层地图视觉对象,在 Map options 下禁用平移和缩放,使对齐保持一致。 在上层隐藏底图和背景:在 Display settings 下把上层视觉对象的背景设为隐藏,并在 Map options 下禁用底图。 堆叠视觉对象:通过拖放,或在 Display settings 下匹配精确的尺寸和位置坐标,把上层视觉对象移动到基础图层之上。
图层顺序遵循自由布局中视觉对象的堆叠顺序。要改变视觉对象在堆栈中的位置,请选择视觉对象上的菜单图标(三个点),然后选择 Send backward 或 Bring forward。读者可以访问最上层视觉对象的工具提示,因此请把读者需要查看细节的图层放在最上面。每个工作表最多支持五个图层地图视觉对象。
动态更新 GeoJSON
与其他通过 SPICE 或 Direct Query 刷新数据的 Quick Sight 视觉对象不同,图层地图的几何本身就存放在 GeoJSON 文件中。当你的数据集按计划刷新时,指标会更新(例如颜色变化、工具提示的值刷新),但几何仍停留在原来的位置。
要更新地图上显示的内容,例如新路线、新的点位或更新后的边界,你需要更新 GeoJSON 文件并重新发布仪表板。你可以在 Quick Sight 控制台的 Analysis 中编辑图层地图视觉对象并上传新文件,从而手动替换 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 Community 与同行交流,并及时了解最新功能和资源。
关于作者