You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Databricks Mosaic库获取H3十六进制ID?

问题

测试Databricks Mosaic空间网格索引方法时,尝试通过grid_longlatascellid获取给定经纬度的H3十六进制ID,运行代码后仅返回Column对象,无法看到实际的十六进制值;而直接使用h3.geo_to_h3方法能得到实际的十六进制字符串。

已知配置与导入代码:

import h3
from mosaic import enable_mosaic
enable_mosaic(spark, dbutils)
from mosaic import *
spark.conf.set("spark.databricks.labs.mosaic.index.system", "H3")

测试代码及结果:

# 获取经纬度
latitude = 37.7716736
longitude = -122.4485852
 
# 获取分辨率
resolution = 7
 
# 获取H3十六进制ID
h3_hex_id = grid_longlatascellid(lit(latitude), lit(longitude), lit(resolution)).hex
 
# 打印H3十六进制ID
print(h3_hex_id)
# 输出:Column<'grid_longlatascellid(CAST(37.7716736 AS DOUBLE), CAST(-122.4485852 AS DOUBLE), 7)[hex]'>

格式差异示例:

  • h3.geo_to_h3返回:'872830829ffffff'
  • Mosaic的grid_longlatascellid默认返回十进制整数:623385352048508927

解决方案

方法1:使用Mosaic内置函数转换并查看结果

Mosaic提供grid_cellidash3函数,可直接将grid_longlatascellid返回的十进制ID转换为标准H3十六进制字符串。需在Spark DataFrame上下文执行计算,而非直接打印Column对象:

latitude = 37.7716736
longitude = -122.4485852
resolution = 7

# 创建临时DataFrame执行计算
result_df = spark.createDataFrame([(longitude, latitude)], ["lon", "lat"])
result_df = result_df.select(
    grid_cellidash3(grid_longlatascellid("lon", "lat", lit(resolution))).alias("h3_hex")
)

# 查看结果
result_df.show(truncate=False)

执行后输出示例:

+-------------+
|h3_hex       |
+-------------+
|872830829ffffff|
+-------------+

方法2:提取结果到Python本地变量

如果需要将十六进制ID提取为Python本地变量,可通过DataFrame计算后获取值:

latitude = 37.7716736
longitude = -122.4485852
resolution = 7

# 计算并提取值
h3_hex_value = (
    spark.createDataFrame([(longitude, latitude)], ["lon", "lat"])
    .select(
        grid_cellidash3(grid_longlatascellid("lon", "lat", lit(resolution))).alias("h3_hex")
    )
    .first()["h3_hex"]
)

print(h3_hex_value)
# 输出:872830829ffffff

关键说明

  • grid_longlatascellid返回的是Spark Column对象,代表H3网格ID的十进制整数表示,不能直接在Python本地调用.hex获取结果,必须在Spark分布式计算环境中执行计算。
  • grid_cellidash3函数专门用于将H3十进制ID转换为标准十六进制字符串,输出格式与h3.geo_to_h3完全一致。

内容的提问来源于stack exchange,提问作者kms

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 21:00:23