📣新登場!TiDB Cloud BYOC、TiDB Cloud Filesystem、PostgreSQL-compatible TiDB Cloud Starter がパブリックプレビュー中。このページは自動翻訳されたものです。原文はこちらからご覧ください。

地理空間関数



TiDB Cloud Lake は、相互補完的な 2 つの地理空間機能セットを提供します。1 つは図形の構築と解析のための PostGIS スタイルの geometry 関数、もう 1 つはグローバルな六角形インデックスのための H3 ユーティリティです。以下の表では、Snowflake のドキュメントと同様のレイアウトで、タスクごとに関数を分類しているため、適切なツールをすばやく見つけることができます。

コンストラクター

関数説明注記例
ST_MAKEGEOMPOINT / ST_GEOM_POINTPoint geometry を構築しますGEOGRAPHY のみST_MAKEGEOMPOINT(-122.35, 37.55) → POINT(-122.35 37.55)
ST_MAKEPOINT / ST_POINTPoint geography を構築しますGEOGRAPHY のみST_MAKEPOINT(-122.35, 37.55) → POINT(-122.35 37.55)
ST_MAKELINE / ST_MAKE_LINE点から LineString を作成しますST_MAKELINE(ST_MAKEGEOMPOINT(-122.35, 37.55), ST_MAKEGEOMPOINT(-122.40, 37.60)) → LINESTRING(-122.35 37.55, -122.40 37.60)
ST_MAKEPOLYGON閉じた LineString から Polygon を作成しますST_MAKEPOLYGON(ST_MAKELINE(...)) → POLYGON(...)
ST_POLYGON座標リングから Polygon を作成しますGEOGRAPHY のみST_POLYGON(...) → POLYGON(...)

変換

関数説明注記例
ST_GEOMETRYFROMTEXT / ST_GEOMFROMTEXTWKT を geometry に変換しますGEOGRAPHY のみST_GEOMETRYFROMTEXT('POINT(-122.35 37.55)') → POINT(-122.35 37.55)
ST_GEOMETRYFROMWKB / ST_GEOMFROMWKBWKB を geometry に変換しますGEOGRAPHY のみST_GEOMETRYFROMWKB(...) → POINT(...)
ST_GEOMETRYFROMEWKT / ST_GEOMFROMEWKTEWKT を geometry に変換しますGEOGRAPHY のみST_GEOMETRYFROMEWKT('SRID=4326;POINT(-122.35 37.55)') → POINT(-122.35 37.55)
ST_GEOMETRYFROMEWKB / ST_GEOMFROMEWKBEWKB を geometry に変換しますGEOGRAPHY のみST_GEOMETRYFROMEWKB(...) → POINT(...)
ST_GEOGRAPHYFROMWKT / ST_GEOGFROMWKTWKT/EWKT を geography に変換しますGEOGRAPHY のみST_GEOGRAPHYFROMWKT('POINT(-122.35 37.55)') → POINT(-122.35 37.55)
ST_GEOGRAPHYFROMWKB / ST_GEOGFROMWKBWKB/EWKB を geography に変換しますGEOGRAPHY のみST_GEOGRAPHYFROMWKB(...) → POINT(...)
ST_GEOMFROMGEOHASHGeoHash を geometry に変換しますGEOGRAPHY のみST_GEOMFROMGEOHASH('9q8yyk8') → POLYGON(...)
ST_GEOMPOINTFROMGEOHASHGeoHash を Point geometry に変換しますGEOGRAPHY のみST_GEOMPOINTFROMGEOHASH('9q8yyk8') → POINT(...)
ST_GEOGFROMGEOHASHGeoHash を geography polygon に変換しますGEOGRAPHY のみST_GEOGFROMGEOHASH('9q8yyk8') → POLYGON(...)
ST_GEOGPOINTFROMGEOHASHGeoHash を geography point に変換しますGEOGRAPHY のみST_GEOGPOINTFROMGEOHASH('9q8yyk8') → POINT(...)
TO_GEOMETRYさまざまな形式を geometry として解析しますGEOGRAPHY のみTO_GEOMETRY('POINT(-122.35 37.55)') → POINT(-122.35 37.55)
TO_GEOGRAPHY / TRY_TO_GEOGRAPHYさまざまな形式を geography として解析しますGEOGRAPHY のみTO_GEOGRAPHY('POINT(-122.35 37.55)') → POINT(-122.35 37.55)

