借助 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 数组。
- 特性 是一个单一的地图元素。它承载了一个 几何 (形状)以及一个 属性 对象,该对象保存连接键。
- 几何 有一个 类型 (Point、LineString 或 Polygon)及其 坐标。该 坐标 持有单个 [经度, 纬度] 的位置,以及用于 Point的位置有序列表,用于 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:以 route_id 为键的 JFK-LAX 航线数据集行
该 route_id 字段用于将 Quick Sight 数据集与 GeoJSON 文件进行关联。GeoJSON 中每条航线包含一个此类要素,数据集中每条航线包含一行。要可视化的几何类型设置为 Lines。
图 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 中每个商店对应一个此类 feature,数据集中每个商店对应一行。用于可视化的几何类型设置为 Points。
图4:以 Point 图层绘制的商店
图层地图视觉对象上的线
图层地图视觉对象现在支持 LineString 几何类型,可将有序坐标列表连接为单一路径。如数据结构部分所述,每条路线是一个 feature,其坐标是地图按顺序连接的有序位置。
当你想要展示位置之间的关系时,可以使用线,例如航线、配送路线、航运通道或管道段。该视觉对象根据 GeoJSON 文件中的坐标绘制每条路径,而不是在加载时从数据生成。联接数据集中的字段可用于确定线条颜色编码,因此你可以按该字段所代表的任何内容对路线进行分组。除颜色外,你还可以通过宽度和不透明度控件自定义线条,以调整其在地图上的视觉显著度和清晰度。GeoJSON properties 对象中的联接键将每条 LineString 与其工具提示和颜色背后的数据集行关联起来。
例如,机场运营团队可能需要绘制某一天从纽约(JFK)出发的航班。GeoJSON 文件中每条路线对应一个 LineString,以可与数据集联接的路线 ID 为键。每条线从 JFK 出发,终点是其目的地,例如洛杉矶、芝加哥或迈阿密。数据集提供工具提示中显示的出发地、目的地和承运商。
图5:从 JFK 出发、以 LineString 路线绘制至多个目的地的航班
图层地图视觉对象上的点
Amazon Quick Sight 提供原生的 点地图视觉对象类型 ,可自动对位置名称进行地理编码,并随 SPICE 计划或 Direct Query 连接刷新。它支持动态点大小、颜色编码以及聚类点和热力图密度渐变等点样式。它最适合频繁变化的数据,以及你希望地图在视觉上响应这些变化的场景。
随着图层地图视觉对象新增对 GeoJSON 点图层的支持,Quick Sight 现在提供第二种点地图绘制能力,二者有几个关键区别。图层地图视觉对象的点使用统一的标记大小,且不支持地理编码,因此你需要在 GeoJSON 文件中提供明确的坐标。作为回报,你可以精确控制视口,将地图锁定到确切的地理区域,并禁用平移和缩放。
下表总结了这些关键区别:
| 功能 | 点地图 | 图层地图视觉对象点 |
| 数据源 | 数据集中的经纬度值或地理位置名称 | 通过共享键联接到数据集的 GeoJSON Point feature |
| 地理编码 | 自动识别城市、县、州、国家和邮政编码 | 不可用。必须在 GeoJSON 文件中提供明确的坐标 |
| 位置更新 | 随着位置值的变化,地图随 SPICE 刷新或 Direct Query 自动更新 | 视觉对象使用静态 GeoJSON 文件来确定点的位置。需要手动重新上传或调用 API 来更新几何图形 |
| 视口 | 自动适应你的数据,平移和缩放始终启用 | 默认自动适配,可配置是否允许平移和缩放 |
| 外观 | 大小和颜色可以从数据集中编码。提供点样式配置(基本、聚合、热力图) | 可自定义统一的标记大小、填充不透明度、边框颜色和粗细。颜色可以从数据集中编码 |
在以下情况下选择图层地图视觉点:
- 您需要一个锁定的、不可滚动的视口。
- 您的位置是固定且经过整理的(例如区域办事处、配送中心、零售门店),而不是随着每次数据刷新而变化。
- 您计划将点与其他几何类型组合使用(在高级用例部分中介绍)。
设想一个零售品牌,其区域经理使用 Quick Sight 仪表板来跟踪都会区内各门店的表现。GeoJSON 文件为每个门店包含一个 Point 要素,并带有一个可连接到数据集的门店 ID 属性。数据集保存着驱动工具提示和颜色编码的指标(门店类型、月收入、每日客流量)。您将地图定位到覆盖该都会区的缩放级别,然后禁用地图导航,使地图在每次加载时都以一致的视图呈现。经理们不会不小心缩放到全国或全球视图。
图6:门店位置以点的形式显示,并禁用地图导航以锁定都会区视图
高级用例
前面的部分介绍了标准的图层地图设置。当您需要对读者所见内容进行更多控制、希望在单个视图中组合多种几何类型,或需要随时间变化的几何图形时,可使用以下技术。
控制视口
当您需要控制图层地图视觉对象的视口时,可以手动平移和缩放到所需的视图,然后禁用地图导航将其锁定在原位。对于需要更精确边界或程序化控制的用例,您可以通过 Quick Sight API 在视觉对象定义中设置精确的视口坐标。
图层地图视觉对象将其视口配置存储在 MapState 内的属性 ChartConfiguration中。此属性接受两个字段:
- Bounds:定义最小可见区域(北、南、东、西)的地理坐标。
- MapNavigation:
ENABLED或DISABLED来控制读者是否可以平移和缩放。
尽管 bounds 属性未在控制台上公开,但在使用仪表板定义 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文件并重新发布仪表板。您可以在Analysis中编辑图层地图可视化对象并上传新文件,从而通过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 与同行交流,并随时了解最新的功能和资源。