PostGIS は、空間データ型、関数、演算子で Hologres を拡張します。これを使用して、バウンディングボックスフィルターや近接検索から、ポリゴン交差チェックや距離計算まで、地理データを格納、クエリ、分析できます。
Hologres は PostGIS 3.0.0 をサポートしています。
エンジンのサポート
Hologres V1.3 以降では、ほとんどの PostGIS 関数は Alibaba Cloud が開発した Hologres クエリエンジン (HQE) 上で実行され、PQE よりも優れたクエリパフォーマンスを提供します。V1.3 より前のバージョンでは、関数は PostgreSQL クエリエンジン (PQE) 上で実行され、パフォーマンスが低下する可能性があります。各関数が使用するエンジンについては、「空間関数」をご参照ください。各関数テーブルには、グループ全体のエンジンが記載されているか、[必須エンジン] 列に記載されています。
PostGIS 拡張機能のインストールとアンインストール
スーパーユーザーとして次のステートメントを実行し、データベースに PostGIS をインストールします。インストールはデータベースごとに行われるため、空間サポートが必要な各データベースでこの手順を繰り返してください。
-- PostGIS を public スキーマに明示的にインストールします。
CREATE EXTENSION IF NOT EXISTS postgis SCHEMA public;
PostGIS は pg_catalog スキーマにはインストールできません。
インストールを検証するには、次を実行します。
SELECT public.postgis_full_version();
インストールが成功すると、POSTGIS="3.0.0 ..." のようなバージョン文字列が返されます。
postgis_full_version() は public スキーマ内の PL/pgSQL 関数です。Hologres のデフォルトの search_path には public が含まれているため、スキーマプレフィックスなしで関数を呼び出すことができます。現在のセッションの search_path に public が含まれていない場合、呼び出しは function postgis_full_version() does not exist で失敗します。このトピックの例では、public. プレフィックスを使用しているため、どの search_path でも動作します。
PostGIS のアンインストール
拡張機能を削除するには、次を実行します。
DROP EXTENSION postgis;
データベースにまだ geometry または geography 型に依存するオブジェクト (例えば、「ジオメトリテーブルの作成とクエリ」で説明されているように作成されたテーブル) が含まれている場合、ステートメントは cannot drop extension postgis because other objects depend on it で失敗します。まず依存オブジェクトを削除してください。
-
まだ空間型を使用しているオブジェクトと列を見つけます。
SELECT n.nspname AS schema_name, c.relname AS object_name, a.attname AS column_name, t.typname FROM pg_attribute a JOIN pg_class c ON c.oid = a.attrelid JOIN pg_type t ON t.oid = a.atttypid JOIN pg_namespace n ON n.oid = c.relnamespace WHERE t.typname IN ('geometry', 'geography') AND c.relkind IN ('r', 'p', 'm', 'f') AND a.attnum > 0 AND NOT a.attisdropped AND n.nspname NOT LIKE 'pg_%'; -
クエリによって返された各テーブルを削除するか、その空間列のみを削除します。
DROP TABLE <TABLE_NAME>;説明テーブルのごみ箱が有効になっている場合 (Hologres V3.1 以降のデフォルト)、
DROP TABLEはテーブルをごみ箱に移動するため、次のステップも完了する必要があります。ごみ箱をバイパスして次のステップをスキップするには、代わりにDROP TABLE <TABLE_NAME> FORCE;を実行します。詳細については、「テーブルのごみ箱」をご参照ください。 -
ごみ箱を空にします。ごみ箱内のテーブルはまだ空間型に依存しているため、ごみ箱が空になるまで型は使用中のままです。
CALL hologres.hg_purge_all_tables();重要hg_purge_all_tables()は、現在のデータベースのごみ箱にあるすべてのテーブルを完全に削除します。この操作は元に戻せません。実行する前に、ごみ箱にまだ必要なテーブルがないことを確認してください。このコマンドは、現在のインスタンスのスーパーユーザーが実行する必要があります。 -
拡張機能をアンインストールします。
DROP EXTENSION postgis;
PostgreSQL のエラーメッセージが CASCADE を提案していても、DROP EXTENSION postgis CASCADE を使用するのではなく、上記のように依存オブジェクトを削除してください。CASCADE オプションは、拡張機能データ (PostGIS、RoaringBitmap、Proxima、Binlog、BSI データ) を、メタデータ、テーブル、ビュー、サーバーデータなど、拡張機能に依存するすべてのオブジェクトと共に削除します。この操作は元に戻せません。
spatial_ref_sys の競合解決
CREATE EXTENSION postgis がエラー relation spatial_ref_sys already exists で失敗した場合、データベースには以前のインストールから残された spatial_ref_sys システムテーブルが含まれています。通常の DROP EXTENSION postgis は何も残さないため、このエラーは通常、別のデータベースからの移行後、または同じ名前のテーブルが手動で作成された場合に表示されます。次のように競合を解決します。
-
部分的にインストールされた拡張機能を削除します。
DROP EXTENSION IF EXISTS postgis; -
残されたシステムテーブルを削除します。このステートメントを実行する前に、テーブルが以前のインストールからの残り物であり、業務テーブルではないことを確認してください。
DROP TABLE IF EXISTS spatial_ref_sys CASCADE; -
PostGIS 拡張機能を再インストールします。
CREATE EXTENSION IF NOT EXISTS postgis SCHEMA public; -
インストールを検証します。
SELECT public.postgis_full_version();
ジオメトリテーブルの作成とクエリ
PostGIS は Hologres で 2 つの空間データ型をサポートしています:geometry (平面/デカルト座標) と geography (球面経度/緯度座標) です。geography 型の詳細については、「PostGIS geography ドキュメント」をご参照ください。
geometry 型はより一般的に使用されます。以下の手順では、ジオメトリテーブルを作成し、空間クエリを実行する方法を示します。
1. ジオメトリテーブルの作成
テーブルを作成する際に、ジオメトリのサブタイプを指定できます。サポートされているサブタイプ:Point、MultiPoint、LineString、MultiLineString、Polygon、MultiPolygon。
サブタイプなし:
CREATE TABLE holo_gis_1 (
id INT,
geom geometry,
PRIMARY KEY (id)
);
サブタイプと空間参照系識別子 (SRID) あり:
CREATE TABLE holo_gis_2 (
id INT,
geom geometry(point, 4326),
PRIMARY KEY (id)
);
この例では、サブタイプは Point で、SRID は 4326 (WGS 84) です。SRID が指定されていない場合、デフォルトは 0 です。挿入またはクエリ述語で使用するジオメトリの SRID は、列の SRID と一致する必要があります。そうでない場合、ステートメントは Geometry SRID (0) does not match column SRID (4326) や Operation on mixed SRID geometries などのエラーで失敗します。SRID の詳細については、「PostGIS ドキュメント」をご参照ください。
2. 空間データの挿入
-- SRID なし
INSERT INTO holo_gis_1 VALUES (1, ST_GeomFromText('point(116 39)'));
-- SRID 4326 あり
INSERT INTO holo_gis_2 VALUES (1, ST_GeomFromText('point(116 39)', 4326));
空間関数の詳細については、「空間関数」をご参照ください。
3. 空間データのクエリ
データを挿入した後、次の種類のクエリを実行できます。
矩形範囲クエリ
バウンディングボックス内のすべてのポイントを返します。
SRID なし:
SELECT st_astext(geom)
FROM holo_gis_1
WHERE ST_Covers(
ST_MakeBox2D(ST_Point(116, 39), ST_Point(117, 40)),
geom
);
SRID あり:
SELECT st_astext(geom)
FROM holo_gis_2
WHERE ST_Covers(
ST_SetSRID(ST_MakeBox2D(ST_Point(116, 39), ST_Point(117, 40)), 4326),
geom
);
両方のクエリが返す結果:
st_astext
-------------
POINT(116 39)
大規模なデータセットの場合は、正確な空間述語を実行する前に、バウンディングボックス演算子 && を粗いフィルターとして使用します。これにより、正確な計算に到達する行の数が減少します。&& 演算子は HQE 上で実行されるため、ST_Intersects や ST_Covers のような PQE にプッシュダウンされるトポロジ関数よりもコストが低くなります。例:
SELECT st_astext(geom)
FROM holo_gis_1
WHERE geom && ST_MakeBox2D(ST_Point(116, 39), ST_Point(117, 40))
AND ST_Intersects(ST_GeomFromText('POLYGON((116 39,117 39,117 40,116 40,116 39))'), geom);
矩形範囲フィルターのみが必要で、正確なトポロジセマンティクスが不要な場合は、geom && ST_MakeBox2D(...) を単独で使用します。列に SRID がある場合は、ボックスを同じ SRID の ST_SetSRID でラップします。そうしないと、ステートメントは Operation on mixed SRID geometries で失敗します。
ポリゴン交差チェック
任意のポリゴン内に収まる、またはその境界上にあるポイントを見つけるには、ポリゴンで ST_Intersects を使用します。ST_MakeBox2D によって構築されたバウンディングボックスとは異なり、ポリゴンは任意の形状を持つことができ、ST_Intersects は境界の接触を一致としてカウントします。
SRID なし:
SELECT st_astext(geom)
FROM holo_gis_1
WHERE ST_Intersects(
ST_GeomFromText('POLYGON((116 39,117 39,117 40,116 40,116 39))'),
geom
);
SRID を使用する場合:
SELECT st_astext(geom)
FROM holo_gis_2
WHERE ST_Intersects(
ST_SetSRID(ST_GeomFromText('POLYGON((116 39,117 39,117 40,116 40,116 39))'), 4326),
geom
);どちらのクエリも以下を返します:
st_astext
-------------
POINT(116 39)空間関数
PostGIS は、ジオメトリ値を変換および分析するための空間関数を提供します。関数の構文では、次のパラメーターが使用されます。
-
geom:
geometry値、またはgeometryに評価される式 -
precision:座標出力の精度を制御する
INTEGER。パラメーター名、セマンティクス、およびデフォルト値は関数によって異なります。-
ST_AsText(geom [, precision]):有効桁数。デフォルトは15です。 -
ST_AsGeoJSON(geom [, maxdecimaldigits]):小数点以下の最大桁数。デフォルトは9です。より高い精度を維持する必要がある場合は、このパラメーターを明示的に指定してください。そうしないと、エクスポートされた座標の精度が失われます。
1 から 20 の値を指定することを推奨します。この範囲外の値も受け入れられますが、倍精度浮動小数点数が約 15〜17 の有効桁数を持つため、意味のある追加の桁は生成されません。
-
-
index:
INTEGER。特に記載がない限り、1 ベースのインデックスです。 -
srid:
INTEGER。空間参照系識別子です。
各関数は、次のいずれかのクエリエンジンで実行されます。
| エンジン | 適用時期 | パフォーマンス |
|---|---|---|
| HQE (Hologres クエリエンジン) | Hologres V1.3 以降 | 高い — 分析ワークロードに最適化 |
| PQE (PostgreSQL クエリエンジン) | すべてのバージョン。特定の関数で必須 | 低い — 互換モード |
完全な PostGIS 関数の仕様については、「PostGIS リファレンスドキュメント」をご参照ください。
-
以下の表のエンジンの割り当ては、Hologres V4.2 で測定された動作を反映しており、現在のエンジン (HQE または PQE) のみを記載しています。関数が使用するエンジンは、バージョンによって変更される可能性があります。ご利用のインスタンスのエンジンを確認するには、
EXPLAINの出力に PQE ノードが含まれているかどうかを確認してください。バージョンごとの全体的なエンジンのサポートについては、「エンジンのサポート」をご参照ください。 -
以下の表には、各関数の一般的に使用されるシグネチャがリストされています。一部の関数は追加のオーバーロードを受け入れます。例えば、
ST_MakeLineはジオメトリの配列も受け入れ、ST_AddPointは挿入位置も受け入れます。オーバーロードの完全なリスト、および例には表示されるがこれらの表にはリストされていない関数 (例:ST_MakeBox2D) については、「PostGIS リファレンスドキュメント」をご参照ください。
ジオメトリコンストラクター
このグループのすべての関数は HQE で実行されます。
| 関数 | 構文 | 戻り値 | 説明 |
|---|---|---|---|
ST_LineFromMultiPoint |
ST_LineFromMultiPoint(geom) |
GEOMETRY |
マルチポイントジオメトリからラインストリングを作成し、ポイントの順序を保持します。返されるジオメトリは、入力と同じ SRID を持ちます。 |
ST_MakeEnvelope |
ST_MakeEnvelope(xmin, ymin, xmax, ymax [, srid]) |
GEOMETRY (POLYGON) |
指定された角の座標で定義される矩形ポリゴンを作成します。座標は左下と右上の角を指定します。座標が線または単一のポイントに縮退した場合でも、結果は常に POLYGON です。SRID が提供された場合、返されるジオメトリはその SRID を使用します。それ以外の場合、SRID は 0 です。 |
ST_MakeLine |
ST_MakeLine(geom1, geom2) |
GEOMETRY (LINESTRING) |
2 つの入力ジオメトリからラインストリングを作成します。 |
ST_MakePoint |
ST_MakePoint(x, y) |
GEOMETRY (POINT) |
座標値からポイントを作成します。 |
ST_Point |
ST_Point(x, y) |
GEOMETRY (POINT) |
座標値からポイントを作成します。 |
ST_Polygon |
ST_Polygon(linestring, srid) |
GEOMETRY (POLYGON) |
外環が入力ラインストリングであるポリゴンを、指定された SRID で作成します。 |
ジオメトリアクセサー
このグループのすべての関数は HQE で実行されますが、ST_IsPolygonCCW は PQE で実行されます。これらは補完的ではありません。外環と内環の向きが同じ場合、両方とも false を返します。反時計回りの向きをテストするために ST_IsPolygonCW を否定しないでください。大きなテーブルを環の向きでフィルタリングする場合、これら 2 つの関数が異なるエンジンで実行されることにも注意してください。
| 関数 | 構文 | 戻り値 | 説明 |
|---|---|---|---|
GeometryType |
GeometryType(geom) |
TEXT |
入力ジオメトリのサブタイプ名を、プレフィックスなしの大文字の文字列 (例:POINT、POLYGON) で返します。 |
ST_Boundary |
ST_Boundary(geom) |
GEOMETRY |
入力ジオメトリの境界を返します。空のジオメトリは入力をそのまま返します。ポイントまたは空でないマルチポイントは空のジオメトリコレクションを返します。ラインストリングはその境界ポイントのマルチポイントを返します。内環のないポリゴンは閉じたラインストリングを返します。内環のあるポリゴンまたはマルチポリゴンはすべての境界環のマルチラインストリングを返します。 |
ST_Dimension |
ST_Dimension(geom) |
INTEGER |
ジオメトリサブタイプの固有のディメンションを返します。 |
ST_Envelope |
ST_Envelope(geom) |
GEOMETRY |
入力ジオメトリの最小バウンディングボックスを返します。ボックスがポイントに縮退する場合はポイントを、1 次元の場合は 2 ポイントのラインストリングを、それ以外の場合は時計回りのポリゴンを返します。返されるジオメトリは、入力と同じ SRID を持ちます。 |
ST_ExteriorRing |
ST_ExteriorRing(geom) |
GEOMETRY (LINESTRING) |
ポリゴンの外環を閉じたラインストリングとして返します。 |
ST_GeometryN |
ST_GeometryN(geom, index) |
GEOMETRY |
指定された 1 ベースのインデックスにあるジオメトリを返します。単純なジオメトリ (ポイント、ラインストリング、ポリゴン) でインデックスが 1 の場合は、ジオメトリ自体を返します。それ以外の場合は null を返します。コレクションの場合は、インデックスの要素を返します。 |
ST_GeometryType |
ST_GeometryType(geom) |
TEXT |
入力ジオメトリのサブタイプ名を、ST_ プレフィックス付きの文字列 (例:ST_Point、ST_Polygon) で返します。このプレフィックスは GeometryType との唯一の違いであるため、等価条件を記述する際にはフォーマットを考慮してください。 |
ST_InteriorRingN |
ST_InteriorRingN(geom, index) |
GEOMETRY (LINESTRING) |
指定されたインデックス位置にあるポリゴンの内環を閉じたラインストリングとして返します。 |
ST_IsClosed |
ST_IsClosed(geom) |
BOOLEAN |
ジオメトリが閉じている場合に true を返します。ポイントまたはマルチポイントは常に閉じています。ラインストリングは、開始点と終了点が一致する場合に閉じています。ポリゴンは、すべての環が空でなく、その開始点と終了点が一致する場合に閉じています。 |
ST_IsCollection |
ST_IsCollection(geom) |
BOOLEAN |
ジオメトリが GEOMETRYCOLLECTION、MULTIPOINT、MULTILINESTRING、または MULTIPOLYGON の場合に true を返します。 |
ST_IsEmpty |
ST_IsEmpty(geom) |
BOOLEAN |
ジオメトリにポイントが含まれていない場合に true を返します。 |
ST_IsPolygonCCW |
ST_IsPolygonCCW(geom) |
BOOLEAN |
入力ポリゴンの外環が反時計回りで、すべての内環が時計回りである場合に true を返します。外環と内環の向きが同じ場合は false を返します。また、ポイント、ラインストリング、マルチポイント、マルチラインストリング、ポリゴン要素がすべて先行条件を満たすジオメトリコレクション、および空のポリゴン (POLYGON EMPTY) に対しても true を返します。 |
ST_IsPolygonCW |
ST_IsPolygonCW(geom) |
BOOLEAN |
入力ポリゴンの外環が時計回りで、すべての内環が反時計回りである場合に true を返します。外環と内環の向きが同じ場合は false を返します。また、ポイント、ラインストリング、マルチポイント、マルチラインストリング、ポリゴン要素がすべて先行条件を満たすジオメトリコレクション、および空のポリゴン (POLYGON EMPTY) に対しても true を返します。 |
ST_IsSimple |
ST_IsSimple(geom) |
BOOLEAN |
ジオメトリに自己交差などの異常な幾何学的ポイントがない場合に true を返します。 |
ST_NPoints |
ST_NPoints(geom) |
INTEGER |
ジオメトリ内のポイントの数を返します。 |
ST_NRings |
ST_NRings(geom) |
INTEGER |
ジオメトリ内の環の数を返します。 |
ST_NumGeometries |
ST_NumGeometries(geom) |
INTEGER |
ジオメトリコレクション内の要素の数を返します。 |
ST_NumInteriorRings |
ST_NumInteriorRings(geom) |
INTEGER |
ポリゴン内の内環の数を返します。 |
ST_NumPoints |
ST_NumPoints(geom) |
INTEGER |
ジオメトリ内のポイントの数を返します。 |
ST_PointN |
ST_PointN(geom, index) |
GEOMETRY (POINT) |
ラインストリング内の指定されたインデックスにあるポイントを返します。負のインデックス値は末尾から数えます。-1 は最後のポイントを返します。 |
ST_Points |
ST_Points(geom) |
GEOMETRY (MULTIPOINT) |
ジオメトリ内のすべての空でないポイントをマルチポイントとして返します。環の開始点と終了点を含む重複ポイントは保持されます。 |
ST_StartPoint |
ST_StartPoint(geom) |
GEOMETRY |
ラインストリングの最初のポイントを返します。返されるジオメトリは、入力と同じ SRID を持ちます。 |
ST_X |
ST_X(point) |
DOUBLE PRECISION |
ポイントの X 座標を返します。 |
ST_Y |
ST_Y(point) |
DOUBLE PRECISION |
ポイントの Y 座標を返します。 |
ジオメトリエディター
このグループのすべての関数は HQE で実行されます。
| 関数 | 構文 | 戻り値 | 説明 |
|---|---|---|---|
ST_AddPoint |
ST_AddPoint(geom1, geom2) |
GEOMETRY |
ポイントが追加されたラインストリングを返します。 |
ST_Multi |
ST_Multi(geom) |
GEOMETRY (MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、または GEOMETRYCOLLECTION) |
ジオメトリを対応するマルチタイプに変換します。入力がすでにマルチタイプまたはコレクションである場合は、コピーを返します。 |
ST_RemovePoint |
ST_RemovePoint(geom, index) |
GEOMETRY |
指定されたゼロベースのインデックスにあるポイントが削除されたラインストリングを返します。返されるジオメトリは、入力と同じ SRID を持ちます。 |
ST_Reverse |
ST_Reverse(geom) |
GEOMETRY |
線形または面状ジオメトリの頂点の順序を逆にします。ポイントまたはマルチポイントの場合は、コピーを返します。コレクションの場合は、各要素の頂点を逆にします。 |
ST_SetPoint |
ST_SetPoint(geom1, index, geom2) |
GEOMETRY |
指定されたインデックスにあるポイントが入力ポイントの座標に置き換えられたラインストリングを返します。 |
ジオメトリの検証
| 関数 | 構文 | 戻り値 | 必須エンジン | 説明 |
|---|---|---|---|---|
ST_IsValid |
ST_IsValid(geom) |
BOOLEAN |
PQE | ジオメトリが OGC 仕様に従って有効である場合に true を返します。 |
空間参照系関数
このグループのすべての関数は HQE で実行されます。
| 関数 | 構文 | 戻り値 | 説明 |
|---|---|---|---|
ST_SetSRID |
ST_SetSRID(geom, srid) |
GEOMETRY |
入力ジオメトリの SRID を指定された値に更新して返します。座標は再投影されません。 |
ST_SRID |
ST_SRID(geom) |
INTEGER |
入力ジオメトリの SRID を返します。 |
ジオメトリ入力
| 関数 | 構文 | 戻り値 | 必須エンジン | 説明 |
|---|---|---|---|---|
ST_GeomFromText |
ST_GeomFromText(wkt_string [, srid]) |
GEOMETRY |
PQE | Well-known text (WKT) 表現からジオメトリを構築します。 |
ジオメトリ出力
このグループのすべての関数は HQE で実行されます。
| 関数 | 構文 | 戻り値 | 説明 |
|---|---|---|---|
ST_AsBinary |
ST_AsBinary(geom) |
BYTEA |
ジオメトリの Well-known binary (WKB) 表現を、ASCII 文字 0–9 および A–F を使用した 16 進文字列としてエンコードして返します。 |
ST_AsEWKB |
ST_AsEWKB(geom) |
BYTEA |
ジオメトリの拡張 Well-known binary (EWKB) 表現を返します。 |
ST_AsEWKT |
ST_AsEWKT(geom) |
TEXT |
ジオメトリの拡張 Well-known text (EWKT) 表現を返します。 |
ST_AsGeoJSON |
ST_AsGeoJSON(geom [, maxdecimaldigits]) |
TEXT |
ジオメトリの GeoJSON 表現を返します。 |
ST_AsText |
ST_AsText(geom [, precision]) |
TEXT |
ジオメトリの WKT 表現を返します。 |
空間関係述語
このグループのエンジンは関数によって異なります。[必須エンジン] 列をご参照ください。
| 関数 | 構文 | 戻り値 | 必須エンジン | 説明 |
|---|---|---|---|---|
ST_Contains |
ST_Contains(geom1, geom2) |
BOOLEAN |
PQE | geom2 のすべてのポイントが geom1 にあり、それらの内部が交差する場合に true を返します。ST_Within(geom2, geom1) と同等です。 |
ST_ContainsProperly |
ST_ContainsProperly(geom1, geom2) |
BOOLEAN |
PQE | 両方のジオメトリが空でなく、geom2 のすべてのポイントが geom1 の内部 (境界ではない) にある場合に true を返します。 |
ST_CoveredBy |
ST_CoveredBy(geom1, geom2) |
BOOLEAN |
HQE | geom1 のすべてのポイントが geom2 にある場合に true を返します。ST_Covers(geom2, geom1) と同等です。 |
ST_Covers |
ST_Covers(geom1, geom2) |
BOOLEAN |
PQE | geom2 のすべてのポイントが geom1 にある場合に true を返します。ST_CoveredBy(geom2, geom1) と同等です。 |
ST_Crosses |
ST_Crosses(geom1, geom2) |
BOOLEAN |
HQE | 2 つのジオメトリが交差する場合に true を返します。 |
ST_Disjoint |
ST_Disjoint(geom1, geom2) |
BOOLEAN |
HQE | 2 つのジオメトリがポイントを共有しない場合に true を返します。 |
ST_DWithin |
ST_DWithin(geom1, geom2, threshold) |
BOOLEAN |
PQE | 2 つのジオメトリ間のユークリッド距離がしきい値を超えない場合に true を返します。 |
ST_DWithin_S2 |
ST_DWithin_S2(x1, y1, x2, y2, threshold) |
BOOLEAN |
HQE | 2 つの地理的位置間の球面距離が threshold (単位:メートル) 以下である場合に true を返します。パラメーターの順序:位置 1 の経度、位置 1 の緯度、位置 2 の経度、位置 2 の緯度、距離しきい値。Hologres V2.0.8 以降でサポートされています。現在のバージョンでは定数入力はサポートされていません。 |
ST_Equals |
ST_Equals(geom1, geom2) |
BOOLEAN |
HQE | 2 つのジオメトリが等しいポイントセットを持ち、それらの内部が交差する場合に true を返します。 |
ST_Intersects |
ST_Intersects(geom1, geom2) |
BOOLEAN |
PQE | 2 つのジオメトリが少なくとも 1 つのポイントを共有する場合に true を返します。 |
ST_Touches |
ST_Touches(geom1, geom2) |
BOOLEAN |
HQE | 2 つのジオメトリが接触する場合 (交差するが内部ポイントを共有しない) に true を返します。 |
ST_Within |
ST_Within(geom1, geom2) |
BOOLEAN |
PQE | geom1 のすべてのポイントが geom2 にあり、それらの内部が交差する場合に true を返します。ST_Contains(geom2, geom1) と同等です。 |
計測関数
| 関数 | 構文 | 戻り値 | 必須エンジン | 説明 |
|---|---|---|---|---|
ST_Angle |
ST_Angle(geom1, geom2, geom3 [, geom4]) |
DOUBLE PRECISION |
HQE | [0, 2π) の範囲で時計回りの角度をラジアンで返します。3 つのポイントの場合、P2 を中心とした P1 から P3 への回転を測定します。4 つのポイントの場合、有向線 P1–P2 と P3–P4 の間の角度を測定します。P1 が P2 と等しいか、P3 が P4 と等しい場合は null を返します。 |
ST_Area |
ST_Area(geom) |
DOUBLE PRECISION |
HQE | 座標系と同じ単位でジオメトリのデカルト面積を返します。ポイント、ラインストリング、およびそれらのマルチタイプに対しては 0 を返します。コレクションの場合は、すべての要素の面積の合計を返します。 |
ST_Azimuth |
ST_Azimuth(point1, point2) |
DOUBLE PRECISION |
HQE | 2 つのポイントで定義される北基準のデカルト方位角を返します。 |
ST_Distance |
ST_Distance(geom1, geom2) |
DOUBLE PRECISION |
HQE | 2 つのジオメトリ間のデカルト距離を、入力座標と同じ単位で返します。メートル単位の球面距離を計算するには、ジオメトリではなく経度と緯度の値を取る ST_Distance_Sphere_S2 を使用します。 |
ST_Distance_Sphere_S2 |
ST_Distance_Sphere_S2(x1, y1, x2, y2) |
DOUBLE PRECISION |
HQE | 2 つの地理的位置間の球面距離をメートル単位で返します。パラメーターの順序:位置 1 の経度、位置 1 の緯度、位置 2 の経度、位置 2 の緯度。有効な緯度範囲:[-90, +90]。有効な経度範囲:[-180, +180]。Hologres V2.0.8 以降でサポートされています。現在のバージョンでは定数入力はサポートされていません。 |
ST_Length |
ST_Length(geom) |
DOUBLE PRECISION |
HQE | 線形ジオメトリのデカルト長を、座標系と同じ単位で返します。ポイント、マルチポイント、および面状ジオメトリに対しては 0 を返します。コレクションの場合は、全長を返します。 |
ST_Perimeter |
ST_Perimeter(geom) |
DOUBLE PRECISION |
HQE | 面状ジオメトリのデカルト周長 (境界長) を、座標系と同じ単位で返します。ポイント、マルチポイント、および線形ジオメトリに対しては 0 を返します。コレクションの場合は、すべての要素の周長の合計を返します。 |
オーバーレイ関数
| 関数 | 構文 | 戻り値 | 必須エンジン | 説明 |
|---|---|---|---|---|
ST_Intersection |
ST_Intersection(geom1, geom2) |
GEOMETRY |
HQE | 2 つのジオメトリの幾何学的交差を返します。 |
ジオメトリ処理関数
| 関数 | 構文 | 戻り値 | 必須エンジン | 説明 |
|---|---|---|---|---|
ST_Buffer |
ST_Buffer(geom, radius) |
入力タイプと同じ:ジオメトリ入力の場合は GEOMETRY、ジオグラフィ入力の場合は GEOGRAPHY |
PQE | 入力ジオメトリの指定された半径内のすべてのポイントを表すジオメトリを返します。 |
ST_ConvexHull |
ST_ConvexHull(geom) |
GEOMETRY |
HQE | 入力ジオメトリ内のすべての空でないポイントの凸包を返します。 |
ST_Simplify |
ST_Simplify(geom, tolerance) |
GEOMETRY |
HQE | 指定された許容誤差で Ramer-Douglas-Peucker アルゴリズムを使用して、ジオメトリの単純化されたコピーを返します。トポロジは保持されない場合があります。 |
バウンディングボックス関数
このグループのすべての関数は PQE で実行されます。
| 関数 | 構文 | 戻り値 | 説明 |
|---|---|---|---|
ST_XMax |
ST_XMax(geom) |
DOUBLE PRECISION |
ジオメトリのバウンディングボックスの最大 X 座標を返します。パラメータータイプは box3d です。ジオメトリ入力は暗黙的にキャストされます。 |
ST_XMin |
ST_XMin(geom) |
DOUBLE PRECISION |
ジオメトリのバウンディングボックスの最小 X 座標を返します。パラメータータイプは box3d です。ジオメトリ入力は暗黙的にキャストされます。 |
ST_YMax |
ST_YMax(geom) |
DOUBLE PRECISION |
ジオメトリのバウンディングボックスの最大 Y 座標を返します。パラメータータイプは box3d です。ジオメトリ入力は暗黙的にキャストされます。 |
ST_YMin |
ST_YMin(geom) |
DOUBLE PRECISION |
ジオメトリのバウンディングボックスの最小 Y 座標を返します。パラメータータイプは box3d です。ジオメトリ入力は暗黙的にキャストされます。 |
線形参照関数
| 関数 | 構文 | 戻り値 | 必須エンジン | 説明 |
|---|---|---|---|---|
ST_LineInterpolatePoint |
ST_LineInterpolatePoint(geom, fraction) |
GEOMETRY (POINT) |
HQE | 開始点から測定した、線に沿った小数距離にあるポイントを返します。例えば、fraction=0.5 は中間点を返します。 |
空間関数を使用するためのベストプラクティス
一般的な地理分析パターンのエンドツーエンドの例については、「空間関数を使用したデータのクエリ」をご参照ください。