出力

関数説明注記例
ST_ASTEXTgeometry を WKT に変換しますST_ASTEXT(ST_MAKEGEOMPOINT(-122.35, 37.55)) → 'POINT(-122.35 37.55)'
ST_ASWKTgeometry を WKT に変換しますST_ASWKT(ST_MAKEGEOMPOINT(-122.35, 37.55)) → 'POINT(-122.35 37.55)'
ST_ASBINARY / ST_ASWKBgeometry を WKB に変換しますST_ASBINARY(ST_MAKEGEOMPOINT(-122.35, 37.55)) → WKB representation
ST_ASEWKTgeometry を EWKT に変換しますST_ASEWKT(ST_MAKEGEOMPOINT(-122.35, 37.55)) → 'SRID=4326;POINT(-122.35 37.55)'
ST_ASEWKBgeometry を EWKB に変換しますST_ASEWKB(ST_MAKEGEOMPOINT(-122.35, 37.55)) → EWKB representation
ST_ASGEOJSONgeometry を GeoJSON に変換しますST_ASGEOJSON(ST_MAKEGEOMPOINT(-122.35, 37.55)) → '{"type":"Point","coordinates":[-122.35,37.55]}'
ST_GEOHASHgeometry を GeoHash に変換しますST_GEOHASH(ST_MAKEGEOMPOINT(-122.35, 37.55), 7) → '9q8yyk8'
TO_STRINGgeometry を文字列に変換しますTO_STRING(ST_MAKEGEOMPOINT(-122.35, 37.55)) → 'POINT(-122.35 37.55)'

アクセサーとプロパティ

関数説明注記例
ST_DIMENSIONトポロジ次元を返しますST_DIMENSION(ST_MAKEGEOMPOINT(-122.35, 37.55)) → 0
ST_CENTROIDgeometry の重心を返しますGEOMETRY のみST_CENTROID(TO_GEOMETRY('LINESTRING(0 0, 2 0)')) → POINT(1 0)
ST_ENVELOPE最小外接矩形を返しますGEOMETRY のみST_ENVELOPE(TO_GEOMETRY('LINESTRING(0 0, 2 3)')) → POLYGON((0 0,2 0,2 3,0 3,0 0))
ST_SRIDgeometry の SRID を返しますST_SRID(ST_MAKEGEOMPOINT(-122.35, 37.55)) → 4326
ST_POINTNLineString から指定した点を返しますST_POINTN(ST_MAKELINE(...), 1) → POINT(-122.35 37.55)
ST_STARTPOINTLineString の最初の点を返しますST_STARTPOINT(ST_MAKELINE(...)) → POINT(-122.35 37.55)
ST_ENDPOINTLineString の最後の点を返しますST_ENDPOINT(ST_MAKELINE(...)) → POINT(-122.40 37.60)
ST_X / ST_YPoint の X または Y 座標を返しますST_X(ST_MAKEGEOMPOINT(-122.35, 37.55)) → -122.35
ST_XMIN / ST_XMAXX 座標の最小値/最大値を返しますST_XMIN(ST_MAKELINE(...)) → -122.40
ST_YMIN / ST_YMAXY 座標の最小値/最大値を返しますST_YMAX(ST_MAKELINE(...)) → 37.60

関係と計測

