ST_HILBERT
将 GEOMETRY 或 GEOGRAPHY 对象编码为 Hilbert 曲线索引。该函数使用几何对象边界框中心点作为待编码的点。提供边界时,会先将该点归一化到指定的边界框中,再进行编码。
语法
ST_HILBERT(<geometry_or_geography>)
ST_HILBERT(<geometry_or_geography>, <bounds>)
参数
返回类型
UInt64。
示例
GEOMETRY 示例
SELECT ST_HILBERT(TO_GEOMETRY('POINT(1 2)')) AS hilbert1, ST_HILBERT(TO_GEOMETRY('POINT(5 5)')) AS hilbert2;
╭───────────────────────────╮
│ hilbert1 │ hilbert2 │
├─────────────┼─────────────┤
│ 3355443200 │ 2155872256 │
╰───────────────────────────╯
SELECT ST_HILBERT(TO_GEOMETRY('POINT(1 2)'), [0, 0, 1, 1]) AS hilbert1, ST_HILBERT(TO_GEOMETRY('POINT(5 5)'), [0, 0, 5, 5]) AS hilbert2;
╭───────────────────────────╮
│ hilbert1 │ hilbert2 │
├─────────────┼─────────────┤
│ 2863311530 │ 2863311530 │
╰───────────────────────────╯
GEOGRAPHY 示例
SELECT ST_HILBERT(TO_GEOGRAPHY('POINT(113.15 23.06)')) AS hilbert1, ST_HILBERT(TO_GEOGRAPHY('POINT(116.25 39.54)')) AS hilbert2;
╭───────────────────────────╮
│ hilbert1 │ hilbert2 │
├─────────────┼─────────────┤
│ 3070259060 │ 3033451300 │
╰───────────────────────────╯
SELECT ST_HILBERT(TO_GEOGRAPHY('POINT(113.15 23.06)'), [73, 4, 135, 53]) AS hilbert1, ST_HILBERT(TO_GEOGRAPHY('POINT(116.25 39.54)'), [73, 4, 135, 53]) AS hilbert2;
╭───────────────────────────╮
│ hilbert1 │ hilbert2 │
├─────────────┼─────────────┤
│ 3533607194 │ 2330429279 │
╰───────────────────────────╯