使用 Snowflake 进行地理空间分析

2025 年 7 月 31 日 | 阅读 10 分钟

通过收集和分析具有空间背景的任何数据,例如公司卡车和司机的地理位置、居民的消费模式、跨国界的天气模式的影响、消费者需求、交通模式以及零售行业的本地人口,地理空间数据已成为几乎所有组织在更广泛的方面理解和优化其业务的关键。

Geospatial Analytics using Snowflake

通过利用地理空间能力来优化决策,各行各业的企业已经与客户行为相匹配。在 Snowflake 云平台上使用超过 60 个开源地理空间函数,处理地理空间数据变得简单。

概述

本课程将探讨 Snowflake 的地理空间函数在优化方面的实用性。此外,在讨论要使用的最佳技术时,还将说明竞争分析。

访问和评估地理数据可获得可用于提高收入、确定区域需求、按地理位置分析用户行为等方面的见解。

现在让我们来考察零售行业的几个用例,并了解地理数据(如 Snowflake)如何用于改善业务运营。下一个用例是检查 5 到 15 公里半径内的商店,并了解消费者行为和零售运营。同样,地理信息和客户人口统计数据可以结合起来提供本地化服务。

架构概述

CARTO Spatial Extension 由一组用户定义函数组成,这些函数增强了 Snowflake 的地理空间能力。

对于我们的用例,零售数据集(Marketplace)将被导入 Snowflake 云 数据仓库,并将使用 Tableau 生成可视化分析。下面将介绍 Snowflake 数据仓库平台的基本功能和模块,可用于启用地理分析。

Geospatial Analytics using Snowflake

转换模块包含修改几何形状大小或计算几何构造的函数。

  • 处理模块包含计算先前处理并从现有地理空间生成地理空间的函数。
  • 度量模块包含用于计算角度、面积和距离的函数。还可以获得用于根据测量值计算几何值的函数。
  • Placekey 是一个免费、开放的全球物理位置标准标识符,使组织可以轻松地就这些位置进行信息交流。
  • 构造函数模块中的函数使用坐标或现有地理空间生成地理空间。
  • 访问器:此模块包含修改内部几何形状或提供信息的函数。
  • H3 是 Uber 的六边形分层空间索引。
  • Quadkey - 此分层地理空间索引基于 Bing Maps Tile System。
  • S2 是一个在球状三维球体上显示所有数据的库。

这使得创建一个全局地理数据库成为可能,该数据库没有接缝和奇点,具有单一坐标系,并且相对于地球的实际形状,在整体上具有最小的失真。

下面列出了此零售用例中使用的核心模块和功能。

  • Quadkey/Placekey - 用于理解和分析商店密度
  • 度量 - 用于检查不同商店的客户群
  • 转换 - 用于确定区域内的竞争对手零售商
  • 处理 - 用于检查商店在区域内的客户位置

数据集和工具包

下面列出了用于此概念验证的数据集和工具包。

Geospatial Analytics using Snowflake

Tableau 的可视化分析

Tableau 是最好的 数据可视化 工具之一,其简单目标是帮助用户查看和理解他们的数据。无需编写大量代码,Tableau 地图即可轻松分析和理解地理空间数据。

Geospatial Analytics using Snowflake

使用 Tableau 的地图图表和地理空间函数,可以快速可视化地理空间数据并创建交互式仪表板。您可以将空间文件与电子表格或文本文件等其他格式的数据集成,并通过空间函数的帮助进行复杂空间分析。

下面列出了 Tableau 使用的一些常用地理函数

  • AREA
  • BUFFER
  • DISTANCE
  • MAKELINE
  • MAKEPOINT

由于此用例中的数据是静态的,因此仪表板和图表很简单,并且只使用了少量 Tableau 功能或应用程序。在实际情况中,还可以使用地图层、故事板和集函数。为了更容易理解,数据以 Tableau 中的 GIS 地图形式显示,以生成“可用于分析的交互式且即时可用的仪表板”。

第一部分:为了找出哪些客户在商店指定范围内,哪些其他商店在该范围内,以及哪些产品最常被该区域的客户使用,让我们在 Snowflake 中建立一个视图。该视图将提供商店名称、商店位置、客户名称、客户位置、产品类型、客户与商店位置之间的距离以及许多其他相关详细信息。这些数据将有助于理解在预定半径内特定商店的客户交易。

以下步骤用于生成下面的图表

步骤 1:使用 MAKEPOINT 函数在 Tableau 地图图表上使用纬度和经度绘制商店的位置。