関数説明注記例
HAVERSINE座標間の大円距離を計算しますHAVERSINE(37.55, -122.35, 37.60, -122.40) → 6.12
ST_AREAgeometry または geography オブジェクトの面積を測定しますST_AREA(TO_GEOMETRY('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')) → 1.0
ST_CONTAINSある geometry が別の geometry を含むかどうかを判定しますGEOMETRY のみST_CONTAINS(ST_MAKEPOLYGON(...), ST_MAKEGEOMPOINT(...)) → TRUE
ST_CONVEXHULLgeometry の凸包を計算しますGEOMETRY のみST_CONVEXHULL(TO_GEOMETRY('POLYGON((0 0,2 0,2 2,0 2,0 0))')) → POLYGON((0 0,2 0,2 2,0 2,0 0))
ST_NPOINTSgeometry 内の点数を数えますST_NPOINTS(ST_MAKELINE(...)) → 2
ST_NUMPOINTSgeometry 内の点数を数えますGEOMETRY のみST_NUMPOINTS(ST_MAKELINE(...)) → 2
ST_INTERSECTS2 つの geometry が交差するかどうかを判定しますGEOMETRY のみST_INTERSECTS(TO_GEOMETRY('LINESTRING(0 0, 2 2)'), TO_GEOMETRY('LINESTRING(0 2, 2 0)')) → TRUE
ST_DISJOINT2 つの geometry が互いに素であるかどうかを判定しますGEOMETRY のみST_DISJOINT(TO_GEOMETRY('POINT(3 3)'), TO_GEOMETRY('POLYGON((0 0,2 0,2 2,0 2,0 0))')) → TRUE
ST_WITHINある geometry が別の geometry の内部にあるかどうかを判定しますGEOMETRY のみST_WITHIN(TO_GEOMETRY('POINT(1 1)'), TO_GEOMETRY('POLYGON((0 0,2 0,2 2,0 2,0 0))')) → TRUE
ST_EQUALS2 つの geometry が空間的に等しいかどうかを判定しますGEOMETRY のみST_EQUALS(TO_GEOMETRY('POINT(1 1)'), TO_GEOMETRY('POINT(1 1)')) → TRUE
ST_LENGTHLineString の長さを測定しますST_LENGTH(ST_MAKELINE(...)) → 5.57
ST_DISTANCEgeometry 間の距離を測定しますST_DISTANCE(ST_MAKEGEOMPOINT(-122.35, 37.55), ST_MAKEGEOMPOINT(-122.40, 37.60)) → 5.57
ST_DWITHIN2 つの geometry が指定距離内にあるかどうかを判定しますGEOMETRY のみST_DWITHIN(TO_GEOMETRY('POINT(0 0)'), TO_GEOMETRY('POINT(1 1)'), 1.5) → TRUE
ST_UNION2 つの入力を結合した geometry を返しますGEOMETRY のみST_UNION(TO_GEOMETRY('POINT(0 0)'), TO_GEOMETRY('POINT(1 1)')) → MULTIPOINT(0 0,1 1)
ST_INTERSECTION2 つの geometry の共通部分を返しますGEOMETRY のみST_INTERSECTION(TO_GEOMETRY('LINESTRING(0 0, 1 1)'), TO_GEOMETRY('LINESTRING(0 0, 1 1)')) → LINESTRING(0 0,1 1)
ST_DIFFERENCE1 つ目の geometry のうち、2 つ目で覆われていない部分を返しますGEOMETRY のみST_DIFFERENCE(TO_GEOMETRY('POINT(0 0)'), TO_GEOMETRY('POINT(1 1)')) → POINT(0 0)
ST_SYMDIFFERENCE2 つの geometry の重ならない部分を返しますGEOMETRY のみST_SYMDIFFERENCE(TO_GEOMETRY('POINT(0 0)'), TO_GEOMETRY('POINT(1 1)')) → MULTIPOINT(0 0,1 1)

変形

関数説明注記例
ST_HILBERTgeometry または geography を Hilbert 曲線インデックスにエンコードしますST_HILBERT(TO_GEOMETRY('POINT(0.5 0.5)'), [0, 0, 1, 1]) → 715827882
ST_SETSRIDgeometry に SRID を割り当てますGEOMETRY のみST_SETSRID(ST_MAKEGEOMPOINT(-122.35, 37.55), 3857) → POINT(-122.35 37.55)
ST_TRANSFORMgeometry を新しい SRID に変換しますGEOMETRY のみST_TRANSFORM(ST_MAKEGEOMPOINT(-122.35, 37.55), 3857) → POINT(-13618288.8 4552395.0)

空間関係

