全部產品
Search
文件中心

Hologres:PostGIS空間函數

更新時間:Aug 19, 2026

PostGIS是資料庫PostgreSQL的空間擴充,PostGIS可以提供空間對象、空間索引、空間操作函數和空間操作符等空間資訊服務功能。本文為您介紹PostGIS在Hologres中的使用方法。

引擎支援說明

Hologres V1.3及以上版本中,大部分PostGIS函數由Hologres自研引擎HQE支援,效能更優;Hologres V1.3以下版本由PQE引擎支援,效能稍弱。各函數當前的引擎歸屬請參見空間函數中各函數表的支援的引擎列。

安裝與卸載PostGIS

在使用PostGIS之前,需要Superuser在DB內執行以下語句安裝擴充包才可以正常使用。一個DB只需執行一次即可,如果建立新的DB,還需要再次執行如下語句。

-- 載入PostGIS外掛程式,顯式指定安裝到public schema
CREATE EXTENSION IF NOT EXISTS postgis SCHEMA public;
說明

不支援將postgis extension建立在pg_catalog schema下。

在安裝完成後,您可以執行如下SQL語句查看當前PostGIS版本。Hologres中目前使用的PostGIS版本是3.0.0。

SELECT public.postgis_full_version();
說明

postgis_full_version()是public schema下的plpgsql函數。Hologres預設的search_path已包含public,可以直接調用;如果當前會話的search_path不包含public,則需要加上public.首碼,否則會報function postgis_full_version() does not exist。為保證在任意search_path下均可執行,本文樣本統一使用public.首碼。

卸載PostGIS

若不再使用PostGIS,您可執行如下命令卸載PostGIS外掛程式。

DROP EXTENSION postgis;

如果資料庫中存在依賴geometry、geography類型的對象(例如按照建立並查詢包含空間資料類型的表建立的表),直接執行上述命令會報錯cannot drop extension postgis because other objects depend on it。此時請按以下步驟先清理依賴對象,再卸載外掛程式。

  1. 查詢仍依賴geometry、geography類型的對象及其所在列。

    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_%';
  2. 刪除上一步查詢到的表,或刪除表中的空間資料類型列。

    DROP TABLE <TABLE_NAME>;
    說明

    若資料庫已開啟表資源回收筒(Hologres V3.1及以上版本預設開啟),DROP TABLE刪除的表會進入資源回收筒,需繼續執行下一步清空資源回收筒。您也可以執行DROP TABLE <TABLE_NAME> FORCE;使表不進入資源回收筒,從而跳過下一步。關於表資源回收筒的更多資訊,請參見表資源回收筒。

  3. 清空資源回收筒。資源回收筒中的表仍持有對空間資料類型的依賴,需清空資源回收筒才能釋放該依賴。

    CALL hologres.hg_purge_all_tables();
    重要

    hg_purge_all_tables()會清理當前資料庫資源回收筒中的所有表,清理後無法恢複,執行前請確認資源回收筒中沒有需要保留的表。該命令需由當前執行個體的Superuser執行。

  4. 卸載PostGIS外掛程式。

    DROP EXTENSION postgis;
重要

請按上述步驟清理依賴對象後再卸載,不推薦使用DROP EXTENSION <EXTENSION_NAME> CASCADE;命令級聯卸載Extension。CASCADE(級聯)刪除命令不僅會刪除指定擴充本身,還會一併清除擴充資料(例如PostGIS資料、RoaringBitmap資料、Proxima資料、Binlog資料、BSI資料等)以及依賴該擴充的對象(包括中繼資料、表、視圖、Server資料等)。

表衝突處理

