如何使用SparkSQL获取地理空间POINT 等效实现PostgreSQL对应ST函数逻辑
Databricks SparkSQL 空间坐标转换等价实现方案
核心实现逻辑
Databricks 官方提供的 Mosaic 空间函数库完全对齐 PostGIS 函数的命名规则、入参要求和计算精度,你可以直接使用和原逻辑几乎完全一致的 SQL 写法:
- 首先开启会话级别的 Mosaic 函数支持(单次会话执行一次即可)
SET spark.databricks.labs.mosaic.functions = true;
- 执行坐标转换查询,和原 PostgreSQL 逻辑100%匹配:
SELECT ST_Transform(ST_SetSRID(ST_MakePoint(x, y), 4326), 3857) AS web_mercator_point FROM 你的业务表名;
注意事项
ST_MakePoint入参顺序和 PostGIS 完全一致:第一个参数为经度(X坐标值),第二个参数为纬度(Y坐标值),不要颠倒顺序- 底层坐标系转换依赖 PROJ 库实现,和 PostGIS 转换精度完全一致,不会出现坐标偏移问题
- 若需要将二进制点位结果转为可读的 WKT 文本,可在外层嵌套
ST_AsText()函数,用法和 PostGIS 完全相同 - 如果你使用的 Databricks Runtime 版本低于 12.2 LTS,可先在集群的库管理中搜索安装
databricks-labs-mosaic后再执行上述代码
内容的提问来源于stack exchange,提问作者user2793343
相关产品推荐
相关产品推荐

