全部產品
Search
文件中心

Lindorm:空間資料類型

更新時間:Oct 19, 2024

本文介紹Lindorm GanosBase服務的空間資料類型和資料格式。

Geometry類型及其子類

Lindorm GanosBase支援的空間資料類型如下表:

資料類型

描述

使用樣本

Geometry

表示通用的空間對象,是Point、LineString、Polygon、MultiPoint、MultiPolygon、MultiLineString和GeometryCollection的父類型。不建議直接將空間列定義為Geometry。

說明
  • 如果將寬表列定義為Geometry類型,則該列可以儲存任意子類型的資料(Point、LineString、Polygon、MultiPoint、MultiPolygon、MultiLineString或GeometryCollection),但不適合建立針對某一子類型的時空索引。

  • 如果將寬表列的資料類型定義為某個子類型,則不允許向該列寫入其他子類型的資料。例如,定義寬表列的資料類型為Point,則該列只允許寫入Point類型的資料。

建立時空資料表時指定空間列的資料類型。

Point

表示點類型資料,由座標經度x和緯度y組成。

說明

不支援三維點座標的計算,儲存的三維點在計算時會被轉為二維點。

車輛、船舶接收到的GPS座標資訊。

LineString

表示線類型資料,由兩個或多個點組成。前一條線段的終點是下一條線段的起點。

說明

一條線段必須有兩個及以上的點,連續頂點可以相等。

  • 一條街道可能由多個LineString組成。

  • 在一定時間範圍內,某車輛的多個座標點組成一條軌跡線。

Polygon

表示面類型資料,面的外邊界是一個閉合的環,即起點和終點的座標x、y是相等的。

說明

一個面至少需要三個點才能組成。

  • 電子圍欄。

  • 地圖中的土地區塊、森林、行政區劃等面狀類型。

  • 矩形、圓等圖形。

MultiPoint

表示零個或多個Point的集合。

遊樂園所有售票處。

MultiLineString

表示零條或多條LineString的集合。

一條由多個LineString組成的街道。

MultiPolygon

表示零個或多個Polygon的集合。

一個由多個縣或區組成的市。每個縣或區都是一個Polygon。

GeometryCollection

表示零個或多個Geometry的集合。

多種圖形的集合。

Geometry類型的構造

將點座標格式構造為Geometry對象

使用時空函數ST_MakePoint將數實值型別的點座標資料構造為Geometry Point對象,或使用時空函數ST_LineFromMultiPoint數實值型別的點座標資料構造為Geometry LineString對象,詳細介紹,請參見建構函式

將WKT格式構造為Geometry對象

WKT格式說明

WKT是開放地理空間協會(Open Geospatial Consortium,簡稱OGC)定義的一種用文本來描述空間對象的格式,有關WKT的介紹請參見Well-know Text。Lindorm GanosBase支援通過WKT文字格式設定來表達點(Point)、線(LineString)、面(Polygon)、多點(MultiPoint)、多線(MultiLineString)、多面(MultiPolygon)、幾何對象集合(GeometryCollection)七種空間資料類型,不支援WKT資訊中帶有SRID(Spatial Reference IDentifier)。

Lindorm GanosBase支援的WKT資料類型如下表:

資料類型

文法

WKT樣本

Point

POINT(x y):x表示經度,y表示緯度。

  • POINT(-10.1 3.3):表示一個點。

  • POINT EMPTY:表示空的點。

LineString

LINESTRING(x1 y1,x2 y2,...,xn yn):x1~xn表示經度,y1~yn表示緯度。

  • LINESTRING(3 4,10 50,20 25):表示有三個點的線段。

  • LINESTRING EMPTY:表示空的線。

Polygon