步骤 2:使用相同的 MAKEPOINT 方法在同一地图图表上绘制客户的位置。

步骤 3:在 Tableau 中,创建一个距离参数,其可能值为:5、10 或 15 公里。

步骤 4:使用距离参数和距离字段通过连接它们来过滤。

当用户选择一个客户位置时,仪表板将显示距离用户位置 5-10-15 公里范围内的其他商店,并且客户可以在这些商店进行购买。

Geospatial Analytics using Snowflake

让我们来谈谈第二个例子,其中仪表板显示了距离已从第一部分(见上文)选择的客户 5-10-15 公里范围内的所有商店。

以下步骤用于生成下面的图表

步骤 1:使用 MAKEPOINT 函数绘制客户的位置。

步骤 2:使用相同的地图图表,标记所选客户未进行任何购买的零售地点。这些数据直接从 Snowflake 视图中检索。

步骤 3:在 Tableau 中,创建一个距离参数,其可能值为:5、10 或 15 公里。

步骤 4:使用距离参数和距离字段通过连接它们来过滤。

下面的屏幕截图是第一部分的扩展,显示了客户订单随时间推移的模式。“viz in tooltips”方法是主要使用的方法。

Geospatial Analytics using Snowflake

要创建类似的内容,需要执行以下操作:

步骤 1:创建一个折线图,按产品类别显示订单随时间推移的趋势。

步骤 2:参考第一部分中该图表的工具提示。

步骤 3:通过传递客户 ID 来应用过滤器。

Geospatial Analytics using Snowflake

第二部分:为了理解指定区域内没有交易的商店,让我们创建另一个 Snowflake 视图。该视图将提供商店名称、人口、密度以及商店与潜在客户之间的距离。这些详细信息将有助于分析并提供有关业务可能得到改善的区域的见解。

让我们来考察以下图表如何以及显示什么。下面的图表说明了为选定的商店进行客户覆盖的潜在目标位置。图表中显示了尚未进行客户交易的位置。为了便于理解,下面的表格视图提供了按邮政编码划分的人口和密度详细数据。

可以使用以下步骤来创建此可视化效果:

步骤 1:从新创建的 Snowflake 视图中检索尚未完成交易的所有客户位置。每个商店将有一个此长列表的不同版本。

步骤 2:使用 Tableau 的 MAKEPOINT 函数将这些客户映射到地图图表上。

Geospatial Analytics using Snowflake

一些复杂的用例

  • 使用地图图层查找满足参数的区域中的酒店。
  • 根据当地条件分析房屋用地。
  • 交通模式分析。

用例 1:基于用户画像

Mike 拥有一家食品配送业务,正打算在新区域创建一个新地点。Mike 需要研究新区域的消费者和市场趋势,因为他对市场趋势一无所知。Mike 使用 Snowflake 数据市场来获取消费者交易数据作为输入。通过利用 Snowflake 地理空间功能,Mike 对整个可触达市场有了全面的了解。

Geospatial Analytics using Snowflake

用例 2:基于用户画像

Bella 拥有一家杂货店,出售雨伞等日常用品。

通过关注新老客户以提高质量,Bella 希望提高收入。

她最近在店里增加了侧边商品。

通过利用 Snowflake 的地理分析功能,Bella 可以利用天气预报数据。此外,还可以使用客户交易数据来定位新老客户。

Geospatial Analytics using Snowflake

竞争分析

由于负载可以分散到多个服务器和集群,并且由于有现成的数据市场,可以轻松获得更深入的见解,因此 Snowflake 使处理地理空间数据变得高效且简单。通过利用 Snowflake 在地理空间 数据分析 方面的见解,可以降低利润、欺诈和风险。

Geospatial Analytics using Snowflake

Tableau

Geospatial Analytics using Snowflake

Snowflake

Geospatial Analytics using Snowflake

数据类型

对于地理空间数据,Snowflake 提供以下数据类型:

  • 即使几何形状使用非平面 SRS,所有函数都假定平面坐标。
  • 度量函数(如 ST_LENGTH)使用的单位与坐标系相同。
  • 对于接受多个 GEOMETRY 表达式作为参数的函数(如 ST_DISTANCE),输入表达式必须在相同的 SRS 中声明。

输入和输出地理空间

以下各节涵盖了读取和写入地理数据所支持的标准格式和对象类型。

  • 支持的标准输入和输出格式。
  • 支持的地理空间对象类型。
  • 定义结果集的输出格式。

