Lindorm GanosBase が提供する H3 関数を使用して、H3 グリッドに基づいて空間データを効率的に分析またはクエリできます。これらの H3 関数は、インデックスタイプの変換、セル間の関係のクエリ、セルの解像度のクエリ、セル間の距離の計算など、H3 インデックスの処理に役立ちます。このトピックでは、Lindorm GanosBase でサポートされているすべての H3 関数について説明します。
適用可能なエンジンとバージョン
このトピックで説明する H3 関数は、LindormTable にのみ適用されます。
このトピックで説明する H3 関数は、LindormTable 2.6.5 以降のバージョンでサポートされています。 LindormTable のバージョンを表示またはアップグレードする方法の詳細については、「LindormTable のリリースノート」および「Lindorm インスタンスのマイナーエンジンバージョンをアップグレードする」をご参照ください。
重要Lindorm インスタンスの LindormTable バージョンが 2.6.5 より前でアップグレードできない場合は、テクニカルサポート(DingTalk ID: s0s3eg3)にお問い合わせください。
関数
次の表に、Lindorm GanosBase でサポートされている H3 関数を示します。
カテゴリ | 関数 | 説明 |
データのインポートと変換 | 緯度/経度のペアまたは座標点を、指定された解像度の H3 インデックスに変換します。 | |
H3 インデックスのデータ型を LONG から STRING に変換します。 | ||
H3 インデックスのデータ型を STRING から LONG に変換します。 | ||
指定された解像度でポリゴンの H3 インデックス配列を出力します。 | ||
データのエクスポート | 指定された H3 セルのポリゴン境界を出力します。 | |
セルの判定 | 入力 H3 インデックスが有効かどうかを判定します。 | |
入力 H3 インデックスの解像度を返します。 | ||
2 つの H3 セルが空間的に隣接しているかどうかを判定します。 2 つのセルが隣接している場合は、 | ||
指定された H3Cells オブジェクトによって示されるセルに、指定された H3 セルが含まれているかどうかを判定します。 | ||
H3 セル操作 | 指定された解像度で、指定された H3 セルの親セルの H3 インデックスを返します。 | |
指定された解像度で、指定された H3 セルの子セルの H3 インデックスを返します。 | ||
H3 セルに関連するクエリ | 2 つの H3 セル間のパスを取得します。 | |
中心セルからの距離が指定された距離 k 未満のすべてのセルの H3 インデックスを返します。 | ||
距離計算 | 指定された 2 つの H3 セルの中心点間の 2 次元ユークリッド距離を返します。 | |
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 データ型の H3 インデックスの解像度。有効な値: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 に変換します。入力 H3 インデックスが NULL または無効な場合、空の文字列が返されます。
構文
String H3_H3ToString(Long H3Cell)パラメーター
パラメーター | 説明 |
H3Cell | LONG データ型の H3 インデックス。 |
例
例 1:H3 インデックスのデータ型を LONG から STRING に変換します。
SELECT H3_H3ToString(599686042433355775) AS H3Address;次の結果が返されます。
+-----------------+ | H3Address | +-----------------+ | 85283473fffffff | +-----------------+例 2:入力 H3 インデックスが有効かどうかを確認します。入力 H3 インデックスが NULL または無効な場合、空の文字列が返されます。
-- 無効な H3 インデックスを入力します。 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 | STRING データ型の H3 インデックス。 |
例
例 1:H3 インデックスのデータ型を STRING から LONG に変換します。
SELECT H3_StringToH3('85283473fffffff') AS H3Cell;次の結果が返されます。
+--------------------+ | H3Cell | +--------------------+ | 599686042433355775 | +--------------------+例 2:入力 H3 インデックスが有効かどうかを確認します。入力 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 | H3 インデックスの解像度。有効な値: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 セルのポリゴン境界を出力します。入力 H3 インデックスが空の文字列、NULL、または無効な場合、空の配列が返されます。
構文
Set<Point> H3_CellToBoundary(Long H3Cell)
Set<Point> H3_CellToBoundary(string H3Cell)パラメーター
パラメーター | 説明 |
H3Cell | LONG または STRING データ型の H3 インデックス。 |
例
例 1:STRING データ型の入力 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 インデックスが有効かどうかを判定します。入力 H3 インデックスが有効な場合は、true が返されます。それ以外の場合は、false が返されます。入力 H3 インデックスが空の文字列または NULL の場合は、false が返されます。
構文
boolean H3_IsValidCell(Long H3Cell)
boolean H3_IsValidCell(string H3Cell)パラメーター
パラメーター | 説明 |
H3Cell | LONG 型または STRING 型の H3 インデックス。 |
例
例 1:入力 H3 インデックスが有効かどうかを確認します。次のサンプルステートメントの H3 インデックスは有効です。
-- LONG 型の H3 インデックスを入力します。 SELECT H3_IsValidCell(599686042433355775) AS isValid; -- STRING 型の H3 インデックスを入力します。 SELECT H3_IsValidCell('85283473fffffff') AS isValid;次の結果が返されます。
+---------+ | isValid | +---------+ | true | +---------+例 2:入力 H3 インデックスが有効かどうかを確認します。次のサンプルステートメントの H3 インデックスは無効です。
-- LONG 型の H3 インデックスを入力します。 SELECT H3_IsValidCell(12) AS isValid; -- STRING 型の H3 インデックスを入力します。 SELECT H3_IsValidCell('abc') AS isValid;次の結果が返されます。
+---------+ | isValid | +---------+ | false | +---------+例 3:空の文字列または NULL を H3 インデックスとして入力します。
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 | LONG 型または STRING 型の H3 インデックス。 |
例
例 1:LONG 型の入力 H3 インデックスの解像度を返します。
SELECT H3_GetResolution(599686042433355775) AS resolution;次の結果が返されます。
+------------+ | resolution | +------------+ | 5 | +------------+例 2:STRING 型の入力 H3 インデックスの解像度を返します。
SELECT H3_GetResolution('85283473fffffff') AS resolution;次の結果が返されます。
+------------+ | resolution | +------------+ | 5 | +------------+
H3_AreNeighborCells
この関数は、2 つの H3 セルが空間的に隣接しているかどうかを判定します。2 つのセルが隣接している場合は、true が返されます。それ以外の場合は、false が返されます。指定された H3 インデックスのいずれかが NULL または無効である場合、または指定された H3 インデックスの解像度が異なる場合は、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 | LONG 型または STRING 型の H3 インデックス。 |
例
例 1:LONG 型の 2 つの H3 インデックスを入力し、2 つの H3 インデックスで表される H3 セルが空間的に隣接しているかどうかを判定します。
SELECT H3_AreNeighborCells(605546022931791871, 605546023066009599) as isNeighbor;次の結果が返されます。
+------------+ | isNeighbor | +------------+ | true | +------------+例 2:STRING 型の 2 つの H3 インデックスを入力し、2 つの H3 インデックスで表される H3 セルが空間的に隣接しているかどうかを判定します。
SELECT H3_AreNeighborCells('86754e66fffffff','86754e64fffffff') as isNeighbor;次の結果が返されます。
+------------+ | isNeighbor | +------------+ | true | +------------+例 3:無効な 2 つの H3 インデックス、NULL 値、または解像度が異なる 2 つの H3 インデックスを入力します。
false値が返されます。-- 無効な 2 つの H3 インデックスを入力します。 SELECT H3_AreNeighborCells(1234,5678) as isNeighbor; -- 入力 H3 インデックスの 1 つを NULL に設定します。 SELECT H3_AreNeighborCells(1234,NULL) as isNeighbor; -- 解像度が異なる 2 つの H3 インデックスを入力します。H3 インデックス '85283473fffffff' の解像度は 5 で、H3 インデックス '87283082bffffff' の解像度は 7 です。 SELECT H3_AreNeighborCells('85283473fffffff','87283082bffffff') as isNeighbor;次の結果が返されます。
+------------+ | isNeighbor | +------------+ | false | +------------+
H3_Contains
この関数は、指定された H3Cells オブジェクトによって示されるセルが、指定された H3 セルを含んでいるかどうかを判定します。
たとえば、指定された H3Cells オブジェクトによって示される H3 セルに、A という名前の H3 セルが含まれており、関数に B という名前の別の H3 セルが指定されているとします。この関数は、次のいずれかの条件が満たされた場合に true を返します。
AとBが同一である。BがAの子セルである。
B の H3 インデックスが無効または NULL の場合は、false が返されます。H3Cells オブジェクトの H3 インデックス配列に無効な H3 インデックスが含まれている場合、無効な H3 インデックスは無視され、エラーは報告されません。
構文
boolean H3_Contains(Set<Long> H3Cells, Long H3)パラメーター
パラメーター | 説明 |
H3Cells | H3 インデックス配列。 |
H3 | H3 インデックス。 |
例
例 1:指定された H3 セルが、有効な H3Cells オブジェクトによって示されるセルに含まれているかどうかを確認します。
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値が返されます。これは、指定された H3 セルが、有効な H3Cells オブジェクトによって示されるセルに含まれていることを示します。例 2:指定された H3 セルが、有効な H3Cells オブジェクトによって示されるセルに含まれているかどうかを確認します。
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値が返されます。これは、指定された H3 セルが、有効な H3Cells オブジェクトによって示されるセルに含まれていないことを示します。例 3:無効な H3 インデックスまたは NULL を入力します。
false値が返されます。-- NULL 値の 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), 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 セル操作
H3_CellToParent
この関数は、指定された解像度で指定された H3 セルの親セルの H3 インデックスを返します。
指定された H3 インデックスが無効であるか、指定された解像度が現在の H3 インデックスの子解像度である場合、値 -1 または空の文字列が返されます。指定された解像度が現在の H3 インデックスの解像度と同じである場合、H3 インデックスが返されます。
解像度の値が大きいほど、低いレベルの解像度を表します。たとえば、解像度 5 は解像度 0 の子解像度です。H3_GetResolution 関数を使用して、H3 セルの解像度を照会できます。詳細については、H3_GetResolution をご参照ください。
構文
Long H3_CellToParent(Long H3Cell, Int resolution)パラメーター
パラメーター | 説明 |
H3Cell | LONG データ型の H3 インデックス。 |
resolution | 指定された解像度。有効な値: (0, H3Cell 値の解像度]。たとえば、H3Cell で指定された H3 セルの解像度が 5 の場合、resolution パラメーターの値の範囲は (0, 5] です。 |
例
例 1:LONG データ型の H3 インデックスを入力し、解像度 0 で H3 インデックスによって指定されたセルのすべての親セルの H3 インデックスを返します。
SELECT H3_CellToParent(599686042433355775, 0) AS parent;次の結果が返されます。
+--------------------+ | parent | +--------------------+ | 577199624117288959 | +--------------------+例 2:STRING データ型の H3 インデックスを入力し、解像度 5 で H3 インデックスによって指定されたセルのすべての親セルの H3 インデックスを返します。
SELECT H3_CellToParent(599686042433355775, 5) AS parent;次の結果が返されます。
+--------------------+ | parent | +--------------------+ | 599686042433355775 | +--------------------+例 3:無効な H3 インデックスまたは NULL を入力するか、NULL または現在の H3 インデックスの子解像度である解像度を指定します。値
-1が返されます。-- 無効な H3 インデックスを入力します。 SELECT H3_CellToParent(123, 5) AS parent; -- 現在の H3 インデックスの子解像度である解像度を指定します。 SELECT H3_CellToParent(599686042433355775, 9) AS parent; -- NULL の解像度を指定します。 SELECT H3_CellToParent(599686042433355775, NULL) AS parent; -- NULL の H3 インデックスを入力し、NULL の解像度を指定します。 SELECT H3_CellToParent(NULL, NULL) AS parent;次の結果が返されます。
+--------+ | parent | +--------+ | -1 | +--------+
H3_CellToChildren
この関数は、指定された解像度で指定された H3 セルの子セルの H3 インデックスを返します。
指定された H3 インデックスが無効であるか、指定された解像度が親解像度または H3 インデックスの現在の解像度である場合、空の配列が返されます。
解像度の値が大きいほど、低いレベルの解像度を表します。たとえば、解像度 5 は解像度 0 の子解像度です。H3_GetResolution 関数を使用して、H3 セルの解像度を照会できます。詳細については、H3_GetResolution をご参照ください。
構文
Set<Long> H3_CellToChildren(Long H3Cell, Int resolution)
Set<String> H3_CellToChildren(string H3Cell, Int resolution)パラメーター
パラメーター | 説明 |
H3Cell | LONG または STRING データ型の H3 インデックス。 |
resolution | 指定された解像度。有効な値: (指定された H3 インデックスの解像度, 15]。たとえば、H3Cell で指定された H3 セルの解像度が 5 の場合、resolution パラメーターの値の範囲は (5, 15] です。 |
例
例 1:LONG データ型の H3 インデックスを入力し、解像度 6 で H3 インデックスによって指定されたセルのすべての子セルの H3 インデックスを返します。
SELECT H3_CellToChildren(599686042433355775, 6) AS children;次の結果が返されます。
+--------------------------------+ | children | +--------------------------------+ | [604189641121202175, | | 604189641255419903, | | 604189641389637631, | | 604189641523855359, | | 604189641658073087, | | 604189641792290815, | | 604189641926508543] | +--------------------------------+例 2:STRING データ型の H3 インデックスを入力し、解像度 6 で H3 インデックスによって指定されたセルのすべての子セルの H3 インデックスを返します。
SELECT H3_CellToChildren('85283473fffffff', 6) AS children;次の結果が返されます。
+--------------------------------+ | children | +--------------------------------+ | [86283470fffffff, | | 862834727ffffff, | | 862834737ffffff, | | 862834707ffffff, | | 862834717ffffff, | | 86283471fffffff, | | 86283472fffffff] | +--------------------------------+例 3:無効な H3 インデックスを入力するか、H3 インデックスの親解像度または現在の解像度である解像度を指定します。空の配列が返されます。
-- 無効な H3 インデックスを入力します。 SELECT H3_CellToChildren(0,15) AS children; -- H3 インデックスの親解像度である解像度を指定します。 SELECT H3_CellToChildren('85283473fffffff', 3) AS children; -- H3 インデックスの現在の解像度である解像度を指定します。 SELECT H3_CellToChildren('85283473fffffff', 5) AS children;次の結果が返されます。
+----------+ | children | +----------+ | [] | +----------+
H3 セルに関連するクエリ
H3_GridPathCells
開始セルと終了セルを含む、2 つの H3 セル間の H3 セルパスを取得します。入力 H3 インデックスが無効な場合、空の配列が返されます。指定された 2 つの H3 インデックスの解像度が異なる場合、値 null が返されます。
構文
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 です。 説明 startCell と endCell のデータ型は同じである必要があります。 |
例
例 1:2 つの H3 インデックスを入力し、2 つの H3 インデックスで示されるセル間のパスを返します。
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 つの H3 インデックスを入力します。
nullという値が返されます。-- 異なる解像度の2つのH3インデックスを入力します。H3インデックス '587769229395099647' は解像度2、H3インデックス '599686042433355775' は解像度5です。 SELECT H3_GridPathCells(587769229395099647, 599686042433355775) as pathCell;次の結果が返されます。
+----------+ | pathCell | +----------+ | null | +----------+
H3_GridDisk
この関数は、指定された中心セルからの距離が、指定された解像度で指定された距離 k 以下のすべてのセルの H3 インデックスを返します。たとえば、A という名前の中心セルを指定し、k を 1 に設定すると、セル A と A からの距離が 1 であるすべてのセルが返されます。 k を 2 に設定すると、セル A と A からの距離が 2 であるすべてのセルが返されます。
入力 H3 インデックスが無効または NULL の場合、空の配列が返されます。 k が 0 に設定されている場合、指定された中心セルが返されます。
構文
Set<Long> H3_GridDisk(Long H3Cell, Int k)
Set<String> H3_GridDisk(String H3Cell, Int k)パラメーター
パラメーター | 説明 |
H3Cell | LONG または STRING データ型の H3 インデックス。 |
k | 中心セルとの他のセル間の距離。 |
例
例 1:中心セルからの距離が 1 以下のすべてのセルの H3 インデックスを返します。
SELECT H3_GridDisk(599686042433355775, 1) AS grid;次の結果が返されます。
+--------------------------------+ | grid | +--------------------------------+ | [599686015589810175, | | 599686014516068351, | | 599686038138388479, | | 599686042433355775, | | 599686044580839423, | | 599686043507097599, | | 599686030622195711] | +--------------------------------+例 2:中心セルからの距離が 0 のすべてのセルの H3 インデックスを返します。中心セルの H3 インデックスが返されます。
SELECT H3_GridDisk(599686042433355775, 0) AS grid;次の結果が返されます。
+----------------------+ | grid | +----------------------+ | [599686042433355775] | +----------------------+例 3:無効な H3 インデックスまたは NULL を入力すると、空の配列が返されます。
-- Input an H3 index whose value is NULL. // 値が NULL の H3 インデックスを入力します。 SELECT H3_GridDisk(NULL, 0) AS grid; -- Input an invalid H3 index. // 無効な H3 インデックスを入力します。 SELECT H3_GridDisk(123456, 0) AS grid;次の結果が返されます。
+------+ | grid | +------+ | [] | +------+
距離の計算
H3_Distance
この関数は、指定された 2 つの H3 セルのセントラルポイント間の 2 次元ユークリッド距離を返します。指定された H3 インデックスのいずれかが無効または NULL であるか、指定された 2 つの H3 インデックスの解像度が異なる場合、値 -1 が返されます。
構文
Double H3_Distance(Long startCell, Long endCell)
Double H3_Distance(String startCell, String endCell)パラメーター
パラメーター | 説明 |
startCell | 開始セルの H3 インデックス。このパラメーターのデータ型は LONG または STRING です。 説明 startCell と endCell のデータ型は同じである必要があります。 |
endCell | 終了セルの H3 インデックス。このパラメーターのデータ型は LONG または STRING です。 説明 startCell と endCell のデータ型は同じである必要があります。 |
例
例 1:LONG データ型の 2 つの H3 インデックスを入力し、H3 インデックスによって指定された 2 つの H3 セルのセントラルポイント間の 2 次元ユークリッド距離を返します。
SELECT H3_distance(587769229395099647, 587026509290536959) as distance;次の結果が返されます。
+-------------------+ | distance | +-------------------+ | 4.489061432072522 | +-------------------+例 2:STRING データ型の 2 つの H3 インデックスを入力し、H3 インデックスによって指定された 2 つの H3 セルのセントラルポイント間の 2 次元ユークリッド距離を返します。
SELECT H3_distance('825897fffffffff','8282cffffffffff') as distance;次の結果が返されます。
+-------------------+ | distance | +-------------------+ | 4.489061432072522 | +-------------------+例 3:無効な H3 インデックスまたは NULL を入力するか、解像度の異なる 2 つの H3 インデックスを指定します。値
-1が返されます。-- 無効な H3 インデックスを入力します。 SELECT H3_distance(587769229395099647, 345) AS distance; -- 値が NULL の H3 インデックスを入力します。 SELECT H3_distance(587769229395099647, NULL) AS distance; -- 解像度の異なる 2 つの H3 インデックスを入力します。H3 インデックス '587769229395099647' は解像度 2 で、H3 インデックス '599686042433355775' は解像度 5 です。 SELECT H3_distance(587769229395099647, 599686042433355775) AS distance;次の結果が返されます。
+----------+ | distance | +----------+ | -1 | +----------+
H3_DistanceSphere
この関数は、WGS84 で指定された 2 つの H3 セルのセントラルポイント間の球面距離をメートル単位で返します。入力 H3 インデックスのいずれかが無効または NULL であるか、指定された H3 インデックスの解像度が異なる場合、値 -1 が返されます。
構文
Double H3_DistanceSphere(Long startCell, Long endCell)
Double H3_DistanceSphere(String startCell, String endCell)パラメーター
パラメーター | 説明 |
startCell | 開始セルの H3 インデックス。このパラメーターのデータ型は LONG または STRING です。 説明 startCell と endCell のデータ型は同じである必要があります。 |
endCell | 終了セルの H3 インデックス。このパラメーターのデータ型は LONG または STRING です。 説明 startCell と endCell のデータ型は同じである必要があります。 |
例
例 1:LONG データ型の 2 つの H3 インデックスを入力し、H3 インデックスによって指定された 2 つの H3 セルのセントラルポイント間の WGS84 での球面距離を返します。
SELECT H3_DistanceSphere(587769229395099647, 587026509290536959) as distance;次の結果が返されます。
+--------------------+ | distance | +--------------------+ | 497180.06581361144 | +--------------------+例 2:STRING データ型の 2 つの H3 インデックスを入力し、H3 インデックスによって指定された 2 つの H3 セルのセントラルポイント間の WGS84 での球面距離を返します。
SELECT H3_DistanceSphere('825897fffffffff','8282cffffffffff') as distance;次の結果が返されます。
+--------------------+ | distance | +--------------------+ | 497180.06581361144 | +--------------------+例 3:無効な H3 インデックスまたは NULL を入力するか、解像度の異なる 2 つの H3 インデックスを指定します。値
-1が返されます。-- 無効な H3 インデックスを入力します。 SELECT H3_DistanceSphere(587769229395099647, 345) AS distance; -- 値が NULL の H3 インデックスを入力します。 SELECT H3_DistanceSphere(587769229395099647, NULL) AS distance; -- 解像度の異なる 2 つの H3 インデックスを入力します。 H3 インデックス '587769229395099647' は解像度 2 で、H3 インデックス '599686042433355775' は解像度 5 です。 SELECT H3_DistanceSphere(587769229395099647, 599686042433355775) AS distance;次の結果が返されます。
+----------+ | distance | +----------+ | -1 | +----------+