関数説明例
ST_CONTAINSある geometry が別の geometry を含むかどうかを判定しますST_CONTAINS(ST_MAKEPOLYGON(...), ST_MAKEGEOMPOINT(...)) → TRUE
POINT_IN_POLYGON点が polygon の内側にあるかどうかを確認しますPOINT_IN_POLYGON([lon, lat], [[p1_lon, p1_lat], ...]) → TRUE

距離と計測

関数説明例
ST_DISTANCEgeometry 間の距離を測定しますST_DISTANCE(ST_MAKEGEOMPOINT(-122.35, 37.55), ST_MAKEGEOMPOINT(-122.40, 37.60)) → 5.57
HAVERSINE座標間の大円距離を計算しますHAVERSINE(37.55, -122.35, 37.60, -122.40) → 6.12

H3 のインデックス作成と変換

関数説明例
GEO_TO_H3経度/緯度を H3 インデックスに変換しますGEO_TO_H3(37.7950, 55.7129, 15) → 644325524701193974
H3_TO_GEOH3 インデックスを経度/緯度に変換しますH3_TO_GEO(644325524701193974) → [37.7950, 55.7129]
H3_TO_STRINGH3 インデックスを文字列表現に変換しますH3_TO_STRING(644325524701193974) → '8f2830828052d25'
STRING_TO_H3H3 文字列をインデックスに変換しますSTRING_TO_H3('8f2830828052d25') → 644325524701193974
GEOHASH_ENCODE経度/緯度を GeoHash にエンコードしますGEOHASH_ENCODE(37.7950, 55.7129, 12) → 'ucfv0nzpt3s7'
GEOHASH_DECODEGeoHash を経度/緯度にデコードしますGEOHASH_DECODE('ucfv0nzpt3s7') → [37.7950, 55.7129]

H3 セルのプロパティ

関数説明例
H3_GET_RESOLUTIONH3 インデックスの解像度を返しますH3_GET_RESOLUTION(644325524701193974) → 15
H3_GET_BASE_CELLベースセル番号を返しますH3_GET_BASE_CELL(644325524701193974) → 14
H3_IS_VALIDH3 インデックスが有効かどうかを確認しますH3_IS_VALID(644325524701193974) → TRUE
H3_IS_PENTAGONH3 インデックスが五角形かどうかを確認しますH3_IS_PENTAGON(644325524701193974) → FALSE
H3_IS_RES_CLASS_IIIH3 インデックスが class III かどうかを確認しますH3_IS_RES_CLASS_III(644325524701193974) → FALSE
H3_GET_FACES交差する正二十面体の面を返しますH3_GET_FACES(644325524701193974) → [7]
H3_TO_PARENTより低い解像度で親インデックスを返しますH3_TO_PARENT(644325524701193974, 10) → 622236721289822207
H3_TO_CHILDRENより高い解像度で子インデックスを返しますH3_TO_CHILDREN(622236721289822207, 11) → [...]
H3_TO_CENTER_CHILD指定した解像度の中心子セルを返しますH3_TO_CENTER_CHILD(622236721289822207, 11) → 625561602857582591
H3_CELL_AREA_M2セルの面積を平方メートルで返しますH3_CELL_AREA_M2(644325524701193974) → 0.8953
H3_CELL_AREA_RADS2セルの面積を平方ラジアンで返しますH3_CELL_AREA_RADS2(644325524701193974) → 2.2e-14
H3_HEX_AREA_KM2平均六角形面積を km² で返しますH3_HEX_AREA_KM2(10) → 0.0152
H3_HEX_AREA_M2平均六角形面積を m² で返しますH3_HEX_AREA_M2(10) → 15200
H3_TO_GEO_BOUNDARYセルの境界を返しますH3_TO_GEO_BOUNDARY(644325524701193974) → [[lon1,lat1], ...]
H3_NUM_HEXAGONS指定解像度における六角形の数を返しますH3_NUM_HEXAGONS(2) → 5882
GEO_DISTANCEWGS84 を使用した概算距離をメートルで返しますGEO_DISTANCE(0, 0, 0, 0) → 0
GREAT_CIRCLE_DISTANCE大円距離をメートルで返しますGREAT_CIRCLE_DISTANCE(0, 0, 0, 0) → 0
GREAT_CIRCLE_ANGLE大円中心角を度単位で返しますGREAT_CIRCLE_ANGLE(0, 0, 45, 0) → 45
POINT_IN_POLYGON点が polygon の内側にあるかどうかを確認しますPOINT_IN_POLYGON([lon, lat], [[p1_lon, p1_lat], ...]) → TRUE
POINT_IN_ELLIPSES点がいずれかの楕円の内側にあるかどうかを確認しますPOINT_IN_ELLIPSES(10, 10, 10, 9.1, 1, 0.9999) → 1