POLYGON((x1 y1,x2 y2,...,xn yn),(xa ya,xb b,...,xm ym)):x1~xn和xa~xm表示經度,y1~yn和ya~ym表示緯度。

  • POLYGON((2 2, 2 8, 8 8, 8 2, 2 2)):表示有一個外環的多邊形。

  • POLYGON((0.5 0.5,5 0,5 5,0 5,0.5 0.5),(1.5 1,4 3,4 1,1.5 1)):表示有一個外環和一個內環的多邊形。

  • POLYGON EMPTY:表示空的多邊形。

MultiPoint

MultiPoint(x1 y1, x2 y2, ..., xn yn):x1~xn表示經度,y1~yn表示緯度。

MULTIPOINT (10 40, 40 30, 20 20, 30 10)POINT(10 40)POINT(40 30)POINT(20 20)POINT(30 10)四個點組成的集合。

MultiLineString

MultiLineString ((x11 y11, x12 y12, ..., x1n y1n),(x21 y21, x22 y22, ..., x2m y2m), ...):x11~x1n和x21~x2m表示經度,y11~y1n和y21~y2m表示緯度。

MULTILINESTRING ((10 10, 20 20, 10 40),(40 40, 30 30, 40 20, 30 10)) :表示由LINESTRING(10 10, 20 20, 10 40)LINESTRING(40 40, 30 30, 40 20, 30 10)兩條線段組成的集合。

MultiPolygon

MultiPolygon (((x11 y11, x12 y12, ..., x1n y1n)),((x21 y21, x22 y22, ..., x2m y2m)),...):x11~x1n和x21~x2m表示經度,y11~y1n和y21~y2m表示緯度。

  • MULTIPOLYGON (((30 20, 45 40, 10 40, 30 20)), ((15 5, 40 10, 10 20, 5 10, 15 5))):表示由兩個只有一個外環的多邊形POLYGON((30 20, 45 40, 10 40, 30 20))POLYGON((15 5, 40 10, 10 20, 5 10, 15 5))組成的集合。

  • MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)),((20 35, 10 30, 10 10, 30 5, 45 20, 20 35),(30 20, 20 15, 20 25, 30 20))) :表示由以下對象組成的集合:

    • 一個只有一個外環的多邊形:POLYGON((40 40, 20 45, 45 30, 40 40))

    • 一個帶內環的多邊形:POLYGON((20 35, 10 30, 10 10, 30 5, 45 20, 20 35),(30 20, 20 15, 20 25, 30 20))

GeometryCollection

GeometryCollection (Point/LineString/Polygon/MultiPoint/MultiLineString/MultiPolygon)

GEOMETRYCOLLECTION (POINT (40 10),LINESTRING (10 10, 20 20, 10 40),POLYGON ((40 40, 20 45, 45 30, 40 40))) 表示由以下對象組成的集合:

  • 一個點:POINT(40 10)。

  • 一條線段:LINESTRING(10 10, 20 20, 10 40)。

  • 一個多邊形:POLYGON((40 40, 20 45, 45 30, 40 40))。

構造方法

使用時空函數ST_GeomFromText將WKT構造為Geometry對象。詳細介紹,請參見建構函式

Geometry類型的輸出

將Geometry對象輸出為WKB字串

WKB是OGC定義的一種通過序列化位元組來描述幾何對象的格式,有關WKB的介紹請參見Well-known Binary。Lindorm GanosBase支援通過WKB來表達點(Point)、線(LineString)、面(Polygon)、多點(MultiPoint)、多線(MultiLineString)、多面(MultiPolygon)、幾何對象集合(GeometryCollection)七種空間資料類型。

Geometry類型直接輸出時,顯示的是Geometry對象WKB格式的16進位字串。樣本如下:

SELECT ST_GeomFromText('POINT(-10.1 3.3)') as p;

返回結果:

+--------------------------------+
|               p                |
+--------------------------------+
| 0020000001000010E6C02433333333 |
| 3333400A666666666666           |
+--------------------------------+

將Geometry對象輸出為WKT

使用時空函數ST_AsText將Geometry對象輸出為WKT格式。詳細介紹,請參見輸出函數