使用與參考手冊

ESRI 形狀表示法

DB2 Spatial Extender 有一些函數從 ESRI 形狀表示法產生幾何。 除了開啟的 GIS 知名二進位表示法支援的二維表示法以外,ESRI 形狀表示法也支援選用性 Z 座標和測量。 下列函數從 ESRI 形狀產生幾何︰

ST_GeometryFromShape
從任何幾何類型的形狀表示法建立幾何。

ST_PointFromShape
從點形狀表示法建立點。

ST_LineFromShape
從線串形狀表示法建立線串。

ST_PolyFromShape
從多邊形形狀表示法建立多邊形。

ST_MPointFromShape
從多點形狀表示法建立多點。

ST_MLineFromShape
從多線串形狀表示法建立多線串。

ST_MPolyFromShape
從多重多邊形形狀表示法建立多重多邊形。

這些函數的一般語法都相同。 第一個引數是輸入成二進位大型物件 (BLOB) 資料類型的形狀表示法。 第二個引數是指定給幾何的空間參照識別字整數。GeometryFromShape 函數有下列語法︰

db2gse.GeometryFromShape(ShapeGeometry Blob(1M), cr db2gse.coordref)

因為這些形狀函數需要 C 程式設計語言結構定義才能對映二進位表示法, 所以它們是專門在 3GL 程式內使用而不適合 4GL 環境。 AsShape 函數將幾何值轉換成 ESRI 形狀表示法。

0 的形狀類型表示一個空形狀,沒有此形狀的幾何資料。
形狀類型
0 Null 形狀
1
3* 折線
5 多邊形
8 多點
11 PointZ
13 PolyLineZ
15 PolygonZ
18 MultiPointZ
21 PointM
23 PolyLineM
25 PolygonM
28 MultiPointM
註:* 保留前面沒有指定的形狀類型 (2、4、6 等等) 供將來使用。

XY 空間中的形狀類型

一個點由一對倍準度座標 (按照 X、Y 順序) 組成。

表 66.
點位元組串流內容

位置

欄位


類型

數字

順序

位元組 0

形狀類型

1

整數

1

Little

位元組 4

X

X

Double

1

Little

位元組 12

Y

Y

Double

1

Little

多點

一個多點由點集合組成。按照 Xmin、Ymin、Xmax、Ymax 順序儲存外框。

表 67.
多點位元組串流內容

位置

欄位


類型

數字

順序

位元組 0

形狀類型

8

整數

1

Little

位元組 4

方框

方框

Double

4

Little

位元組 36

NumPoints

NumPoints

整數

1

Little

位元組 40



Point

NumPoints

Little

折線

折線是由一個或多個線段組成的一組有排序頂點。 線段是由兩點以上連接而成。點不一定彼此相連。線段不一定彼此相交。

因為本規格不禁止具有相同座標的連續點,所以形狀檔讀取器必須處理這種狀況。 另一方面,它不接受可能產生的退化、0 長度線段。

折線的欄位︰

Box
按照 Xmin、Ymin、Xmax、Ymax 順序儲存的折線的外框。

NumParts
折線的線段數目。

NumPoints
全部線段的總點數。

Parts
長度 NumParts 陣列。每一條折線把它的第一個點的指標儲存在點陣列中。 陣列指標相對於 0。

Points
長度 NumPoints 陣列。以端對端方式儲存折線的每一個線段的點。 線段 2 的點在線段 1 的點後面並依此類推。線段陣列保留每一個線段的起點的陣列指標。 點陣列的線段之間沒有定界符號。

表 68.
折線位元組串流內容

位置

欄位


類型

數字

順序

位元組 0

形狀類型

3

整數

1

Little

位元組 4

方框

方框

Double

4

Little

位元組 36

NumParts

NumParts

整數

1

Little

位元組 40

NumPoints

NumPoints

整數

1

Little

位元組 44

線段

線段

整數

NumParts

Little

位元組 X