H3 の近傍

関数説明例
H3_DISTANCE2 つのインデックス間のグリッド距離を返しますH3_DISTANCE(599119489002373119, 599119491149856767) → 1
H3_INDEXES_ARE_NEIGHBORS2 つのインデックスが隣接しているかどうかを判定しますH3_INDEXES_ARE_NEIGHBORS(599119489002373119, 599119491149856767) → TRUE
H3_K_RINGk 距離以内のすべてのインデックスを返しますH3_K_RING(599119489002373119, 1) → [599119489002373119, ...]
H3_HEX_RINGちょうど k ステップ離れたインデックスを返しますH3_HEX_RING(599119489002373119, 1) → [599119491149856767, ...]
H3_LINE経路に沿ったインデックスを返しますH3_LINE(from_h3, to_h3) → [from_h3, ..., to_h3]

H3 のエッジ操作

関数説明例
H3_GET_UNIDIRECTIONAL_EDGE隣接する 2 つのセル間のエッジを返しますH3_GET_UNIDIRECTIONAL_EDGE(from_h3, to_h3) → edge_index
H3_UNIDIRECTIONAL_EDGE_IS_VALIDエッジインデックスが有効かどうかを確認しますH3_UNIDIRECTIONAL_EDGE_IS_VALID(edge_index) → TRUE
H3_GET_ORIGIN_INDEX_FROM_UNIDIRECTIONAL_EDGEエッジから始点セルを返しますH3_GET_ORIGIN_INDEX_FROM_UNIDIRECTIONAL_EDGE(edge_index) → from_h3
H3_GET_DESTINATION_INDEX_FROM_UNIDIRECTIONAL_EDGEエッジから終点セルを返しますH3_GET_DESTINATION_INDEX_FROM_UNIDIRECTIONAL_EDGE(edge_index) → to_h3
H3_GET_INDEXES_FROM_UNIDIRECTIONAL_EDGEエッジに対応する両方のセルを返しますH3_GET_INDEXES_FROM_UNIDIRECTIONAL_EDGE(edge_index) → [from_h3, to_h3]
H3_GET_UNIDIRECTIONAL_EDGES_FROM_HEXAGONセルから出るエッジを一覧表示しますH3_GET_UNIDIRECTIONAL_EDGES_FROM_HEXAGON(h3_index) → [edge1, edge2, ...]
H3_GET_UNIDIRECTIONAL_EDGE_BOUNDARYエッジの境界を返しますH3_GET_UNIDIRECTIONAL_EDGE_BOUNDARY(edge_index) → [[lon1,lat1], [lon2,lat2]]

H3 の計測と角度

関数説明例
H3_EDGE_LENGTH_KM平均エッジ長をキロメートルで返しますH3_EDGE_LENGTH_KM(10) → 0.065
H3_EDGE_LENGTH_M平均エッジ長をメートルで返しますH3_EDGE_LENGTH_M(10) → 65.91
H3_EXACT_EDGE_LENGTH_KM正確なエッジ長をキロメートルで返しますH3_EXACT_EDGE_LENGTH_KM(edge_index) → 0.066
H3_EXACT_EDGE_LENGTH_M正確なエッジ長をメートルで返しますH3_EXACT_EDGE_LENGTH_M(edge_index) → 66.12
H3_EXACT_EDGE_LENGTH_RADS正確なエッジ長をラジアンで返しますH3_EXACT_EDGE_LENGTH_RADS(edge_index) → 0.00001
H3_EDGE_ANGLE2 つのエッジ間の角度をラジアンで返しますH3_EDGE_ANGLE(edge1, edge2) → 1.047

このページは役に立ちましたか?