Lindorm GanosBase 時空間サービスは、H3 グリッドにおける効率的な空間分析とクエリのための H3 関数を提供します。これらの関数を使用して H3 インデックスを処理することで、インデックスタイプの変換、セル間の関係のクエリ、セル解像度のクエリ、およびセル間の距離の計算を行うことができます。このトピックでは、Lindorm GanosBase 時空間サービスでサポートされているすべての H3 関数について説明します。
エンジンとバージョン
H3 関数は、ワイドテーブルエンジン でのみ使用できます。
ワイドテーブルエンジンは、バージョン 2.6.5 以降である必要があります。 エンジンバージョンの確認方法またはアップグレード方法の詳細については、「ワイドテーブルエンジンのバージョン」および「マイナーバージョンのアップデート」をご参照ください。
重要ワイドテーブルエンジンがバージョン 2.6.5 より前で、アップグレードできない場合は、DingTalk (ID: s0s3eg3) で Lindorm テクニカルサポートにお問い合わせのうえ、アップグレードをご依頼ください。
関数リスト
次の表は、Lindorm GanosBase でサポートされている H3 関数の一覧です。
関数カテゴリ | 関数 | 説明 |
インポートと変換 | 経度と緯度のペアまたは点座標を、指定された解像度の H3 グリッドエンコーディングに変換します。 | |
LONG 型の H3 グリッドエンコーディングを、対応する STRING 型に変換します。 | ||
STRING 型の H3 グリッドエンコーディングを、対応する LONG 型に変換します。 | ||
指定された解像度で、ポリゴンオブジェクトの H3 グリッドエンコーディングの配列を出力します。 | ||
エクスポート | 指定された H3 グリッドのポリゴン境界を出力します。 | |
グリッド検証 | 入力された H3 グリッドエンコーディングが有効かどうかを検証します。 | |
入力された H3 グリッドエンコーディングの解像度を返します。 | ||
2 つの H3 グリッドが空間的に隣接しているかどうかを検証します。隣接している場合は | ||
H3Cells 配列 (H3 グリッドエンコーディングの配列) が、指定された H3 グリッドを含むかどうかを検証します。 | ||
グリッド操作 | H3 グリッドエンコーディングと指定された解像度を入力として受け取り、指定された解像度の親グリッドのエンコーディングを返します。 | |
指定された解像度における、H3 グリッドの子グリッドのエンコーディングを返します。 | ||
H3 グリッドクエリ | 2 つの H3 グリッド間のパスを取得します。 | |
グリッド距離 k を入力として受け取り、中心グリッドから距離 k 以内にあるすべての H3 グリッドエンコーディングの配列を返します。 | ||
距離計算 | 2D 平面上で、指定された 2 つの H3 グリッドのセントロイド間のユークリッド距離を返します。 | |
WGS84 座標系で、指定された 2 つの H3 グリッドのセントロイド間の球面距離を返します。 |
インポートと変換
H3
経度と緯度のペアまたはポイントを、指定された解像度の H3 グリッドエンコーディングに変換します。
構文
Long H3(Point p)
Long H3(Double lng, Double lat)
Long H3(Point p, Int resolution)
Long H3(Double lng, Double lat, Int resolution)パラメーター
パラメーター | 説明 |
p | ポイント。 データ型は POINT です。 |
lng | 経度。 データ型は DOUBLE です。 |
lat | 緯度。 データ型は DOUBLE です。 |
resolution | 解像度。 データ型は INT です。 値の範囲は 0~15 です。 デフォルト値は 15 です。 |
例
SELECT H3(128.2, 20.5) AS H3Cell;
SELECT H3(128.2, 20.5, 15) AS H3Cell;
SELECT H3(ST_MakePoInt(128.2, 20.5)) AS H3Cell;
SELECT H3(ST_MakePoInt(128.2, 20.5),15) AS H3Cell;上記のステートメントは、同じ結果を返します:
+--------------------+
| H3Cell |
+--------------------+
| 645317832955184368 |
+--------------------+H3_H3ToString
H3 グリッドエンコーディングを LONG 型から STRING 型に変換します。 入力が NULL または無効な H3 グリッドエンコーディングの場合、この関数は空文字列を返します。
構文
String H3_H3ToString(Long H3Cell)パラメーター
パラメーター | 説明 |
H3Cell | H3 グリッドエンコーディング。 データ型は LONG です。 |
例
例 1:H3 グリッドエンコーディングを LONG 型から STRING 型に変換します。
SELECT H3_H3ToString(599686042433355775) AS H3Address;結果:
+-----------------+ | H3Address | +-----------------+ | 85283473fffffff | +-----------------+例 2:入力が有効かどうかを検証します。 入力が NULL または無効なグリッドエンコーディングの場合、空文字列が返されます。
-- 無効なグリッドコードを入力 SELECT H3_H3ToString(0) AS H3Address; -- 入力がNULLの場合 SELECT H3_H3ToString(NULL) AS H3Address;結果:
+-----------+ | H3Address | +-----------+ | | +-----------+
H3_StringToH3
H3 グリッドエンコーディングを STRING 型から LONG 型に変換します。 入力が空文字列または無効な H3 グリッド文字列の場合、この関数は -1 を返します。
構文
Long H3_StringToH3(string H3Cell)パラメーター
パラメーター | 説明 |
H3Cell | H3 グリッドエンコーディング。 データ型は STRING です。 |
例
例 1:STRING 型の H3 グリッドエンコーディングを入力し、LONG 型に変換します。
SELECT H3_StringToH3('85283473fffffff') AS H3Cell;結果:
+--------------------+ | H3Cell | +--------------------+ | 599686042433355775 | +--------------------+例 2:入力が有効かどうかを検証します。 入力が空または無効な H3 グリッド文字列の場合、
-1が返されます。-- 無効な H3 グリッド文字列を入力 SELECT H3_StringToH3('abc') AS H3Cell; -- 空文字列を入力 SELECT H3_StringToH3('') AS H3Cell;結果:
+--------+ | H3Cell | +--------+ | -1 | +--------+
H3_PolygonToCells
指定された解像度でポリゴンの H3 インデックス配列を出力します。
構文
Set<Long> H3_PolygonToCells(Polygon poly, Int resolution)パラメーター
パラメーター | 説明 |
poly | ポリゴンオブジェクト。 データ型は POLYGON です。 |
resolution | 解像度。 データ型は INT です。 値の範囲は 0~15 です。 |
例
有効なポリゴンを入力し、H3 インデックスの解像度を 9 に指定すると、ポリゴンを表す H3 インデックス配列が返されます。
SELECT H3_PolygonToCells(ST_GeomFromText('POLYGON((-122.481889 37.826683,-122.479487 37.808548,-122.474150 37.808904,-122.476510 37.826935,-122.481889 37.826683))'), 9) AS polyCells;結果:
+--------------------------------+
| polyCells |
+--------------------------------+
| [617700171225497599, |
| 617700171167825919, |
| 617700171168874495, |
| 617700171167563775, |
| 617700171168612351, |
| 617700171168350207, |
| 617700171177525247, |
| 617700171188011007, |
| 617700171176476671] |
+--------------------------------+エクスポート
H3_CellToBoundary
指定された H3 グリッドのポリゴン境界を出力します。入力が空、NULL、または無効な H3 グリッドエンコーディングの場合、この関数は空のセットを返します。
構文
Set<Point> H3_CellToBoundary(Long H3Cell)
Set<Point> H3_CellToBoundary(string H3Cell)パラメーター
パラメーター | 説明 |
H3Cell | H3 グリッドエンコーディング。データ型は LONG または文字列です。 |
例
例 1: 文字列型の H3 グリッドエンコーディングを入力して、対応する H3 グリッドのポリゴン境界を出力します。
SELECT H3_CellToBoundary('85283473fffffff') AS boundary;返される結果:
+--------------------------------+ | boundary | +--------------------------------+ | [Point (-121.92354999630157 | | 37.42834118609436), Point | | (-122.02910130919003 | | 37.26319797461824), Point | | (-121.91508032705622 | | 37.27135586673191), | | Point (-122.090428929044 | | 37.33755608435299), Point | | (-121.86222328902491 | | 37.353926450852256), | | Point (-122.03773496427027 | | 37.42012867767779)] | +--------------------------------+例 2: LONG 型の H3 グリッドエンコーディングを入力して、対応する H3 グリッドのポリゴン境界を出力します。
SELECT H3_CellToBoundary(599686042433355775) AS boundary;返される結果:
+--------------------------------+ | boundary | +--------------------------------+ | [Point (-121.92354999630157 | | 37.42834118609436), Point | | (-122.02910130919003 | | 37.26319797461824), Point | | (-121.91508032705622 | | 37.27135586673191), | | Point (-122.090428929044 | | 37.33755608435299), Point | | (-121.86222328902491 | | 37.353926450852256), | | Point (-122.03773496427027 | | 37.42012867767779)] | +--------------------------------+例 3: 空の値、NULL、または無効な H3 グリッドエンコーディングを入力した場合、この関数は空のセットを返します。
-- 空の文字列を入力 SELECT H3_CellToBoundary('') AS boundary; -- NULL を入力 SELECT H3_CellToBoundary(NULL) AS boundary; -- 無効な H3 グリッドエンコーディングを入力 SELECT H3_CellToBoundary(0) AS boundary;返される結果:
+----------+ | boundary | +----------+ | [] | +----------+
グリッド検証
H3_IsValidCell
入力の H3 グリッドエンコーディングが有効かどうかを検証します。エンコーディングが有効な場合、この関数は true を返します。それ以外の場合は false を返します。入力が空文字列または NULL の場合、この関数は false を返します。
構文
boolean H3_IsValidCell(Long H3Cell)
boolean H3_IsValidCell(string H3Cell)パラメーター
パラメーター | 説明 |
H3Cell | H3 グリッドエンコーディングです。データ型は LONG または文字列です。 |
例
例 1:入力された H3 グリッドエンコーディングが有効かどうかを確認します。次の例は有効な入力を示しています。
-- LONG 型の H3 グリッドコードを入力します SELECT H3_IsValidCell(599686042433355775) AS isValid; -- STRING 型の H3 グリッドコードを入力します SELECT H3_IsValidCell('85283473fffffff') AS isValid;返された結果:
+---------+ | isValid | +---------+ | true | +---------+例 2:入力された H3 グリッドエンコーディングが有効かどうかを確認します。次の例は無効な入力を示しています。
-- LONG 型の H3 グリッドコードを入力します SELECT H3_IsValidCell(12) AS isValid; -- STRING 型の H3 グリッドコードを入力します SELECT H3_IsValidCell('abc') AS isValid;返された結果:
+---------+ | isValid | +---------+ | false | +---------+例 3:入力が空文字列または NULL の場合、この関数は
falseを返します。-- 入力が空です SELECT H3_IsValidCell('') AS isValid; -- NULL を入力します SELECT H3_IsValidCell(NULL) AS isValid;返された結果:
+---------+ | isValid | +---------+ | false | +---------+
H3_GetResolution
入力の H3 グリッドエンコーディングの解像度を返します。
構文
Int H3_GetResolution(Long H3Cell)
Int H3_GetResolution(string H3Cell)パラメーター
パラメーター | 説明 |
H3Cell | H3 グリッドエンコーディングです。データ型は LONG または文字列です。 |
例
例 1:LONG 形式の H3 グリッドエンコーディングを入力して、グリッドの解像度を返します。
SELECT H3_GetResolution(599686042433355775) AS resolution;返された結果:
+------------+ | resolution | +------------+ | 5 | +------------+例 2:文字列形式の H3 グリッドエンコーディングを入力して、グリッドの解像度を返します。
SELECT H3_GetResolution('85283473fffffff') AS resolution;返された結果:
+------------+ | resolution | +------------+ | 5 | +------------+
H3_AreNeighborCells
2 つの H3 グリッドが空間的に隣接しているかどうかを確認します。隣接している場合、この関数は true を返します。それ以外の場合は false を返します。いずれかのエンコーディングが無効、NULL、または 2 つのエンコーディングの解像度が異なる場合、この関数は false を返します。
H3_AreNeighborCells 関数を使用する前に、H3_GetResolution 関数を使用して H3 グリッドの解像度を取得してください。H3_GetResolution 関数の使用方法の詳細については、「H3_GetResolution」をご参照ください。
構文
boolean H3_AreNeighborCells(Long H3Cell1, Long H3Cell2)
boolean H3_AreNeighborCells(string H3Cell1, string H3Cell2)パラメーター
パラメーター | 説明 |
H3Cell1、H3Cell2 | H3 グリッドエンコーディングです。データ型は LONG または文字列です。 |
例
例 1:LONG 形式の 2 つの H3 グリッドエンコーディングを入力して、対応する H3 グリッドが空間的に隣接しているかどうかを確認します。
SELECT H3_AreNeighborCells(605546022931791871, 605546023066009599) as isNeighbor;返された結果:
+------------+ | isNeighbor | +------------+ | true | +------------+例 2:文字列形式の 2 つの H3 グリッドエンコーディングを入力して、対応する H3 グリッドが空間的に隣接しているかどうかを確認します。
SELECT H3_AreNeighborCells('86754e66fffffff','86754e64fffffff') as isNeighbor;返された結果:
+------------+ | isNeighbor | +------------+ | true | +------------+例 3:H3 グリッドエンコーディングが無効、いずれかの入力が NULL、または 2 つの H3 グリッドの解像度が異なる場合、この関数は
falseを返します。-- 入力された H3 グリッドコードは無効です SELECT H3_AreNeighborCells(1234,5678) as isNeighbor; -- いずれかの H3 グリッドコードが NULL です SELECT H3_AreNeighborCells(1234,NULL) as isNeighbor; -- 2 つの H3 グリッドの解像度が異なります:'85283473fffffff' の解像度は 5、'87283082bffffff' の解像度は 7 です SELECT H3_AreNeighborCells('85283473fffffff','87283082bffffff') as isNeighbor;返された結果:
+------------+ | isNeighbor | +------------+ | false | +------------+
H3_Contains
H3Cells セット (H3 グリッドエンコーディングのセット) が、指定の H3 グリッドを含むかどうかを確認します。
H3Cells 内のエンコーディングに対応するグリッドを A 、指定した H3 グリッドを B とします。次のいずれかの条件を満たす場合、この関数は true を返します:
AとBが同一である。BがAの子グリッドである。
H3 グリッドエンコーディングが無効または NULL の場合、この関数は false を返します。H3Cells セットに無効なグリッドエンコーディングが含まれている場合、計算時に無効なエンコーディングは無視され、エラーは報告されません。
構文
boolean H3_Contains(Set<Long> H3Cells, Long H3)パラメーター
パラメーター | 説明 |
H3Cells | H3 グリッドエンコーディングのセットです。 |
H3 | 指定した H3 グリッドエンコーディングです。 |
例
例 1:有効な H3Cells セットが、指定の H3 グリッドを含むかどうかを確認します。
SELECT H3_Contains(H3_PolygonToCells(ST_GeomFromText('POLYGON((-122.481889 37.826683,-122.479487 37.808548,-122.474150 37.808904,-122.476510 37.826935,-122.481889 37.826683))'), 9),H3(-122.47801264775836, 37.81777525405899)) AS isContained;返された結果:
+-------------+ | isContained | +-------------+ | true | +-------------+trueは、含まれていることを示します。例 2:有効な H3Cells セットが、指定の H3 グリッドを含むかどうかを確認します。
SELECT H3_Contains(H3_PolygonToCells(ST_GeomFromText('POLYGON((-122.481889 37.826683,-122.479487 37.808548,-122.474150 37.808904,-122.476510 37.826935,-122.481889 37.826683))'), 9), 605546022931791871) AS isContained;返された結果:
+-------------+ | isContained | +-------------+ | false | +-------------+falseは、包含関係が存在しないことを示します。例 3:入力の H3 グリッドエンコーディングが無効または NULL の場合、この関数は
falseを返します。-- 入力された H3 グリッドコードは NULL です SELECT H3_Contains(H3_PolygonToCells(ST_GeomFromText('POLYGON((-122.481889 37.826683,-122.479487 37.808548,-122.474150 37.808904,-122.476510 37.826935,-122.481889 37.826683))'), 9), NULL) AS isContained; -- 入力された H3 グリッドコードは無効です SELECT H3_Contains(H3_PolygonToCells(ST_GeomFromText('POLYGON((-122.481889 37.826683,-122.479487 37.808548,-122.474150 37.808904,-122.476510 37.826935,-122.481889 37.826683))'), 9), 1233453435457) AS isContained;返された結果:
+-------------+ | isContained | +-------------+ | false | +-------------+
グリッド操作
H3_CellToParent
H3 グリッドエンコーディングと指定のレベルを引数に取り、そのレベルにおける親グリッドのエンコーディングを返します。
入力グリッドエンコーディングが無効な場合、または入力レベルが現在のエンコーディングのレベルより下位の場合、この関数は -1 または空の文字列を返します。 指定レベルが現在のグリッドのレベルと同じ場合、グリッド自体を返します。
H3 グリッドでは、レベル番号が大きいほど下位のレベルを示します。 たとえば、レベル 5 はレベル 0 の子です。 グリッドのレベルをクエリするには、H3_GetResolution 関数を使用します。 詳細については、「H3_GetResolution」をご参照ください。
構文
Long H3_CellToParent(Long H3Cell, Int resolution)パラメーター
パラメーター | 説明 |
H3Cell | H3 グリッドエンコーディング。 型は LONG です。 |
resolution | 指定するグリッドレベル。 値は [0, H3Cell のレベル] の範囲内である必要があります。 たとえば、H3Cell のレベルが 5 の場合、resolution の値は [0, 5] の範囲内である必要があります。 |
例
例 1:LONG 型の H3 グリッドエンコーディングを入力し、レベル 0 の親グリッドのエンコーディングを返します。
SELECT H3_CellToParent(599686042433355775, 0) AS parent;返された結果:
+--------------------+ | parent | +--------------------+ | 577199624117288959 | +--------------------+例 2:指定の H3 グリッドコードに対し、レベル 5 の親グリッドのグリッドコードを返します。
SELECT H3_CellToParent(599686042433355775, 5) AS parent;返された結果:
+--------------------+ | parent | +--------------------+ | 599686042433355775 | +--------------------+例 3:グリッドエンコーディングが無効または NULL の場合、あるいは入力レベルが現在のエンコーディングのレベルより下位または NULL の場合、この関数は
-1を返します。-- 入力グリッドコードは無効です SELECT H3_CellToParent(123, 5) AS parent; -- 入力解像度は現在のコードの子です SELECT H3_CellToParent(599686042433355775, 9) AS parent; -- 入力解像度は NULL です SELECT H3_CellToParent(599686042433355775, NULL) AS parent; -- グリッドコードと解像度の両方が NULL です SELECT H3_CellToParent(NULL, NULL) AS parent;返された結果:
+--------+ | parent | +--------+ | -1 | +--------+
H3_CellToChildren
H3 グリッドについて、指定レベルのすべての子グリッドのエンコーディング配列を返します。
入力グリッドエンコーディングが無効な場合、または入力レベルが現在のエンコーディングのレベルより上位か同じレベルである場合、この関数は空の配列を返します。
H3 グリッドでは、レベル番号が大きいほど下位のレベルを示します。 たとえば、レベル 5 はレベル 0 の子です。 グリッドのレベルをクエリするには、H3_GetResolution 関数を使用します。 詳細については、「H3_GetResolution」をご参照ください。
構文
Set<Long> H3_CellToChildren(Long H3Cell, Int resolution)
Set<String> H3_CellToChildren(string H3Cell, Int resolution)パラメーター
パラメーター | 説明 |
H3Cell | H3 グリッドエンコーディング。 型は LONG または STRING です。 |
resolution | 指定するグリッドレベル。 値は (H3Cell のレベル, 15] の範囲内である必要があります。 たとえば、H3Cell のレベルが 5 の場合、resolution の値は (5, 15] の範囲内である必要があります。 |
例
例 1:LONG 型の H3 グリッドエンコーディングを入力し、レベル 6 のすべての子グリッドのエンコーディングを返します。
SELECT H3_CellToChildren(599686042433355775, 6) AS children;返された結果:
+--------------------------------+ | children | +--------------------------------+ | [604189641121202175, | | 604189641255419903, | | 604189641389637631, | | 604189641523855359, | | 604189641658073087, | | 604189641792290815, | | 604189641926508543] | +--------------------------------+例 2:STRING 型の H3 グリッドエンコーディングを入力し、レベル 6 のすべての子グリッドのエンコーディングを返します。
SELECT H3_CellToChildren('85283473fffffff', 6) AS children;返された結果:
+--------------------------------+ | children | +--------------------------------+ | [86283470fffffff, | | 862834727ffffff, | | 862834737ffffff, | | 862834707ffffff, | | 862834717ffffff, | | 86283471fffffff, | | 86283472fffffff] | +--------------------------------+例 3:グリッドエンコーディングが無効な場合、または指定レベルが現在のエンコーディングのレベルより上位か同じである場合、この関数は空の配列を返します。
-- 入力グリッドコードは無効です SELECT H3_CellToChildren(0,15) AS children; -- 指定された解像度は現在のコードの親です SELECT H3_CellToChildren('85283473fffffff', 3) AS children; -- 指定された解像度が現在のコードの解像度と等しい SELECT H3_CellToChildren('85283473fffffff', 5) AS children;返された結果:
+----------+ | children | +----------+ | [] | +----------+
グリッドクエリ
H3_GridPathCells
指定された2つの H3 グリッド間のパスを H3 グリッドの配列として返します。 パスには、始点と終点の H3 グリッドが含まれます。 入力 H3 グリッドエンコーディングが無効な場合、この関数は空の配列を返します。 2つの入力エンコーディングの解像度が異なる場合、この関数は空の配列を返します。
構文
Set<Long> H3_GridPathCells(Long startCell, Long endCell)
Set<String> H3_GridPathCells(String startCell, String endCell)パラメーター
パラメーター | 説明 |
startCell | 始点の H3 グリッドエンコーディング。 型は LONG または STRING です。 説明 startCell と endCell は同じ型である必要があります。 |
endCell | 終点の H3 グリッドエンコーディング。 型は LONG または STRING です。 説明 endCell と startCell は同じ型である必要があります。 |
例
例 1:2つの H3 グリッドエンコーディングを入力し、2つのグリッド間のパスを返します。
SELECT H3_GridPathCells(H3(123.1, 25.1, 8),H3(123.2, 25.2, 8)) AS pathCell;返された結果:
+--------------------------------+ | pathCell | +--------------------------------+ | [613820806174081023, | | 613820806136332287, | | 613820806132137983, | | 613820806325075967, | | 613820789795323903, | | 613820789791129599, | | 613820789942124543, | | 613820806163595263, | | 613820806327173119, | | 613820806314590207, | | 613820789986164735, | | 613820789981970431, | | 613820789944221695, | | 613820789940027391, | | 613820789969387519, | | 613820789965193215, | | 613820789709340671, | | 613820789705146367] | +--------------------------------+例 2:入力 H3 グリッドエンコーディングが無効な場合、この関数は空の配列を返します。
SELECT H3_GridPathCells(587769229395099647, 123) as pathCell;返された結果:
+----------+ | pathCell | +----------+ | [] | +----------+例 3:2つの入力グリッドエンコーディングのレベルが異なる場合、この関数は空の配列を返します。
-- 2 つのグリッドの解像度が異なります: 587769229395099647 の解像度は 2、599686042433355775 の解像度は 5 です SELECT H3_GridPathCells(587769229395099647, 599686042433355775) as pathCell;返された結果:
+----------+ | pathCell | +----------+ | [] | +----------+
H3_GridDisk
H3 グリッドエンコーディングとグリッド距離 k を入力として、指定グリッドから距離 k 以内にある、同じレベルのすべての H3 グリッドエンコーディングの配列を返します。 たとえば、入力グリッドが A で k=1 の場合、この関数はグリッド A とそれを取り囲むリング状のグリッドを返します。 k=2 の場合、グリッド A とそれを取り囲む2つのリング状のグリッドを返します。
入力 H3 グリッドエンコーディングが NULL または無効な場合、この関数は空の配列を返します。 入力グリッド距離 k が 0 の場合、グリッド自体を返します。
構文
Set<Long> H3_GridDisk(Long H3Cell, Int k)
Set<String> H3_GridDisk(String H3Cell, Int k)パラメーター
パラメーター | 説明 |
H3Cell | H3 グリッドエンコーディング。 型は LONG または STRING です。 |
k | グリッド距離。 |
例
例 1:中心グリッドから距離 1 以内にあるすべてのグリッドエンコーディングを返します。
SELECT H3_GridDisk(599686042433355775, 1) AS grid;返された結果:
+--------------------------------+ | grid | +--------------------------------+ | [599686015589810175, | | 599686014516068351, | | 599686038138388479, | | 599686042433355775, | | 599686044580839423, | | 599686043507097599, | | 599686030622195711] | +--------------------------------+例 2:距離 0 を指定して、グリッド自体を返します。
SELECT H3_GridDisk(599686042433355775, 0) AS grid;返された結果:
+----------------------+ | grid | +----------------------+ | [599686042433355775] | +----------------------+例 3:入力 H3 グリッドが NULL または無効な場合、この関数は空の配列を返します。
-- 入力 H3 グリッドコードは NULL です SELECT H3_GridDisk(NULL, 0) AS grid; -- 入力 H3 グリッドコードは無効です SELECT H3_GridDisk(123456, 0) AS grid;返された結果:
+------+ | grid | +------+ | [] | +------+
距離計算
H3_Distance
2D 平面上で、指定された2つの H3 グリッドの重心間のユークリッド距離を返します。 入力 H3 グリッドエンコーディングが NULL または無効な場合、または 2つのグリッドのレベルが異なる場合、この関数は -1 を返します。
構文
BigDecimal H3_Distance(Long startCell, Long endCell)
BigDecimal H3_Distance(String startCell, String endCell)パラメーター
パラメーター | 説明 |
startCell | 始点の H3 グリッドエンコーディング。 型は LONG または STRING です。 説明 startCell と endCell は同じ型である必要があります。 |
endCell | 終点の H3 グリッドエンコーディング。 型は LONG または STRING です。 説明 endCell と startCell は同じ型である必要があります。 |
例
例 1:LONG 型の 2つの H3 グリッドエンコーディングを入力し、2D 平面上のグリッド重心間のユークリッド距離を返します。
SELECT H3_distance(587769229395099647, 587026509290536959) as distance;返された結果:
+-------------------+ | distance | +-------------------+ | 4.489061432072522 | +-------------------+例 2:STRING 型の 2つの H3 グリッドエンコーディングを入力し、2D 平面上のグリッド重心間のユークリッド距離を返します。
SELECT H3_distance('825897fffffffff','8282cffffffffff') as distance;返された結果:
+-------------------+ | distance | +-------------------+ | 4.489061432072522 | +-------------------+例 3:入力 H3 グリッドエンコーディングが NULL または無効な場合、または 2つのグリッドのレベルが異なる場合、この関数は
-1を返します。-- 入力 H3 グリッドコードは無効です SELECT H3_distance(587769229395099647, 345) AS distance; -- 入力 H3 グリッドコードは NULL です SELECT H3_distance(587769229395099647, NULL) AS distance; -- 2 つの H3 グリッドの解像度が異なります: 587769229395099647 の解像度は 2、599686042433355775 の解像度は 5 です SELECT H3_distance(587769229395099647, 599686042433355775) AS distance;返された結果:
+----------+ | distance | +----------+ | -1 | +----------+
H3_DistanceSphere
WGS84 座標系において、指定された2つの H3 グリッドの重心間の球面距離をメートル (m) 単位で返します。 入力 H3 グリッドエンコーディングが NULL または無効な場合、または 2つのグリッドのレベルが異なる場合、この関数は -1 を返します。
構文
BigDecimal H3_DistanceSphere(Long startCell, Long endCell)
BigDecimal H3_DistanceSphere(String startCell, String endCell)パラメーター
パラメーター | 説明 |
startCell | 始点の H3 グリッドエンコーディング。 型は LONG または STRING です。 説明 startCell と endCell は同じ型である必要があります。 |
endCell | 終点の H3 グリッドエンコーディング。 型は LONG または STRING です。 説明 endCell と startCell は同じ型である必要があります。 |
例
例 1:LONG 型の 2つの H3 グリッドエンコーディングを入力し、WGS84 座標系でグリッド重心間の球面距離を返します。
SELECT H3_DistanceSphere(587769229395099647, 587026509290536959) as distance;返された結果:
+--------------------+ | distance | +--------------------+ | 497180.06581361144 | +--------------------+例 2:STRING 型の 2つの H3 グリッドエンコーディングを入力し、WGS84 座標系でグリッド重心間の球面距離を返します。
SELECT H3_DistanceSphere('825897fffffffff','8282cffffffffff') as distance;返された結果:
+--------------------+ | distance | +--------------------+ | 497180.06581361144 | +--------------------+例 3:入力 H3 グリッドエンコーディングが NULL または無効な場合、または 2つのグリッドのレベルが異なる場合、この関数は
-1を返します。-- 入力 H3 グリッドコードは無効です SELECT H3_DistanceSphere(587769229395099647, 345) AS distance; -- 入力 H3 グリッドコードは NULL です SELECT H3_DistanceSphere(587769229395099647, NULL) AS distance; -- 2 つのグリッドの解像度が異なります: 587769229395099647 の解像度は 2、599686042433355775 の解像度は 5 です SELECT H3_DistanceSphere(587769229395099647, 599686042433355775) AS distance;返された結果:
+----------+ | distance | +----------+ | -1 | +----------+