Point

NumPoints

Little

註:X = 44 + 4 * NumParts.

多邊形

多邊形是由一個或多個環組成。環是 4 個或更多點的連接順序,這些點形成封閉不相交迴圈。 多邊形可含有多個外環。環的頂點順序或方向指出環的哪一邊是多邊形的內部。 按照頂點順序沿著環移動的觀察者,其右邊的鄰域即多邊形內側的鄰域。 環的頂點 (定義多邊形中的孔) 是按照逆時鐘方向排列。 因此單一環狀多邊形的頂點一定按照順時針方向排列。 多邊形的環稱為線段。

因為本規格不禁止具有相同座標的連續點,所以形狀檔讀取器必須處理這種狀況。 另一方面,它不接受可能產生的退化、0 長度或 0 區域線段。

多邊形的欄位︰

Box
按照 Xmin、Ymin、Xmax、Ymax 順序儲存的多邊形的外框。

NumParts
多邊形中的環數目。

NumPoints
全部環的總點數。

Parts
長度 NumParts 陣列。就每一個環而言,它的第一個點的指標儲存在點陣列中。 陣列指標相對於 0。

Points
長度 NumPoints 陣列。以端對端方式儲存多邊形中的每一個環的點。 Ring 2 的點在 Ring 1 的點後面並依此類推。線段陣列保留每一個環的起點的陣列指標。 點陣列的環之間沒有定界符號。

關於多邊形形狀的重要事項︰

範例多邊形案例

圖 40. 具有一個孔和 8 個頂點的多邊形


top

圖 41. 多邊形位元組串流內容. NumParts 等於 2 而且 NumPoints 等於 10。請注意:圓環 (孔) 多邊形的點順序反轉。


top


表 69.
多邊形位元組串流內容

位置

欄位


類型

數字

順序

位元組 0

形狀類型

5

整數

1

Little

位元組 4

方框

方框

Double

4

Little

位元組 36

NumParts

NumParts

整數

1

Little

位元組 40

NumPoints

NumPoints

整數

1

Little

位元組 44

線段

線段

整數

NumParts

Little

位元組 X



Point

NumPoints

Little

註:X = 44 + 4 * NumParts.

在 XY 空間的測量形狀類型

PointM

一個 PointM 由一對倍準度座標 (按照 X、Y 順序) 加上測量 M 組成。

表 70.
PointM 位元組串流內容

位置

欄位


類型

數字

順序

位元組 0

形狀類型

21

整數

1

Little

位元組 4

X

X

Double

1

Little

位元組 12

Y

Y

Double

1

Little

位元組 20

M

M

Double

1

Little

MultiPointM

MultiPointM 的欄位︰

Box
按照 Xmin、Ymin、Xmax、Ymax 順序儲存的 MultiPointM 的外框。

NumPoints
點數目。

Points
長度 NumPoints 的點陣列。

NumMs
跟隨的測量數字。若本欄位後面沒有測量,那麼 NumMs 只能有兩個值 0; 或等於 NumPoints (若有測量)。

M Range
按照 Mmin、Mmax 順序儲存的 MultiPointM 的最小和最大長度。

M Array
長度 NumPoints 的測量陣列。

表 71.
MultiPointM 位元組串流內容

位置

欄位


類型

數字

順序

位元組 0

形狀類型

28

整數

1

Little

位元組 4

方框

方框

Double

4

Little

位元組 36

NumPoints

NumPoints

整數

1

Little

位元組 40



Point

NumPoints

Little

位元組 X

NumMs

NumMs

整數

1

Little

位元組 X+4*

Mmin

Mmin

Double

1

Little

位元組 X+12*

Mmax

Mmax

Double

1

Little

位元組 X+20*

Marray

Marray

Double

NumPoints

Little

註:

  1. X = 40 + (16 * NumPoints)

  2. * 選用性

PolyLineM