关于 GEOGRAPHY 值 EWKT 和 EWKB 处理的说明

PostGIS 引入了两种非标准格式:EWKT 和 EWKB。通过添加空间参考系统标识符(SRID),指示要与数据一起使用的坐标参考系统,它们改进了 WKT 和 WKB 格式。目前 Snowflake 只支持 WGS84,它对应于 SRID=4326。

Geospatial Analytics using Snowflake

了解在 GEOMETRY 中使用不同 SRID 的影响

您可以将具有不同 SRID 的对象添加到 GEOMETRY 列。如果列具有多个 SRID,则一些关键性能优化将不起作用。这可能导致搜索速度变慢,尤其是在对地理空间谓词进行连接时。

  • JavaScript UDF 中的 GEOGRAPHY 或 GEOMETRY 类型参数将在 UDF 主体内显示为 GeoJSON 格式的 JSON 对象。
  • 如果 JavaScript UDF 返回 GEOGRAPHY 或 GEOMETRY,则 UDF 主体应返回 GeoJSON 格式的 JSON 对象。

将 Python UDF 与地理数据结合使用

  • GEOGRAPHY 和 GEOMETRY 类型可用作 Python UDF 的返回值和参数。
  • 当 Python UDF 中包含 GEOGRAPHY 或 GEOMETRY 类型的参数时,它会表示为 GeoJSON 对象,然后在 UDF 主体内转换为 Python dict 对象。
  • 如果 Python UDF 返回 GEOGRAPHY 或 GEOMETRY,则 Python UDF 主体应返回符合 GeoJSON 结构的 Python dict 对象。

Snowflake 提供的 SQL 工具使将 H3 与 GEOGRAPHY 对象结合使用成为可能。这些功能可用于:获取点的 GEOGRAPHY 对象的 H3 单元格 ID(索引)(反之亦然)。

  • 获取 GEOGRAPHY 对象最小的 H3 单元格 ID 集合。
  • 获取代表位于多边形内的 GEOGRAPHY 对象质心的 H3 单元格 ID。
  • 获取代表 H3 单元格边界的 GEOGRAPHY 对象。
  • 获取特定 H3 单元格的父代和子代。
  • 确定 H3 单元格质心的纬度和经度(反之亦然)。
  • 获取 H3 单元格的解析度。
  • 获取 H3 单元格 ID 的十六进制表示(反之亦然)。

概述处理无效地理空间形状的过程

默认情况下,当输入格式合适的数据转换为 GEOGRAPHY 或 GEOMETRY 对象时,地理转换函数执行以下操作:

  • 该函数尝试验证所提供数据的形状。
  • 该函数确定形状是否满足开放地理空间联盟的简单要素访问/通用体系结构标准。
  • 如果形状无效,该函数将尝试修复数据(例如,通过封闭环来修复多边形)。
  • 如果形状在修复后仍然无效,该函数将不会构建 GEOGRAPHY 或 GEOMETRY 对象并报告错误。(TRY_* 函数不报告错误,而是返回 NULL。)

将地理空间数据摄取到 Snowflake

地理空间数据有许多不同类型和大小。您摄取到 Snowflake 的文件与 CSV 文件之间唯一的结构区别在于源文件将包含纬度和经度。如果数据之前已被处理并塑造成地理表示形式,则可以预期数据是熟悉的文本格式。

用例

  • 选择零售地点时,请考虑竞争对手的距离和人口密度等因素。
  • 物流与供应链:使用地理数据优化配送路线。
  • 电信:使用地理分析规划网络覆盖范围。
  • 保险:根据区域特征(如洪水区)评估风险。

使用 Snowflake 进行地理空间分析的优势 可伸缩性

  • 有效管理大型数据集。
  • 基于 SQL 的地理空间操作易于使用。
  • 互操作性:建立与编程库和 BI 工具的连接。
  • 数据市场:提供预先策划的地理数据集。

挑战与注意事项

  • 确保数据准确,特别是如果它是地理编码的。
  • 要避免错误,请注意平面(GEOMETRY)和球面(GEOGRAPHY)计算之间的区别。
  • 由于 Snowflake 没有内置的 GIS 可视化,请使用适当的可视化工具。

结论

总而言之,我们可以得出结论,通过 Snowflake 中的地理空间分析,企业可以轻松、可扩展且高效地利用空间数据的价值。企业可以通过利用其高级地理数据类型、强大的 SQL 函数和集成功能,从基于位置的数据中提取有价值的见解。