執行CREATE EXTENSION postgis時如果報錯relation spatial_ref_sys already exists,說明資料庫中存在歷史安裝殘留的系統資料表。正常執行DROP EXTENSION postgis卸載後重裝不會產生殘留,該報錯通常出現在從其他資料庫遷移匯入、或此前手工建立過同名表的情境。按以下步驟處理:

  1. 卸載已部分安裝的擴充。

    DROP EXTENSION IF EXISTS postgis;
  2. 清理殘留的系統資料表。執行前請確認該表確為安裝殘留而非業務表。

    DROP TABLE IF EXISTS spatial_ref_sys CASCADE;
  3. 重新安裝PostGIS擴充。

    CREATE EXTENSION IF NOT EXISTS postgis SCHEMA public;
  4. 驗證安裝。

    SELECT public.postgis_full_version();

建立並查詢包含空間資料類型的表

目前在Hologres中使用PostGIS,支援兩類空間資料類型,即幾何類型(Geometry Type)和地理類型(Geography Type)。

在實際使用過程中,幾何類型(Geometry Type)是使用較頻繁的類型,如下內容將以幾何類型為例,指導您建立包含Geometry資料類型的表並進行典型空間查詢。更多關於地理類型(Geography Type)的參數和使用說明,請參見PostGIS Geography Type。

  1. 建立包含Geometry資料類型的表

    說明

    建立包含幾何類型的表時,您可以指定建立的幾何體類型。包括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)) ;

      以上樣本中,Geometry類型指定為Point,SRID為4326,SRID不指定預設為0。插入資料和查詢條件中幾何體的SRID必須與列定義的SRID一致,否則會報錯,例如Geometry SRID (0) does not match column SRID (4326)或Operation on mixed SRID geometries。更多關於SRID釋義,請參見PostGIS官方文檔。

  2. 向表中插入資料

    您可以通過如下方式向表中插入資料,其中,關於空間函數的使用說明,請參見空間函數。關於SRID釋義,請參見PostGIS官方文檔。

    • 不指定SRID值。

      INSERT INTO holo_gis_1 VALUES (1, ST_GeomFromText('point(116 39)'));
    • 指定SRID值。

      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);

        返回結果如下:

        st_astext
        -------------
        POINT(116 39)
      • 指定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,需使用ST_SetSRID為外包框設定相同的SRID,否則會報Operation on mixed SRID geometries。

    • 多邊形相交判定(在內部或在邊界上)

      • 不指定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);

        返回結果如下:

        st_astext
        -------------
        POINT(116 39)
      • 指定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:表格中涉及的geom均表示一個GEOMETRY類型的值,或一個計算結果為GEOMETRY類型的運算式。

  • precision:表示一個INTEGER類型的值,用於控制座標的輸出精度。該參數在不同函數中的名稱、語義和預設值不同:

    • ST_AsText(geom [, precision]):precision為有效數字位元,未指定時預設為15。

    • ST_AsGeoJSON(geom [, maxdecimaldigits]):該參數為最大小數位元,未指定時預設為9。如果需要保留更高精度,請顯式指定該參數,否則匯出結果會丟失精度。

    建議取值範圍為1~20。超出該範圍不會報錯,但輸出位元沒有實際意義(雙精確度浮點數的有效位約為15~17位)。

  • index:表格中涉及的index為索引,均表示一個INTEGER類型的值。

  • srid:表格中涉及srid均表示一個INTEGER類型的值,它是空間參考標識符SRID。

更多關於空間函數的說明,請參見PostGIS官方文檔。