一個形狀檔的 PolyLineM 含有一個或多個線段。線段是由兩個點或更多點連接而成。 線段不一定彼此相連。線段不一定彼此相交。

PolyLineM 的欄位︰

Box
按照 Xmin、Ymin、Xmax、Ymax 順序儲存的 PolyLineM 的外框。

NumParts
PolyLineM 中的線段數目。

NumPoints
全部線段的總點數。

Parts
長度 NumParts 陣列。就線段而言,它的第一個點的指標儲存在點陣列中。 陣列指標相對於 0。

Points
長度 NumPoints 陣列。以端對端方式儲存 PolyLineM 中的每一個線段的點。 線段 2 的點在線段 1 的點後面並依此類推。線段陣列保留每一個線段的起點的陣列指標。 點陣列的線段之間沒有定界符號。

NumMs
跟隨的測量數字。若本欄位後面沒有測量,那麼 NumMs 只能有兩個值 0; 或等於 NumPoints (若有測量)。

M Range
按照 Mmin、Mmax 順序儲存的 PolyLineM 的最小和最大測量。

M Array
長度 NumPoints 陣列。以端對端方式儲存 PolyLineM 中的每一個線段的測量。 線段 2 的測量在線段 1 的測量後面並依此類推。線段陣列保留每一個線段的起點的陣列指標。 測量陣列的線段之間沒有定界符號。

表 72.
PolyLineM 位元組串流內容

位置

欄位


類型

數字

順序

位元組 0

形狀類型

13

整數

1

Little

位元組 4

方框

方框

Double

4

Little

位元組 36

NumParts

NumParts

整數

1

Little

位元組 40

NumPoints

NumPoints

整數

1

Little

位元組 44

線段

線段

整數

NumParts

Little

位元組 X



Point

NumPoints

Little

位元組 Y

NumMs

NumMs

整數

1

Little

位元組 Y+4*

Mmin

Mmin

Double

1

Little

位元組 Y+12*

Mmax

Mmax

Double

1

Little

位元組 Y+20*

Marray

Marray

Double

NumPoints

Little

註:

  1. X = 44 + (4 * NumParts), Y = X + (16 * NumPoints).

  2. * 選用性

PolygonM

PolygonM 由一些環組成。環是封閉、不自我相交的迴圈。 請注意是在 XY 空間計算交集,是在 XYM 空間計算交集。 PolygonM 可含有多個外環。PolygonM 的環稱為線段。

PolygonM 的欄位︰

Box
按照 Xmin、Ymin、Xmax、Ymax 順序儲存的 PolygonM 的外框。

NumParts
PolygonM 中的環數目。

NumPoints
全部環的總點數。

Parts
長度 NumParts 陣列。就每一個環而言,它的第一個點的指標儲存在點陣列中。 陣列指標相對於 0。

Points
長度 NumPoints 陣列。以端對端方式儲存 PolygonM 中的每一個環的點。 Ring 2 的點在 Ring 1 的點後面並依此類推。線段陣列保留每一個環的起點的陣列指標。 點陣列的環之間沒有定界符號。

NumMs
跟隨的測量數字。若本欄位後面沒有測量,那麼 NumMs 只能有兩個 0 值, 或等於 NumPoints (若有測量)。

M Range
按照 Mmin、Mmax 順序儲存的 PolygonM 的最小和最大測量。

M Array
長度 NumPoints 陣列。以端對端方式儲存 PolygonM 中的每一個環的測量。 Ring 2 的測量單位在 Ring 1 的測量單位後面並依此類推。 線段陣列保留每一個環的起始測量的陣列指標。 測量陣列的環之間沒有定界符號。

關於 PolygonM 形狀的重要事項︰

表 73.
PolygonM 位元組串流內容

位置

欄位


類型

數字

順序

位元組 0

形狀類型

15

整數

1

Little

位元組 4

方框

方框

Double

4

Little

位元組 36

NumParts

NumParts

整數

1

Little

位元組 40

NumPoints

