如果您想要基於H3網格進行高效地空間分析或查詢,可以使用Lindorm GanosBase時空服務提供的H3函數。H3函數可以協助您輕鬆地處理H3網格編碼,例如轉換編碼類別型、查詢網格關係、查詢網格層級、計算網格之間的距離等。本文介紹Lindorm GanosBase時空服務支援的所有H3函數。
引擎與版本
函數列表
Lindorm GanosBase支援的H3函數如下表所示。
函數功能分類 | 函數 | 說明 |
匯入及轉換 | 將經緯度或座標點轉換為指定層級的H3網格編碼。 | |
將LONG類型的H3網格編碼轉換為對應的STRING類型。 | ||
將STRING類型的H3網格編碼轉換為對應的LONG類型。 | ||
輸出多邊形對象在指定層級下的H3網格編碼數組。 | ||
匯出 | 輸出指定H3網格的多邊形邊界。 | |
網格判斷 | 判斷輸入的H3網格編碼是否合法。 | |
返回輸入的H3網格編碼的層級。 | ||
判斷兩個H3網格在空間上是否鄰近,若鄰近返回 | ||
判斷H3Cells(H3網格編碼數組)中對應的網格與指定H3網格是否具備內含項目關聯性。 | ||
網格操作 | 輸入H3網格編碼及指定層級,返回在該指定層級下父網格的網格編碼。 | |
返回H3網格編碼在指定層級下的子網格的網格編碼。 | ||
H3 網格查詢 | 擷取兩個H3網格之間的路徑。 | |
指定網格距離k,返回與中心網格距離小於等於k的所有H3網格編碼數組。 | ||
距離計算 | 返回指定兩個H3網格中心點在二維平面上的歐式距離。 | |
返回指定兩個H3網格中心點在WGS84座標系下的球面距離。 |
匯入及轉換
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
將LONG類型的H3網格編碼轉換為對應的STRING類型。若輸入NULL或無效的H3網格編碼,則返回Null 字元串。
文法
String H3_H3ToString(Long H3Cell)
參數說明
參數 | 說明 |
H3Cell | H3網格編碼,類型為LONG。 |
樣本
樣本一:將LONG類型的網格編碼轉換為STRING類型。
SELECT H3_H3ToString(599686042433355775) AS H3Address;
返回結果:
+-----------------+ | H3Address | +-----------------+ | 85283473fffffff | +-----------------+
樣本二:判斷輸入是否有效,如果輸入為空白或是無效的網格編碼,則返回Null 字元串。
-- 輸入無效網格編碼 SELECT H3_H3ToString(0) AS H3Address; -- 輸入為空白 SELECT H3_H3ToString(NULL) AS H3Address;
返回結果:
+-----------+ | H3Address | +-----------+ | | +-----------+
H3_StringToH3
將STRING類型的H3網格編碼轉換為LONG類型。如果輸入Null 字元串或無效的H3網格字串,則返回-1
。
文法
Long H3_StringToH3(string H3Cell)
參數說明
參數 | 說明 |
H3Cell | H3網格編碼,類型為STRING。 |
樣本
樣本一:輸入STRING類型的H3網格編碼,轉換為LONG類型後輸出。
SELECT H3_StringToH3('85283473fffffff') AS H3Cell;
返回結果:
+--------------------+ | H3Cell | +--------------------+ | 599686042433355775 | +--------------------+
樣本二:判斷輸入是否有效,如果輸入為空白或是無效的H3網格字串,則返回
-1
。-- 輸入無效的H3網格字串 SELECT H3_StringToH3('abc') AS H3Cell; -- 輸入Null 字元串 SELECT H3_StringToH3('') AS H3Cell;
返回結果:
+--------+ | H3Cell | +--------+ | -1 | +--------+
H3_PolygonToCells
輸出多邊形對象在指定層級下的H3網格編碼數組。
文法
Set<Long> H3_PolygonToCells(Polygon poly, Int resolution)
參數說明
參數 | 說明 |
poly | 多邊形對象,類型為POLYGON。 |
resolution | 網格層級,取值範圍為[0~15]。 |
樣本
輸入合法的多邊形對象,指定H3網格層級為9,輸出該多邊形對象對應的網格編碼數組。
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或STRING。 |
樣本
樣本一:輸入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)] | +--------------------------------+
樣本二:輸入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)] | +--------------------------------+
樣本三:輸入為空白、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或STRING。 |
樣本
樣本一:判斷輸入的H3網格編碼是否合法。以下是輸入合法的樣本:
-- 輸入LONG類型的H3網格編碼 SELECT H3_IsValidCell(599686042433355775) AS isValid; -- 輸入STRING類型的H3網格編碼 SELECT H3_IsValidCell('85283473fffffff') AS isValid;
返回結果:
+---------+ | isValid | +---------+ | true | +---------+
樣本二:判斷輸入的H3網格編碼是否合法。以下是輸入不合法的樣本:
-- 輸入LONG類型的H3網格編碼 SELECT H3_IsValidCell(12) AS isValid; -- 輸入STRING類型的H3網格編碼 SELECT H3_IsValidCell('abc') AS isValid;
返回結果:
+---------+ | isValid | +---------+ | false | +---------+
樣本三:輸入為空白或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或STRING。 |
樣本
樣本一:輸入LONG格式的H3網格編碼,返回其網格層級。
SELECT H3_GetResolution(599686042433355775) AS resolution;
返回結果:
+------------+ | resolution | +------------+ | 5 | +------------+
樣本二:輸入STRING格式的H3網格編碼,返回其網格層級。
SELECT H3_GetResolution('85283473fffffff') AS resolution;
返回結果:
+------------+ | resolution | +------------+ | 5 | +------------+
H3_AreNeighborCells
判斷兩個H3網格是否在空間上鄰近,若鄰近返回true
,否則返回false
。若任意一個編碼不合法、為NULL、或兩個編碼層級不同,則返回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或STRING。 |
樣本
樣本一:輸入兩個LONG格式的H3網格編碼,判斷對應的兩個H3網格在空間上是否鄰近。
SELECT H3_AreNeighborCells(605546022931791871, 605546023066009599) as isNeighbor;
返回結果:
+------------+ | isNeighbor | +------------+ | true | +------------+
樣本二:輸入兩個STRING格式的H3網格編碼,判斷對應的兩個H3網格在空間上是否鄰近。
SELECT H3_AreNeighborCells('86754e66fffffff','86754e64fffffff') as isNeighbor;
返回結果:
+------------+ | isNeighbor | +------------+ | true | +------------+
樣本三:輸入的H3網格編碼不合法、輸入NULL,或輸入的兩個H3網格層級不同,返回
false
。-- 輸入的H3網格編碼不合法 SELECT H3_AreNeighborCells(1234,5678) as isNeighbor; -- 任意一個H3網格編碼輸入NULL SELECT H3_AreNeighborCells(1234,NULL) as isNeighbor; -- 輸入的兩個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網格編碼。 |
樣本
樣本一:判斷合法的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
,表示具備內含項目關聯性。樣本二:判斷合法的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
,表示不具備內含項目關聯性。樣本三:輸入的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
或Null 字元串。若給定的層級與當前網格一致,則返回該網格本身。
在H3網格中層級的數字越大代表層級越低,例如層級5是層級0的子級。您可以通過H3_GetResolution
函數查詢網格的層級。使用方法,請參見H3_GetResolution。
文法
Long H3_CellToParent(Long H3Cell, Int resolution)
參數說明
參數名稱 | 描述 |
H3Cell | H3網格編碼,類型為LONG。 |
resolution | 指定的網格層級,取值範圍:(0~指定的網格編碼的層級]。假設H3Cell的層級為5,則resolution的取值範圍為(0~5]。 |
樣本
樣本一:輸入類型為LONG的H3網格編碼,返回0層級下所有父網格的網格編碼。
SELECT H3_CellToParent(599686042433355775, 0) AS parent;
返回結果:
+--------------------+ | parent | +--------------------+ | 577199624117288959 | +--------------------+
樣本二:輸入類型為STRING的H3網格編碼,返回5層級下所有父網格的網格編碼。
SELECT H3_CellToParent(599686042433355775, 5) AS parent;
返回結果:
+--------------------+ | parent | +--------------------+ | 599686042433355775 | +--------------------+
樣本三:輸入的網格編碼不合法或為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 | 指定的網格層級,取值範圍:(指定的網格編碼的層級~15]。假設H3Cell的層級為5,則resolution的取值範圍為(5~15]。 |
樣本
樣本一:輸入類型為LONG的H3網格編碼,指定網格層級為6,返回在該層級下所有子網格的網格編碼。
SELECT H3_CellToChildren(599686042433355775, 6) AS children;
返回結果:
+--------------------------------+ | children | +--------------------------------+ | [604189641121202175, | | 604189641255419903, | | 604189641389637631, | | 604189641523855359, | | 604189641658073087, | | 604189641792290815, | | 604189641926508543] | +--------------------------------+
樣本二:輸入類型為STRING的H3網格編碼,指定網格層級為6,返回在該層級下所有子網格的網格編碼。
SELECT H3_CellToChildren('85283473fffffff', 6) AS children;
返回結果:
+--------------------------------+ | children | +--------------------------------+ | [86283470fffffff, | | 862834727ffffff, | | 862834737ffffff, | | 862834707ffffff, | | 862834717ffffff, | | 86283471fffffff, | | 86283472fffffff] | +--------------------------------+
樣本三:輸入的網格編碼不合法,或給定的層級為當前編碼的父級或其本身的層級,返回空數組。
-- 輸入的網格編碼不合法 SELECT H3_CellToChildren(0,15) AS children; -- 給定的層級為當前編碼的父級 SELECT H3_CellToChildren('85283473fffffff', 3) AS children; -- 給定的層級為當前編碼的層級 SELECT H3_CellToChildren('85283473fffffff', 5) AS children;
返回結果:
+----------+ | children | +----------+ | [] | +----------+
網格查詢
H3_GridPathCells
擷取兩個指定H3網格之間的H3網格路徑,包含起點及終點的兩個H3網格。如果輸入的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。 說明 endCell的類型必須與startCell保持一致。 |
樣本
樣本一:輸入兩個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] | +--------------------------------+
樣本二:輸入的H3網格編碼不合法,返回空數組。
SELECT H3_GridPathCells(587769229395099647, 123) as pathCell;
返回結果:
+----------+ | pathCell | +----------+ | [] | +----------+
樣本三:輸入的兩個網格編碼層級不同,返回
null
。-- 兩個網格編碼層級不同,587769229395099647的層級為2,599686042433355775的層級為5 SELECT H3_GridPathCells(587769229395099647, 599686042433355775) as pathCell;
返回結果:
+----------+ | pathCell | +----------+ | null | +----------+
H3_GridDisk
輸入指定H3網格編碼和網格距離k,返回該層級下與指定網格距離小於等於k的所有H3網格編碼數組。假設輸入網格為A
,指定k=1
,則返回以A為中心的外一圈網格及A網格本身;指定k=2
,則返回以A為中心的外兩圈網格及A網格本身,以此類推。
如果輸入的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的所有網格編碼。
SELECT H3_GridDisk(599686042433355775, 1) AS grid;
返回結果:
+--------------------------------+ | grid | +--------------------------------+ | [599686015589810175, | | 599686014516068351, | | 599686038138388479, | | 599686042433355775, | | 599686044580839423, | | 599686043507097599, | | 599686030622195711] | +--------------------------------+
樣本二:指定距離為0,返回網格本身。
SELECT H3_GridDisk(599686042433355775, 0) AS grid;
返回結果:
+----------------------+ | grid | +----------------------+ | [599686042433355775] | +----------------------+
樣本三:輸入的H3網格為NULL或不合法,返回空數組。
-- 輸入的H3網格編碼為NULL SELECT H3_GridDisk(NULL, 0) AS grid; -- 輸入的H3網格編碼不合法 SELECT H3_GridDisk(123456, 0) AS grid;
返回結果:
+------+ | grid | +------+ | [] | +------+
距離計算
H3_Distance
返回指定兩個H3網格中心點在二維平面上的歐式距離。如果輸入的H3網格編碼為NULL或不合法、或兩個網格的層級不同,返回-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。 說明 endCell和startCell的類型必須保持一致。 |
樣本
樣本一:輸入兩個類型為LONG的H3網格編碼,返回網格中心點在二維平面上的歐式距離。
SELECT H3_distance(587769229395099647, 587026509290536959) as distance;
返回結果:
+-------------------+ | distance | +-------------------+ | 4.489061432072522 | +-------------------+
樣本二:輸入兩個類型為STRING的H3網格編碼,返回網格中心點在二維平面上的歐式距離。
SELECT H3_distance('825897fffffffff','8282cffffffffff') as distance;
返回結果:
+-------------------+ | distance | +-------------------+ | 4.489061432072522 | +-------------------+
樣本三:輸入的H3網格編碼為NULL或不合法、或兩個網格的層級不同,返回
-1
。-- 輸入的H3網格編碼不合法 SELECT H3_distance(587769229395099647, 345) AS distance; -- 輸入的H3網格編碼為NULL SELECT H3_distance(587769229395099647, NULL) AS distance; -- 輸入的兩個H3網格層級不同,587769229395099647的層級為2,599686042433355775的層級為5 SELECT H3_distance(587769229395099647, 599686042433355775) AS distance;
返回結果:
+----------+ | distance | +----------+ | -1 | +----------+
H3_DistanceSphere
返回指定兩個H3網格中心點在WGS84座標系下的球面距離,單位為米(m)。如果輸入的H3網格編碼為NULL或不合法、或兩個網格的層級不同,返回-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。 說明 endCell和startCell的類型必須保持一致。 |
樣本
樣本一:輸入兩個類型為LONG的H3網格編碼,返回網格中心點在WGS84座標系下的球面距離。
SELECT H3_DistanceSphere(587769229395099647, 587026509290536959) as distance;
返回結果:
+--------------------+ | distance | +--------------------+ | 497180.06581361144 | +--------------------+
樣本二:輸入兩個類型為STRING的H3網格編碼,返回網格中心點在WGS84座標系下的球面距離。
SELECT H3_DistanceSphere('825897fffffffff','8282cffffffffff') as distance;
返回結果:
+--------------------+ | distance | +--------------------+ | 497180.06581361144 | +--------------------+
樣本三:輸入的H3網格編碼為NULL或不合法、或兩個網格的層級不同,返回
-1
。-- 輸入的H3網格編碼不合法 SELECT H3_DistanceSphere(587769229395099647, 345) AS distance; -- 輸入的H3網格編碼為NULL SELECT H3_DistanceSphere(587769229395099647, NULL) AS distance; -- 輸入的兩個網格層級不同,587769229395099647的層級為2,599686042433355775的層級為5 SELECT H3_DistanceSphere(587769229395099647, 599686042433355775) AS distance;
返回結果:
+----------+ | distance | +----------+ | -1 | +----------+