mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-16 19:32:07 +00:00
1510 lines
37 KiB
Markdown
1510 lines
37 KiB
Markdown
---
|
||
slug: /ja/sql-reference/functions/geo/h3
|
||
sidebar_label: H3 Indexes
|
||
title: "H3 インデックスを操作する関数"
|
||
---
|
||
|
||
## H3 インデックス
|
||
|
||
[H3](https://eng.uber.com/h3/) は地球の表面を均一な六角形のセルのグリッドに分割する地理的インデックスシステムです。このシステムは階層的であり、最上位の六角形(「親」)を7つの同様でより小さい六角形(「子」)に分割することができます。
|
||
|
||
階層のレベルは `resolution` と呼ばれ、`0` から `15` までの値を取ります。`0` が最も大きく、最も粗いセルを持つ `base` レベルです。
|
||
|
||
緯度と経度のペアは64ビットのH3インデックスに変換され、グリッドセルを特定します。
|
||
|
||
H3インデックスは主に位置のバケッティングや他の地理空間操作に使用されます。
|
||
|
||
H3システムの詳細は[Uber Engineeringのサイト](https://eng.uber.com/h3/)で利用可能です。
|
||
|
||
## h3IsValid
|
||
|
||
数値が有効な [H3](#h3-index) インデックスであるかどうかを検証します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3IsValid(h3index)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `h3index` — 六角形のインデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
- 1 — 数字が有効なH3インデックス。[UInt8](../../data-types/int-uint.md)。
|
||
- 0 — 数字が有効なH3インデックスではありません。[UInt8](../../data-types/int-uint.md)。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3IsValid(630814730351855103) AS h3IsValid;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌─h3IsValid─┐
|
||
│ 1 │
|
||
└───────────┘
|
||
```
|
||
|
||
## h3GetResolution
|
||
|
||
指定された [H3](#h3-index) インデックスの解像度を定義します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3GetResolution(h3index)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `h3index` — 六角形のインデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
- インデックスの解像度。範囲: `[0, 15]`。[UInt8](../../data-types/int-uint.md)。
|
||
- インデックスが無効な場合、関数はランダムな値を返します。インデックスを確認するために[h3IsValid](#h3isvalid)を使用してください。[UInt8](../../data-types/int-uint.md)。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3GetResolution(639821929606596015) AS resolution;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌─resolution─┐
|
||
│ 14 │
|
||
└────────────┘
|
||
```
|
||
|
||
## h3EdgeAngle
|
||
|
||
[H3](#h3-index) 六角形エッジの平均長をグレードで計算します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3EdgeAngle(resolution)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `resolution` — インデックスの解像度。[UInt8](../../data-types/int-uint.md)。範囲: `[0, 15]`。
|
||
|
||
**返される値**
|
||
|
||
- [H3](#h3-index) 六角形エッジの平均長をグレードで示します。[Float64](../../data-types/float.md)。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3EdgeAngle(10) AS edgeAngle;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌───────h3EdgeAngle(10)─┐
|
||
│ 0.0005927224846720883 │
|
||
└───────────────────────┘
|
||
```
|
||
|
||
## h3EdgeLengthM
|
||
|
||
[H3](#h3-index) 六角形エッジの平均長をメートルで計算します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3EdgeLengthM(resolution)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `resolution` — インデックスの解像度。[UInt8](../../data-types/int-uint.md)。範囲: `[0, 15]`。
|
||
|
||
**返される値**
|
||
|
||
- [H3](#h3-index) 六角形エッジの平均長をメートルで示します。[Float64](../../data-types/float.md)。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3EdgeLengthM(15) AS edgeLengthM;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌─edgeLengthM─┐
|
||
│ 0.509713273 │
|
||
└─────────────┘
|
||
```
|
||
|
||
## h3EdgeLengthKm
|
||
|
||
[H3](#h3-index) 六角形エッジの平均長をキロメートルで計算します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3EdgeLengthKm(resolution)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `resolution` — インデックスの解像度。[UInt8](../../data-types/int-uint.md)。範囲: `[0, 15]`。
|
||
|
||
**返される値**
|
||
|
||
- [H3](#h3-index) 六角形エッジの平均長をキロメートルで示します。[Float64](../../data-types/float.md)。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3EdgeLengthKm(15) AS edgeLengthKm;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌─edgeLengthKm─┐
|
||
│ 0.000509713 │
|
||
└──────────────┘
|
||
```
|
||
|
||
## geoToH3
|
||
|
||
指定された解像度で`(lon, lat)`を持つ[H3](#h3-index)ポイントインデックスを返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
geoToH3(lon, lat, resolution)
|
||
```
|
||
|
||
**引数**
|
||
|
||
- `lon` — 経度。[Float64](../../data-types/float.md)。
|
||
- `lat` — 緯度。[Float64](../../data-types/float.md)。
|
||
- `resolution` — インデックスの解像度。範囲: `[0, 15]`。[UInt8](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
- 六角形インデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
- エラーの場合は0を返します。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT geoToH3(37.79506683, 55.71290588, 15) AS h3Index;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌────────────h3Index─┐
|
||
│ 644325524701193974 │
|
||
└────────────────────┘
|
||
```
|
||
|
||
## h3ToGeo
|
||
|
||
指定された[H3](#h3-index)インデックスに対応する中心の経度と緯度を返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3ToGeo(h3Index)
|
||
```
|
||
|
||
**引数**
|
||
|
||
- `h3Index` — H3インデックス。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
- 二つの値で構成されるタプル: `tuple(lon,lat)`。 `lon` — 経度。[Float64](../../data-types/float.md)。 `lat` — 緯度。[Float64](../../data-types/float.md)。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3ToGeo(644325524701193974) AS coordinates;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌─coordinates───────────────────────────┐
|
||
│ (37.79506616830252,55.71290243145668) │
|
||
└───────────────────────────────────────┘
|
||
```
|
||
|
||
## h3ToGeoBoundary
|
||
|
||
指定されたH3インデックスの境界に対応する`(lon, lat)`のペアの配列を返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3ToGeoBoundary(h3Index)
|
||
```
|
||
|
||
**引数**
|
||
|
||
- `h3Index` — H3インデックス。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
- `(lon, lat)`ペアの配列。[Array](../../data-types/array.md)([Float64](../../data-types/float.md), [Float64](../../data-types/float.md))。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3ToGeoBoundary(644325524701193974) AS coordinates;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌─h3ToGeoBoundary(599686042433355775)────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||
│ [(37.2713558667319,-121.91508032705622),(37.353926450852256,-121.8622232890249),(37.42834118609435,-121.92354999630156),(37.42012867767779,-122.03773496427027),(37.33755608435299,-122.090428929044),(37.26319797461824,-122.02910130919001)] │
|
||
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
## h3kRing
|
||
|
||
指定された六角形から半径 `k` の中のすべての [H3](#h3-index) 六角形をランダムな順序でリストします。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3kRing(h3index, k)
|
||
```
|
||
|
||
**引数**
|
||
|
||
- `h3index` — 六角形のインデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
- `k` — 半径。[integer](../../data-types/int-uint.md)
|
||
|
||
**返される値**
|
||
|
||
- H3インデックスの配列。[Array](../../data-types/array.md)([UInt64](../../data-types/int-uint.md))。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT arrayJoin(h3kRing(644325529233966508, 1)) AS h3index;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌────────────h3index─┐
|
||
│ 644325529233966508 │
|
||
│ 644325529233966497 │
|
||
│ 644325529233966510 │
|
||
│ 644325529233966504 │
|
||
│ 644325529233966509 │
|
||
│ 644325529233966355 │
|
||
│ 644325529233966354 │
|
||
└────────────────────┘
|
||
```
|
||
|
||
## h3GetBaseCell
|
||
|
||
指定された [H3](#h3-index) インデックスの基本セル番号を返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3GetBaseCell(index)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `index` — 六角形のインデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
- 六角形基本セル番号。[UInt8](../../data-types/int-uint.md)。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3GetBaseCell(612916788725809151) AS basecell;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌─basecell─┐
|
||
│ 12 │
|
||
└──────────┘
|
||
```
|
||
|
||
## h3HexAreaM2
|
||
|
||
指定された解像度での六角形の平均面積を平方メートルで返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3HexAreaM2(resolution)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `resolution` — インデックスの解像度。範囲: `[0, 15]`。[UInt8](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
- 平方メートルの面積。[Float64](../../data-types/float.md)。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3HexAreaM2(13) AS area;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌─area─┐
|
||
│ 43.9 │
|
||
└──────┘
|
||
```
|
||
|
||
## h3HexAreaKm2
|
||
|
||
指定された解像度での六角形の平均面積を平方キロメートルで返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3HexAreaKm2(resolution)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `resolution` — インデックスの解像度。範囲: `[0, 15]`。[UInt8](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
- 平方キロメートルの面積。[Float64](../../data-types/float.md)。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3HexAreaKm2(13) AS area;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌──────area─┐
|
||
│ 0.0000439 │
|
||
└───────────┘
|
||
```
|
||
|
||
## h3IndexesAreNeighbors
|
||
|
||
提供された [H3](#h3-index) インデックスが隣接しているかどうかを返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3IndexesAreNeighbors(index1, index2)
|
||
```
|
||
|
||
**引数**
|
||
|
||
- `index1` — 六角形のインデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
- `index2` — 六角形のインデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
- `1` — インデックスが隣接しています。[UInt8](../../data-types/int-uint.md)。
|
||
- `0` — インデックスが隣接していません。[UInt8](../../data-types/int-uint.md)。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3IndexesAreNeighbors(617420388351344639, 617420388352655359) AS n;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌─n─┐
|
||
│ 1 │
|
||
└───┘
|
||
```
|
||
|
||
## h3ToChildren
|
||
|
||
指定された [H3](#h3-index) インデックスの子インデックスの配列を返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3ToChildren(index, resolution)
|
||
```
|
||
|
||
**引数**
|
||
|
||
- `index` — 六角形のインデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
- `resolution` — インデックスの解像度。範囲: `[0, 15]`。[UInt8](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
- 子H3インデックスの配列。[Array](../../data-types/array.md)([UInt64](../../data-types/int-uint.md))。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3ToChildren(599405990164561919, 6) AS children;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌─children───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||
│ [603909588852408319,603909588986626047,603909589120843775,603909589255061503,603909589389279231,603909589523496959,603909589657714687] │
|
||
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
## h3ToParent
|
||
|
||
指定された [H3](#h3-index) インデックスを含む親(粗い)インデックスを返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3ToParent(index, resolution)
|
||
```
|
||
|
||
**引数**
|
||
|
||
- `index` — 六角形のインデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
- `resolution` — インデックスの解像度。範囲: `[0, 15]`。[UInt8](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
- 親H3インデックス。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3ToParent(599405990164561919, 3) AS parent;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌─────────────parent─┐
|
||
│ 590398848891879423 │
|
||
└────────────────────┘
|
||
```
|
||
|
||
## h3ToString
|
||
|
||
`H3Index` インデックスの表現を文字列表現に変換します。
|
||
|
||
``` sql
|
||
h3ToString(index)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `index` — 六角形のインデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
- H3インデックスの文字列表現。[String](../../data-types/string.md)。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3ToString(617420388352917503) AS h3_string;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌─h3_string───────┐
|
||
│ 89184926cdbffff │
|
||
└─────────────────┘
|
||
```
|
||
|
||
## stringToH3
|
||
|
||
文字列表現を `H3Index` (UInt64) 表現に変換します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
stringToH3(index_str)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `index_str` — H3インデックスの文字列表現。[String](../../data-types/string.md)。
|
||
|
||
**返される値**
|
||
|
||
- 六角形のインデックス番号。エラーの場合は0を返します。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT stringToH3('89184926cc3ffff') AS index;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌──────────────index─┐
|
||
│ 617420388351344639 │
|
||
└────────────────────┘
|
||
```
|
||
|
||
## h3GetResolution
|
||
|
||
[H3](#h3-index) インデックスの解像度を返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3GetResolution(index)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `index` — 六角形のインデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
- インデックスの解像度。範囲: `[0, 15]`。[UInt8](../../data-types/int-uint.md)。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3GetResolution(617420388352917503) AS res;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌─res─┐
|
||
│ 9 │
|
||
└─────┘
|
||
```
|
||
|
||
## h3IsResClassIII
|
||
|
||
[H3](#h3-index) インデックスがクラスIII向けの解像度であるかどうかを返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3IsResClassIII(index)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `index` — 六角形のインデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
- `1` — インデックスがクラスIII向けの解像度を持っています。[UInt8](../../data-types/int-uint.md)。
|
||
- `0` — インデックスがクラスIII向けの解像度を持っていません。[UInt8](../../data-types/int-uint.md)。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3IsResClassIII(617420388352917503) AS res;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌─res─┐
|
||
│ 1 │
|
||
└─────┘
|
||
```
|
||
|
||
## h3IsPentagon
|
||
|
||
この [H3](#h3-index) インデックスが五角形のセルを表しているかどうかを返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3IsPentagon(index)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `index` — 六角形のインデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
- `1` — インデックスが五角形のセルを表しています。[UInt8](../../data-types/int-uint.md)。
|
||
- `0` — インデックスが五角形のセルを表していません。[UInt8](../../data-types/int-uint.md)。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3IsPentagon(644721767722457330) AS pentagon;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌─pentagon─┐
|
||
│ 0 │
|
||
└──────────┘
|
||
```
|
||
|
||
## h3GetFaces
|
||
|
||
指定された [H3](#h3-index) インデックスに交差する二十面体面を返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3GetFaces(index)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `index` — 六角形のインデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
- 指定されたH3インデックスに交差する二十面体面の配列。[Array](../../data-types/array.md)([UInt64](../../data-types/int-uint.md))。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3GetFaces(599686042433355775) AS faces;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌─faces─┐
|
||
│ [7] │
|
||
└───────┘
|
||
```
|
||
|
||
## h3CellAreaM2
|
||
|
||
指定された入力H3インデックスに対応する特定のセルの正確な面積を平方メートルで返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3CellAreaM2(index)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `index` — 六角形のインデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
- セルの面積を平方メートルで示します。[Float64](../../data-types/float.md)。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3CellAreaM2(579205133326352383) AS area;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌───────────────area─┐
|
||
│ 4106166334463.9233 │
|
||
└────────────────────┘
|
||
```
|
||
|
||
## h3CellAreaRads2
|
||
|
||
指定された入力H3インデックスに対応する特定のセルの正確な面積を平方ラジアンで返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3CellAreaRads2(index)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `index` — 六角形のインデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
- セルの面積を平方ラジアンで示します。[Float64](../../data-types/float.md)。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3CellAreaRads2(579205133326352383) AS area;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌────────────────area─┐
|
||
│ 0.10116268528089567 │
|
||
└─────────────────────┘
|
||
```
|
||
|
||
## h3ToCenterChild
|
||
|
||
指定された[H3](#h3-index)の解像度で含まれる中心の[H3](#h3-index)子インデックスを返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3ToCenterChild(index, resolution)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `index` — 六角形のインデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
- `resolution` — インデックスの解像度。範囲: `[0, 15]`。[UInt8](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
- 指定された[H3](#h3-index)の解像度で含まれる中心の[H3](#h3-index)子インデックス。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3ToCenterChild(577023702256844799,1) AS centerToChild;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌──────centerToChild─┐
|
||
│ 581496515558637567 │
|
||
└────────────────────┘
|
||
```
|
||
|
||
## h3ExactEdgeLengthM
|
||
|
||
入力されたh3インデックスによって表される一方向のエッジの正確な長さをメートル単位で返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3ExactEdgeLengthM(index)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `index` — 六角形のインデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
- 正確なエッジの長さをメートルで示します。[Float64](../../data-types/float.md)。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3ExactEdgeLengthM(1310277011704381439) AS exactEdgeLengthM;;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌───exactEdgeLengthM─┐
|
||
│ 195449.63163407316 │
|
||
└────────────────────┘
|
||
```
|
||
|
||
## h3ExactEdgeLengthKm
|
||
|
||
入力されたh3インデックスによって表される一方向のエッジの正確な長さをキロメートル単位で返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3ExactEdgeLengthKm(index)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `index` — 六角形のインデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
- 正確なエッジの長さをキロメートルで示します。[Float64](../../data-types/float.md)。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3ExactEdgeLengthKm(1310277011704381439) AS exactEdgeLengthKm;;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌──exactEdgeLengthKm─┐
|
||
│ 195.44963163407317 │
|
||
└────────────────────┘
|
||
```
|
||
|
||
## h3ExactEdgeLengthRads
|
||
|
||
入力されたh3インデックスによって表される一方向のエッジの正確な長さをラジアン単位で返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3ExactEdgeLengthRads(index)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `index` — 六角形のインデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
- 正確なエッジの長さをラジアンで示します。[Float64](../../data-types/float.md)。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3ExactEdgeLengthRads(1310277011704381439) AS exactEdgeLengthRads;;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌──exactEdgeLengthRads─┐
|
||
│ 0.030677980118976447 │
|
||
└──────────────────────┘
|
||
```
|
||
|
||
## h3NumHexagons
|
||
|
||
指定された解像度でのユニークなH3インデックスの数を返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3NumHexagons(resolution)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `resolution` — インデックスの解像度。範囲: `[0, 15]`。[UInt8](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
- H3インデックスの数。[Int64](../../data-types/int-uint.md)。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3NumHexagons(3) AS numHexagons;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌─numHexagons─┐
|
||
│ 41162 │
|
||
└─────────────┘
|
||
```
|
||
|
||
## h3PointDistM
|
||
|
||
緯度/経度ペアの間の「大円」または「ハバース」距離をメートルで返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3PointDistM(lat1, lon1, lat2, lon2)
|
||
```
|
||
|
||
**引数**
|
||
|
||
- `lat1`, `lon1` — 度単位で示される点1の緯度と経度。[Float64](../../data-types/float.md)。
|
||
- `lat2`, `lon2` — 度単位で示される点2の緯度と経度。[Float64](../../data-types/float.md)。
|
||
|
||
**返される値**
|
||
|
||
- ハバースまたは大円距離をメートルで示します。[Float64](../../data-types/float.md)。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
select h3PointDistM(-10.0 ,0.0, 10.0, 0.0) as h3PointDistM;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌──────h3PointDistM─┐
|
||
│ 2223901.039504589 │
|
||
└───────────────────┘
|
||
```
|
||
|
||
## h3PointDistKm
|
||
|
||
緯度/経度ペアの間の「大円」または「ハバース」距離をキロメートルで返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3PointDistKm(lat1, lon1, lat2, lon2)
|
||
```
|
||
|
||
**引数**
|
||
|
||
- `lat1`, `lon1` — 度単位で示される点1の緯度と経度。[Float64](../../data-types/float.md)。
|
||
- `lat2`, `lon2` — 度単位で示される点2の緯度と経度。[Float64](../../data-types/float.md)。
|
||
|
||
**返される値**
|
||
|
||
- ハバースまたは大円距離をキロメートルで示します。[Float64](../../data-types/float.md)。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
select h3PointDistKm(-10.0 ,0.0, 10.0, 0.0) as h3PointDistKm;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌─────h3PointDistKm─┐
|
||
│ 2223.901039504589 │
|
||
└───────────────────┘
|
||
```
|
||
|
||
## h3PointDistRads
|
||
|
||
緯度/経度ペアの間の「大円」または「ハバース」距離をラジアンで返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3PointDistRads(lat1, lon1, lat2, lon2)
|
||
```
|
||
|
||
**引数**
|
||
|
||
- `lat1`, `lon1` — 度単位で示される点1の緯度と経度。[Float64](../../data-types/float.md)。
|
||
- `lat2`, `lon2` — 度単位で示される点2の緯度と経度。[Float64](../../data-types/float.md)。
|
||
|
||
**返される値**
|
||
|
||
- ハバースまたは大円距離をラジアンで示します。[Float64](../../data-types/float.md)。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
select h3PointDistRads(-10.0 ,0.0, 10.0, 0.0) as h3PointDistRads;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌────h3PointDistRads─┐
|
||
│ 0.3490658503988659 │
|
||
└────────────────────┘
|
||
```
|
||
|
||
## h3GetRes0Indexes
|
||
|
||
解像度0のすべてのH3インデックスの配列を返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3GetRes0Indexes()
|
||
```
|
||
|
||
**返される値**
|
||
|
||
- 解像度0のすべてのH3インデックスの配列。[Array](../../data-types/array.md)([UInt64](../../data-types/int-uint.md))。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
select h3GetRes0Indexes as indexes ;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌─indexes─────────────────────────────────────┐
|
||
│ [576495936675512319,576531121047601151,....]│
|
||
└─────────────────────────────────────────────┘
|
||
```
|
||
|
||
## h3GetPentagonIndexes
|
||
|
||
指定された解像度でのすべての五角形H3インデックスを返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3GetPentagonIndexes(resolution)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `resolution` — インデックスの解像度。範囲: `[0, 15]`。[UInt8](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
- すべての五角形H3インデックスの配列。[Array](../../data-types/array.md)([UInt64](../../data-types/int-uint.md))。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3GetPentagonIndexes(3) AS indexes;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌─indexes────────────────────────────────────────────────────────┐
|
||
│ [590112357393367039,590464201114255359,590816044835143679,...] │
|
||
└────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
## h3Line
|
||
|
||
提供された二つのインデックス間のインデックスの線を返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3Line(start,end)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `start` — 開始点を表す六角形のインデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
- `end` — 終了点を表す六角形のインデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
提供された二つのインデックス間のインデックスの線を表すH3インデックスの配列。[Array](../../data-types/array.md)([UInt64](../../data-types/int-uint.md))。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3Line(590080540275638271,590103561300344831) as indexes;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌─indexes────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||
│ [590080540275638271,590080471556161535,590080883873021951,590106516237844479,590104385934065663,590103630019821567,590103561300344831] │
|
||
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
## h3Distance
|
||
|
||
提供された二つのインデックス間のグリッドセルでの距離を返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3Distance(start,end)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `start` — 開始点を表す六角形のインデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
- `end` — 終了点を表す六角形のインデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
- グリッドセルの数。[Int64](../../data-types/int-uint.md)。
|
||
|
||
距離の計算が失敗した場合、負の数を返します。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3Distance(590080540275638271,590103561300344831) as distance;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌─distance─┐
|
||
│ 7 │
|
||
└──────────┘
|
||
```
|
||
|
||
## h3HexRing
|
||
|
||
指定されたoriginのh3Indexを中心とする六角形のリングのインデックスをkの長さで返します。
|
||
|
||
五角形の歪みがなかった場合、0を返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3HexRing(index, k)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `index` — 起点を表す六角形のインデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
- `k` — 距離。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
- H3インデックスの配列。[Array](../../data-types/array.md)([UInt64](../../data-types/int-uint.md))。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3HexRing(590080540275638271, toUInt16(1)) AS hexRing;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌─hexRing─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||
│ [590080815153545215,590080471556161535,590080677714591743,590077585338138623,590077447899185151,590079509483487231] │
|
||
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
## h3GetUnidirectionalEdge
|
||
|
||
提供された始点と終点に基づいて一方向エッジのH3インデックスを返し、エラーの場合は0を返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3GetUnidirectionalEdge(originIndex, destinationIndex)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `originIndex` — 始点の六角形インデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
- `destinationIndex` — 終点の六角形インデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
- 一方向エッジの六角形インデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3GetUnidirectionalEdge(599686042433355775, 599686043507097599) as edge;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌────────────────edge─┐
|
||
│ 1248204388774707199 │
|
||
└─────────────────────┘
|
||
```
|
||
|
||
## h3UnidirectionalEdgeIsValid
|
||
|
||
提供されたH3インデックスが有効な一方向エッジインデックスであるかどうかを判断します。一方向エッジである場合は1を、それ以外の場合は0を返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3UnidirectionalEdgeisValid(index)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `index` — 六角形のインデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
- 1 — H3インデックスが有効な一方向エッジです。[UInt8](../../data-types/int-uint.md)。
|
||
- 0 — H3インデックスが有効な一方向エッジではありません。[UInt8](../../data-types/int-uint.md)。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3UnidirectionalEdgeIsValid(1248204388774707199) as validOrNot;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌─validOrNot─┐
|
||
│ 1 │
|
||
└────────────┘
|
||
```
|
||
|
||
## h3GetOriginIndexFromUnidirectionalEdge
|
||
|
||
一方向エッジ H3インデックスから始点の六角形インデックスを返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3GetOriginIndexFromUnidirectionalEdge(edge)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `edge` — 一方向エッジを表す六角形のインデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
- 始点の六角形インデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3GetOriginIndexFromUnidirectionalEdge(1248204388774707197) as origin;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌─────────────origin─┐
|
||
│ 599686042433355773 │
|
||
└────────────────────┘
|
||
```
|
||
|
||
## h3GetDestinationIndexFromUnidirectionalEdge
|
||
|
||
一方向エッジ H3インデックスから終点の六角形インデックスを返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3GetDestinationIndexFromUnidirectionalEdge(edge)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `edge` — 一方向エッジを表す六角形のインデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
- 終点の六角形インデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3GetDestinationIndexFromUnidirectionalEdge(1248204388774707197) as destination;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌────────destination─┐
|
||
│ 599686043507097597 │
|
||
└────────────────────┘
|
||
```
|
||
|
||
## h3GetIndexesFromUnidirectionalEdge
|
||
|
||
指定された一方向エッジH3インデックスから始点および終点の六角形インデックスを返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3GetIndexesFromUnidirectionalEdge(edge)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `edge` — 一方向エッジを表す六角形のインデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
始点と終点のインデックスを含むタプル`tuple(origin,destination)`:
|
||
|
||
- `origin` — 始点の六角形インデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
- `destination` — 終点の六角形インデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
入力が有効でない場合は`(0,0)`を返します。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3GetIndexesFromUnidirectionalEdge(1248204388774707199) as indexes;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌─indexes─────────────────────────────────┐
|
||
│ (599686042433355775,599686043507097599) │
|
||
└─────────────────────────────────────────┘
|
||
```
|
||
|
||
## h3GetUnidirectionalEdgesFromHexagon
|
||
|
||
提供されたH3インデックスからのすべての一方向エッジを提供します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3GetUnidirectionalEdgesFromHexagon(index)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `index` — 一方向エッジを表す六角形のインデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
それぞれの一方向エッジを表すH3インデックスの配列。[Array](../../data-types/array.md)([UInt64](../../data-types/int-uint.md))。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3GetUnidirectionalEdgesFromHexagon(1248204388774707199) as edges;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌─edges─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||
│ [1248204388774707199,1320261982812635135,1392319576850563071,1464377170888491007,1536434764926418943,1608492358964346879] │
|
||
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
## h3GetUnidirectionalEdgeBoundary
|
||
|
||
一方向エッジを定義する座標を返します。
|
||
|
||
**構文**
|
||
|
||
``` sql
|
||
h3GetUnidirectionalEdgeBoundary(index)
|
||
```
|
||
|
||
**パラメータ**
|
||
|
||
- `index` — 一方向エッジを表す六角形のインデックス番号。[UInt64](../../data-types/int-uint.md)。
|
||
|
||
**返される値**
|
||
|
||
- `(lon, lat)`ペアの配列。[Array](../../data-types/array.md)([Float64](../../data-types/float.md), [Float64](../../data-types/float.md))。
|
||
|
||
**例**
|
||
|
||
クエリ:
|
||
|
||
``` sql
|
||
SELECT h3GetUnidirectionalEdgeBoundary(1248204388774707199) as boundary;
|
||
```
|
||
|
||
結果:
|
||
|
||
``` text
|
||
┌─boundary────────────────────────────────────────────────────────────────────────┐
|
||
│ [(37.42012867767779,-122.03773496427027),(37.33755608435299,-122.090428929044)] │
|
||
└─────────────────────────────────────────────────────────────────────────────────┘
|
||
```
|