說明
  • 支援的引擎列僅標註函數當前的引擎歸屬(HQE或PQE),標註基於Hologres V4.2版本實測。函數的引擎歸屬會隨版本演化,請以執行個體實際執行計畫(EXPLAIN結果中是否出現PQE節點)為準。各版本的整體引擎支援情況,請參見引擎支援說明。

  • 以下各表僅列出各函數的常用簽名。部分函數還支援其他重載形式(例如ST_MakeLine支援傳入幾何體數組、ST_AddPoint支援指定插入位置),完整的重載列表,以及本文樣本中出現但未列入以下各表的函數(例如ST_MakeBox2D),請參見PostGIS官方文檔。

  • Geometry Constructors函數

    函數

    函數文法

    傳回型別

    說明

    支援的引擎

    ST_LineFromMultiPoint

    ST_LineFromMultiPoint(geom)

    GEOMETRY

    ST_LineFromMultiPoint 返回輸入多點幾何體中的串線。點的順序將保留。返回的幾何體的空間參考系統標識符(SRID)與輸入幾何體的相同。

    HQE

    ST_MakeEnvelope

    ST_MakeEnvelope(xmin, ymin, xmax, ymax [, srid])

    子類型為POLYGON的GEOMETRY。

    返回由輸入座標指定的矩形範圍對應的多邊形,輸入座標分別指定矩形的左下角和右上方。即使輸入座標退化為一個點或一條線,傳回值仍為POLYGON。如果指定了SRID,返回幾何體的空間參考系統標識符(SRID)將設定為該值,未指定時預設為0。

    HQE

    ST_MakeLine

    ST_MakeLine(geom1, geom2)

    子類型 LINESTRING的GEOMETRY。

    ST_MakeLine從輸入幾何體建立串線。

    HQE

    ST_MakePoint

    ST_MakePoint(x, y)

    子類型POINT的 GEOMETRY。

    ST_MakePoint返回其座標值為輸入值的點幾何體。

    HQE

    ST_Point

    ST_Point(x, y)

    子類型POINT的 GEOMETRY。

    ST_Point從輸入座標值返回點幾何體。

    HQE

    ST_Polygon

    ST_Polygon(linestring, srid)

    子類型POLYGON的GEOMETRY。

    ST_Polygon返回一個多邊形幾何體,其外部環形是輸入串線,其值是空間參考系統標識符(SRID)的輸入值。

    HQE

  • Geometry Accessors函數

    函數

    函數文法

    傳回型別

    說明

    支援的引擎

    GeometryType

    GeometryType(geom)

    TEXT

    以字串形式返回輸入幾何體的子類型,傳回值為不帶首碼的大寫形式,例如POINT、POLYGON。

    HQE

    ST_Boundary

    ST_Boundary(geom)

    GEOMETRY

    ST_Boundary返回輸入幾何體的邊界,如下所示:如果輸入幾何為空白(即不包含點),則按原樣返回。如果輸入幾何是點或非空多點,則返回空幾何集合。如果輸入是串線或多串線,則返回包含邊界上所有點的多點,多點可能為空白。如果輸入是一個沒有任何內環的面,則返回一個表示其邊界的閉合串線。如果輸入是具有內環的面,或者是多面,則返回多串線。多串線包含面積幾何中所有環的所有邊界作為閉合串線。

    HQE

    ST_Dimension

    ST_Dimension(geom)

    INTEGER

    ST_Dimension 返回輸入幾何體的固有維度。固有維度是幾何體中定義的子類型的維度值。

    HQE

    ST_Envelope

    ST_Envelope(geom)

    GEOMETRY

    ST_Envelope 返回輸入幾何體的最小邊界框,如下所示:如果輸入幾何體為空白,則返回的幾何體是輸入幾何體的副本。如果輸入幾何體的最小邊界框退化為一個點,則返回的幾何體是一個點。如果輸入幾何體的最小邊界框是一維的,則返回兩點串線。如果上述條件都不成立,則函數將返回一個順時針方向的多邊形,其頂點為最小邊界框的角。返回的幾何體的空間參考系統標識符(SRID)與輸入幾何體的相同。

    HQE

    ST_ExteriorRing

    ST_ExteriorRing(geom)

    子類型 LINESTRING的GEOMETRY。

    ST_ExteriorRing返回一個表示輸入面外環的閉合串線。

    HQE

    ST_GeometryN

    ST_GeometryN(geom, index)

    GEOMETRY

    ST_GeometryN返回由輸入幾何體的輸入索引指向的幾何體,如下所示:當輸入是點、串線或多邊形時,如果索引等於一 (1),則按原樣返回幾何體;如果索引不是一 (1),則返回 null。如果輸入是多點、多串線、多邊形或幾何體集合,則返回由輸入索引指向的點、串線、多邊形或幾何體集合。索引是從 1 開始的。結果的空間參考系統標識符 (SRID) 與輸入幾何體的相同。

    HQE

    ST_GeometryType

    ST_GeometryType(geom)

    TEXT

    以字串形式返回輸入幾何體的子類型,傳回值帶ST_首碼,例如ST_Point、ST_Polygon。與GeometryType的區別僅在於傳回值格式,編寫等值判斷條件時請注意區分。

    HQE

    ST_InteriorRingN

    ST_InteriorRingN(geom, index)

    子類型LINESTRING的GEOMETRY。

    ST_InteriorRingN返回與索引位置處輸入多邊形的內環相對應的閉合串線。

    HQE

    ST_IsClosed

    ST_IsClosed(geom)

    BOOLEAN

    如果輸入幾何體已閉合,則 ST_IsClosed 返回 true。以下規則定義閉合的幾何體:輸入的幾何體是一個點或一個多點。輸入幾何體是一個串線,並且該串線的起點和終點是重合的。輸入幾何體是一個非空的多串線,並且其所有串線均已閉合。輸入幾何體是一個非空多邊形,所有多邊形的環都是非空的,並且所有環的起點和終點都是重合的。輸入幾何體是一個非空的多邊形集合,並且其所有多邊形均已閉合。輸入幾何體是一個非空幾何體集合,並且其所有組件均已閉合。

    HQE

    ST_IsCollection

    ST_IsCollection(geom)

    BOOLEAN

    如果輸入幾何體為下列子類型之一,則 ST_IsCollection返回true:GEOMETRYCOLLECTION、MULTIPOINT、MULTILINESTRING或者MULTIPOLYGON。

    HQE

    ST_IsEmpty

    ST_IsEmpty(geom)

    BOOLEAN

    如果輸入幾何體是空的,則ST_IsEmpty返回true。如果一個幾何體不包含點,則該幾何體為空白。

    HQE

    ST_IsPolygonCW

    ST_IsPolygonCW(geom)

    BOOLEAN

    如果輸入多邊形的外環為順時針方向且所有內環為逆時針方向,則返回true;如果外環與內環方向相同,則返回false。如果輸入幾何體是點、串線、多點或多串線,則返回true。對於幾何體集合,如果集合中的所有多邊形均滿足上述條件,則返回true。對於空多邊形(POLYGON EMPTY),返回true。

    HQE

    ST_IsPolygonCCW

    ST_IsPolygonCCW(geom)

    BOOLEAN

    如果輸入多邊形的外環為逆時針方向且所有內環為順時針方向,則返回true;如果外環與內環方向相同,則返回false。如果輸入幾何體是點、串線、多點或多串線,則返回true。對於幾何體集合,如果集合中的所有多邊形均滿足上述條件,則返回true。對於空多邊形(POLYGON EMPTY),返回true。

    說明

    通過PQE支援。ST_IsPolygonCW由HQE支援,對大表做繞向篩選時請注意兩者的效能差異。兩個函數不是互補關係,當外環與內環方向相同時兩者同時返回false,因此不能通過對ST_IsPolygonCW取反來判斷逆時針繞向。

    PQE

    ST_IsSimple

    ST_IsSimple(geom)

    BOOLEAN

    如果輸入幾何體是簡單的,則ST_IsSimple返回 true。

    HQE

    ST_NPoints

    ST_NPoints(geom)

    INTEGER

    ST_NPoints 返回輸入幾何體中的點數。

    HQE

    ST_NRings

    ST_NRings(geom)

    INTEGER

    ST_NRings 返回輸入幾何體中的環形數。

    HQE

    ST_NumGeometries

    ST_NumGeometries(geom)

    INTEGER

    ST_NumGeometries返回輸入幾何體中的幾何體數。

    HQE

    ST_NumInteriorRings

    ST_NumInteriorRings(geom)

    INTEGER

    ST_NumInteriorRings返回輸入多邊形幾何體中的環形數。

    HQE

    ST_NumPoints

    ST_NumPoints(geom)

    INTEGER

    ST_NumPoints返回輸入幾何體中的點數。

    HQE

    ST_PointN

    ST_PointN(geom, index)

    子類型POINT的 GEOMETRY。

    ST_PointN返回由索引值指定的串線中的點。負索引值從串線的末尾開始倒計數,因此-1是最後一個點。

    HQE

    ST_Points

    ST_Points(geom)

    子類型MULTIPOINT的 GEOMETRY。

    ST_Points返回包含輸入幾何中所有非空點的多點幾何。ST_Points不會移除輸入中重複的點,包括環形幾何的起點和終點。

    HQE

    ST_StartPoint

    ST_StartPoint(geom)

    GEOMETRY

    ST_StartPoint返回輸入串線的第一個點。結果的空間參考系統標識符(SRID)值與輸入幾何體的相同。

    HQE

    ST_X

    ST_X(point)

    DOUBLE PRECISION

    ST_X返回輸入焦點的第一個座標。

    HQE

    ST_Y

    ST_Y(point)

    DOUBLE PRECISION

    ST_Y返回輸入焦點的第二個座標。

    HQE

  • Geometry Editors函數

    函數

    函數文法

    傳回型別

    說明

    支援的引擎

    ST_AddPoint

    ST_AddPoint(geom1, geom2)

    GEOMETRY

    ST_AddPoint返回一個串線幾何體,它與添加了點的輸入幾何體相同。

    HQE

    ST_Multi

    ST_Multi(geom)

    GEOMETRY帶子類型MULTIPOINT、MULTILINESTRING、MULTIPOLYGON或者GEOMETRYCOLLECTION。

    ST_Multi將幾何轉換為相應的多類型。如果輸入幾何已經是多類型或幾何集合,則返回其副本。如果輸入幾何體是點、串線或多邊形,則分別返回包含輸入幾何體的MultiPoint、MultiLineString或MultiPolygon。

    HQE

    ST_RemovePoint

    ST_RemovePoint(geom, index)

    GEOMETRY

    ST_RemovePoint返回一個串線幾何體,該幾何體已刪除輸入幾何體在索引位置的點。索引是從零開始的。結果的空間參考系統標識符 (SRID) 與輸入幾何體的相同。

    HQE

    ST_Reverse

    ST_Reverse(geom)

    GEOMETRY

    ST_Reverse可反轉線性和面積幾何的折點順序。對於點或多點幾何,將返回原始幾何的副本。對於幾何體集合,ST_Reverse將反轉集合中每個幾何體的折點順序。

    HQE

    ST_SetPoint

    ST_SetPoint(geom1, index, geom2)

    GEOMETRY

    將輸入串線中index指定位置的折點替換為geom2的座標,並返回替換後的串線。

    HQE

  • Geometry Validation函數

    函數

    函數文法

    傳回型別

    說明

    支援的引擎

    ST_IsValid

    ST_IsValid(geom)

    BOOLEAN

    如果輸入幾何體有效,則ST_IsValid返回true。

    說明

    通過PQE支援。

    PQE

  • Spatial Reference System函數

    函數

    函數文法

    傳回型別

    說明

    支援的引擎

    ST_SetSRID

    ST_SetSRID(geom, srid)

    GEOMETRY

    ST_SetSRID返回一個與輸入幾何體相同的幾何體,只不過使用空間參考系統標識符(SRID)的輸入值進行了更新。

    HQE

    ST_SRID

    ST_SRID(geom)

    INTEGER

    ST_SRID返回輸入幾何體的空間參考系統標識符(SRID)。

    HQE

  • Geometry Input函數

    函數

    函數文法

    傳回型別

    說明

    支援的引擎

    ST_GeomFromText

    ST_GeomFromText(wkt_string [, srid])

    GEOMETRY。

    ST_GeomFromText從輸入幾何體的已知文本(WKT)表示形式構造幾何體對象。

    說明

    通過PQE支援。

    PQE

  • Geometry Output函數

    函數

    函數文法

    傳回型別

    說明

    支援的引擎

    ST_AsBinary

    ST_AsBinary(geom)

    BYTEA

    ST_AsBinary 使用 ASCII 十六進位字元(0—9,A—F)返回輸入幾何體的十六進位已知二進位 (WKB) 表示形式。

    HQE

    ST_AsEWKB

    ST_AsEWKB(geom)

    BYTEA

    ST_AsEWKB 使用 ASCII 十六進位字元(0—9,A—F)返回輸入幾何體的擴充的已知二進位 (EWKB) 表示形式。

    HQE

    ST_AsEWKT

    ST_AsEWKT(geom)

    TEXT

    ST_AsEWKT 返回輸入幾何體的擴充的已知文本 (EWKT) 表示形式。

    HQE

    ST_AsGeoJSON

    ST_AsGeoJSON(geom [, maxdecimaldigits])

    TEXT

    ST_AsGeoJSON 返回輸入幾何體的 GeoJSON 表示形式。有關 GeoJSON 的更多資訊,請參閱 Wikipedia 中的 GeoJSON。

    HQE

    ST_AsText

    ST_AsText(geom [, precision])

    TEXT

    ST_AsText 返回輸入幾何體的已知文本 (WKT) 表示形式。

    HQE

  • Spatial Relationships函數

    函數

    函數文法

    傳回型別

    說明

    支援的引擎

    ST_Contains

    ST_Contains(geom1, geom2)

    BOOLEAN

    如果第一個輸入幾何體包含第二個輸入幾何體,則 ST_Contains 返回 true。如果 B 中的每個點均為 A 中的一個點,並且其內部有非空相交地區,則幾何體 A 包含幾何體 B。ST_Contains(A, B) 與 ST_Within(B, A) 等效。

    說明

    通過PQE支援。

    PQE

    ST_ContainsProperly

    ST_ContainsProperly(geom1, geom2)

    BOOLEAN

    如果兩個輸入幾何都是非空的,並且第二個幾何的所有點都是第一個幾何的內部點,則 ST_ContainsProperly 返回 true。

    說明

    通過PQE支援。

    PQE

    ST_CoveredBy

    ST_CoveredBy(geom1, geom2)

    BOOLEAN

    如果第一個輸入幾何體被第二個輸入幾何體覆蓋,則 ST_CoveredBy 返回 true。如果幾何體 A 和幾何體 B 都是非空的,並且 A 中的每個點均為 B 中的一個點,則前者被後者覆蓋。ST_CoveredBy(A, B) 與 ST_Covers(B, A) 等效。

    HQE

    ST_Covers

    ST_Covers(geom1, geom2)

    BOOLEAN

    如果第一個輸入幾何體被第二個輸入幾何體覆蓋,則 ST_Covers 返回 true。如果幾何體 A 和幾何體 B 都是非空的,並且 B 中的每個點均為 A 中的一個點,則前者覆蓋了後者。ST_Covers(A, B) 與 ST_CoveredBy(B, A) 等效。

    說明

    通過PQE支援。

    PQE

    ST_Crosses

    ST_Crosses(geom1, geom2)

    BOOLEAN

    如果兩個輸入幾何體相互交叉,則 ST_Crosses 返回 true。

    HQE

    ST_Disjoint

    ST_Disjoint(geom1, geom2)

    BOOLEAN

    如果兩個輸入幾何體沒有共同點,則 ST_Disjoint 返回 true。

    HQE

    ST_DWithin

    ST_DWithin(geom1, geom2, threshold)

    BOOLEAN

    如果兩個輸入幾何體值之間的歐氏距離不大於閾值,則 ST_DWithin 返回 true。

    說明

    通過PQE支援。

    PQE

    ST_DWithin_S2

    ST_DWithin_S2(x1, y1, x2, y2, threshold)

    BOOLEAN

    如果兩個地理位置之間的球面距離不大於閾值threshold(單位:米),則ST_DWithin_S2返回true。

    入參依次為位置1的經度和緯度、位置2的經度和緯度、距離閾值。

    說明

    Hologres V2.0.8版本支援,暫不支援常量查詢。

    HQE

    ST_Equals

    ST_Equals(geom1, geom2)

    BOOLEAN

    如果輸入幾何體在幾何上相等,則 ST_Equals 返回 true。如果幾何體具有相等的點集且其內部具有非空相交地區,則將幾何體視為在幾何上相等。

    HQE

    ST_Intersects

    ST_Intersects(geom1, geom2)

    BOOLEAN

    如果兩個輸入幾何體至少有一個共同點,則 ST_Intersects 返回 true。

    說明

    通過PQE支援。

    PQE

    ST_Touches

    ST_Touches(geom1, geom2)

    BOOLEAN

    如果兩個輸入幾何體接觸,則 ST_Touches 返回 true。如果兩個幾何體是非空的、相交並且沒有共同的內部點,則它們是接觸的。

    HQE

    ST_Within

    ST_Within(geom1, geom2)

    BOOLEAN

    如果第一個輸入幾何體在第二個輸入幾何體中,則 ST_Within 返回 true。例如,如果幾何體 A 中的每個點均為幾何體 B 中的一個點,並且其內部有非空相交地區,則幾何體 A 在幾何體 B 中。ST_Within(A, B) 與 ST_Contains(B, A) 等效。

    說明

    通過PQE支援。

    PQE

  • Measurement函數

    函數

    函數文法

    傳回型別

    說明

    支援的引擎

    ST_Angle

    ST_Angle(geom1, geom2, geom3 [, geom4])

    DOUBLE PRECISION

    ST_Angle返回順時針方向測量的點之間的角度,傳回值以弧度為單位,取值範圍為[0, 2π)。具體規則如下:

    • 如果輸入三個點,則測量P1P2P3三個點順時針組成的角度。

    • 如果輸入四個點,則測量有向線P1P2和P3P4順時針形成的角度。如果輸入為兩條線平行(即,P1等於P2,或P3等於P4),則返回 null。

    HQE

    ST_Area

    ST_Area(geom)

    DOUBLE PRECISION

    ST_Area 返回輸入幾何體的笛卡爾面積。面積單位與用於表示輸入幾何體座標的單位相同。對於點、串線、多點和多串線,此函數返回 0。對於幾何體集合,它返回集合中幾何體的面積之和。

    HQE

    ST_Azimuth

    ST_Azimuth(point1, point2)

    DOUBLE PRECISION

    ST_Azimuth返回兩個輸入焦點的基於北向的笛卡爾方位。

    HQE

    ST_Distance

    ST_Distance(geom1, geom2)

    DOUBLE PRECISION

    ST_Distance返回兩個輸入幾何體之間的笛卡爾距離。距離單位與用於表示輸入幾何體座標的單位相同。如需計算球面距離(單位:米),請使用ST_Distance_Sphere_S2,該函數的入參為兩個位置的經緯度數值而非幾何體。

    HQE

    ST_Distance_Sphere_S2

    ST_Distance_Sphere_S2(x1, y1, x2, y2)

    DOUBLE PRECISION

    ST_Distance_Sphere_S2返回兩個地理位置的球面距離(單位:米)。

    入參依次為位置1的經度和緯度、位置2的經度和緯度。經度範圍是[-180度, +180度],緯度範圍是[-90度, +90度]。

    說明

    Hologres V2.0.8版本支援,暫不支援常量查詢。

    HQE

    ST_Length

    ST_Length(geom)

    DOUBLE PRECISION

    ST_Length返回輸入線性幾何體的笛卡爾長度。長度單位與用於表示輸入幾何體座標的單位相同。對於點、多點和平面幾何體,此函數返回零 (0)。當輸入為幾何體集合時,此函數返回集合中的幾何體長度之和。

    HQE

    ST_Perimeter

    ST_Perimeter(geom)

    DOUBLE PRECISION

    ST_Perimeter返回輸入平面幾何體的笛卡爾周長(邊界長度)。周長單位與用於表示輸入幾何體座標的單位相同。對於點、多點和線性幾何體,此函數返回零 (0)。當輸入為幾何體集合時,此函數返回集合中的幾何體周長之和。

    HQE

  • Overlay函數

    函數

    函數文法

    傳回型別

    說明

    支援的引擎

    ST_Intersection

    ST_Intersection(geom1, geom2)

    GEOMETRY。

    返回幾何之間的交集。

    HQE

  • Geometry Processing函數

    函數

    函數文法

    傳回型別

    說明

    支援的引擎

    ST_Buffer

    ST_Buffer(geom, radius)

    與輸入類型一致:geometry入參返回GEOMETRY,geography入參返回GEOGRAPHY。

    返回與輸入幾何體的距離不超過radius的所有點構成的幾何體,即輸入幾何體的緩衝區。

    說明

    通過PQE支援。

    PQE

    ST_ConvexHull

    ST_ConvexHull(geom)

    GEOMETRY

    ST_ConvexHull返回一個幾何,該幾何表示輸入幾何中包含的非空點的凸包。

    HQE

    ST_Simplify

    ST_Simplify(geom, tolerance)

    GEOMETRY

    ST_Simplify中使用帶有給定容差的 Ramer-Douglas-Peucker 演算法返回輸入幾何的簡化副本。輸入幾何的拓撲可能不會保留。有關該演算法的詳細資料,請參閱拉默-道格拉斯-普克演算法在維基百科。

    HQE

  • Bounding Box函數

    函數

    函數文法

    傳回型別

    說明

    支援的引擎

    ST_XMax

    ST_XMax(geom)

    DOUBLE PRECISION

    返回輸入幾何體外包框的X座標最大值。該函數的入參類型為box3d,傳入geometry時會自動隱式轉換。

    說明

    通過PQE支援。

    PQE

    ST_XMin

    ST_XMin(geom)

    DOUBLE PRECISION

    返回輸入幾何體外包框的X座標最小值。該函數的入參類型為box3d,傳入geometry時會自動隱式轉換。

    說明

    通過PQE支援。

    PQE

    ST_YMax

    ST_YMax(geom)

    DOUBLE PRECISION

    返回輸入幾何體外包框的Y座標最大值。該函數的入參類型為box3d,傳入geometry時會自動隱式轉換。

    說明

    通過PQE支援。

    PQE

    ST_YMin

    ST_YMin(geom)

    DOUBLE PRECISION

    返回輸入幾何體外包框的Y座標最小值。該函數的入參類型為box3d,傳入geometry時會自動隱式轉換。

    說明

    通過PQE支援。

    PQE

  • Linear Referencing函數

    函數

    函數文法

    傳回型別

    說明

    支援的引擎

    ST_LineInterpolatePoint

    ST_LineInterpolatePoint(geom, fraction)

    子類型POINT的GEOMETRY。

    ST_LineInterpolatePoint為插值點,即返回一個距離線起點為小數距離的點。

    HQE

空間函數最佳實務

阿里雲為您提供了空間函數使用方法的最佳實務,詳情請參見使用空間函數查詢資料方法。