NumPoints

整數

1

Little

位元組 44

線段

線段

整數

NumParts

Little

位元組 X



Point

NumPoints

Little

位元組 Y

NumMs

NumMs

整數

1

Little

位元組 Y+4*

Mmin

Mmin

Double

1

Little

位元組 Y+12*

Mmax

Mmax

Double

1

Little

位元組 Y+20*

Marray

Marray

Double

NumPoints

Little

註:

  1. X = 44 + (4 * NumParts), Y = X + (16 * NumPoints).

  2. * 選用性

XYZ 空間中的形狀類型

PointZ

一個 PointZ 由三倍準度座標、倍準度座標 (按照 X、Y、Z 順序) 加上一個測量組成。

表 74.
PointZ 位元組串流內容

位置

欄位


類型

數字

順序

位元組 0

形狀類型

11

整數

1

Little

位元組 4

X

X

Double

1

Little

位元組 12

Y

Y

Double

1

Little

位元組 20

Z

Z

Double

1

Little

位元組 28

測量

M

Double

1

Little

MultiPointZ

一個 MultiPointZ 代表一組 PointZs,如下︰


表 75.
MultiPointZ 位元組串流內容

位置

欄位


類型

數字

順序

位元組 0

形狀類型

18

整數

1

Little

位元組 4

方框

方框

Double

4

Little

位元組 36

NumPoints

NumPoints

整數

1

Little

位元組 40



Point

NumPoints

Little

位元組 X

Zmin

Zmin

Double

1

Little

位元組 X+8

Zmax

Zmax

Double

1

Little

位元組 X+16

Zarray

Zarray

Double

NumPoints

Little

位元組 Y

NumMs

NumMs

整數

1

Little

位元組 Y+4*

Mmin

Mmin

Double

1

Little

位元組 Y+12*

Mmax

Mmax

Double

1

Little

位元組 Y+20*

Marray

Marray

Double

NumPoints

Little

註:

  1. X = 40 + (16 * NumPoints); Y = X + 16 + (8 * NumPoints)

  2. * 選用性

PolyLineZ

PolyLineZ 由一個或多個線段組成。線段是兩個點或更多點的連續順序。線段不一定彼此相連。 線段不一定彼此相交。

PolyLineZ 的欄位︰

Box
按照 Xmin、Ymin、Xmax、Ymax 順序儲存的 PolyLineZ 的外框。

NumParts
PolyLineZ 中的線段數目。

NumPoints
全部線段的總點數。

Parts
長度 NumParts 陣列。就線段而言,它的第一個點的指標儲存在點陣列中。 陣列指標相對於 0。

Points
長度 NumPoints 陣列。以端對端方式儲存 PolyLineZ 中的每一個線段的點。 線段 2 的點在線段 1 的點後面並依此類推。線段陣列保留每一個線段的起點的陣列指標。 點陣列的線段之間沒有定界符號。

Z Range
按照 Zmin、Zmax 順序儲存的 PolyLineZ 的最小和最大 Z 值。

Z Array
長度 NumPoints 陣列。以端對端方式儲存 PolyLineZ 中的每一個線段的 Z 值。 線段 2 的 Z 值在線段 1 的 Z 值後面並依此類推。線段陣列保留每一個線段的起點的陣列指標。 Z 陣列的線段之間沒有定界符號。

NumMs
跟隨的測量數字。若本欄位後面沒有測量,那麼 NumMs 只能有兩個值 0; 或等於 NumPoints (若有測量)。

M Range
按照 Mmin、Mmax 順序儲存的 PolyLineZ 的最小和最大測量。

M Array
長度 NumPoints 陣列。以端對端方式儲存 PolyLineZ 中的每一個線段的測量。 線段 2 的測量在線段 1 的測量後面並依此類推。 線段陣列保留每一個線段的起始測量的陣列指標。 測量陣列的線段之間沒有定界符號。

表 76.
PolyLineZ 位元組串流內容

位置

欄位


類型

數字

順序

位元組 0

形狀類型

13

整數

1

Little

位元組 4

方框

方框

Double

4

Little

位元組 36

NumParts

NumParts

整數

1

Little

位元組 40

NumPoints

NumPoints

整數

1

Little

位元組 44

線段

線段

整數

NumParts

Little

位元組 X



Point

NumPoints

Little

位元組 Y

Zmin

Zmin

Double

1

Little

位元組 Y+8

Zmax

Zmax

Double

1

Little

位元組 Y+16

Zarray

Zarray

Double

NumPoints

Little

位元組 Z

NumMs

NumMs

整數

1

Little

位元組 Z+4*

Mmin

Mmin

Double

1

Little

位元組 Z+12*

Mmax

Mmax

Double

1

Little

位元組 Z+20*

Marray

Marray

Double

NumPoints

Little

註:

  1. X = 44 + (4 * NumParts), Y = X + (16 * NumPoints), Z = Y + 16 + (8 * NumPoints)

  2. * 選用性

PolygonZ

PolygonZ 由一些環組成。環是封閉、不自我相交的迴圈。PolygonZ 可含有多個外環。 PolygonZ 的環稱為線段。

PolygonZ 的欄位︰

Box
按照 Xmin、Ymin、Xmax、Ymax 順序儲存的 PolygonZ 的外框。

NumParts
PolygonZ 中的環數目。

NumPoints
全部環的總點數。

Parts
長度 NumParts 陣列。就每一個環而言,它的第一個點的指標儲存在點陣列中。陣列指標相對於 0。

Points
長度 NumPoints 陣列。以端對端方式儲存 PolygonZ 中的每一個環的點。 Ring 2 的點在 Ring 1 的點後面並依此類推。線段陣列保留每一個環的起點的陣列指標。 點陣列的環之間沒有定界符號。

Z Range
按照 Zmin、Zmax 順序儲存的弦的最小和最大 Z 值。

Z Array
長度 NumPoints 陣列。以端對端方式儲存 PolygonZ 中的每一個環的 Z 值。 Ring 2 的 Z 值在 Ring 1 的 Z 值後面並依此類推。線段陣列保留每一個環的起始 Z 值的陣列指標。 Z 值陣列的環之間沒有定界符號。

NumMs
跟隨的測量數字。若本欄位後面沒有測量,那麼 NumMs 只能有兩個值 0;或等於 NumPoints (若有測量)。

M Range
按照 Mmin、Mmax 順序儲存的 PolygonZ 的最小和最大測量。

M Array
長度 NumPoints 陣列。以端對端方式儲存 PolygonZ 中的每一個環的測量。 Ring 2 的測量單位在 Ring 1 的測量單位後面並依此類推。 線段陣列保留每一個環的起始測量的陣列指標。 測量陣列的環之間沒有定界符號。

關於 PolygonZ 形狀的重要事項:

表 77.
PolygonZ 位元組串流內容

位置

欄位


類型

數字

順序

位元組 0

形狀類型

15

整數

1

Little

位元組 4

方框

方框

Double

4

Little

位元組 36

NumParts

NumParts

整數

1

Little

位元組 40

NumPoints

NumPoints

整數

1

Little

位元組 44

線段

線段

整數

NumParts

Little

位元組 X



Point

NumPoints

Little

位元組 Y

Zmin

Zmin

Double

1

Little

位元組 Y+8

Zmax

Zmax

Double

1

Little

位元組 Y+16

Zarray

Zarray

Double

NumPoints

Little

位元組 Z

NumMs

NumMs

整數

1

Little

位元組 Z+4*

Mmin

Mmin

Double

1

Little

位元組 Z+12*

Mmax

Mmax

Double

1

Little

位元組 Z+20*

Marray

Marray

Double

NumPoints

Little


[ 頁面頂端 | 前一頁 | 下一頁 | 目錄 | 索引 ]