使用與參考手冊
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 等等) 供將來使用。
|
一個點由一對倍準度座標 (按照 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
|
多邊形是由一個或多個環組成。環是 4
個或更多點的連接順序,這些點形成封閉不相交迴圈。
多邊形可含有多個外環。環的頂點順序或方向指出環的哪一邊是多邊形的內部。
按照頂點順序沿著環移動的觀察者,其右邊的鄰域即多邊形內側的鄰域。 環的頂點
(定義多邊形中的孔) 是按照逆時鐘方向排列。
因此單一環狀多邊形的頂點一定按照順時針方向排列。 多邊形的環稱為線段。
因為本規格不禁止具有相同座標的連續點,所以形狀檔讀取器必須處理這種狀況。
另一方面,它不接受可能產生的退化、0 長度或 0 區域線段。
多邊形的欄位︰
- Box
- 按照 Xmin、Ymin、Xmax、Ymax 順序儲存的多邊形的外框。
- NumParts
- 多邊形中的環數目。
- NumPoints
- 全部環的總點數。
- Parts
- 長度 NumParts 陣列。就每一個環而言,它的第一個點的指標儲存在點陣列中。
陣列指標相對於 0。
- Points
- 長度 NumPoints 陣列。以端對端方式儲存多邊形中的每一個環的點。 Ring 2
的點在 Ring 1 的點後面並依此類推。線段陣列保留每一個環的起點的陣列指標。
點陣列的環之間沒有定界符號。
- 關於多邊形形狀的重要事項︰
-
圖 40. 具有一個孔和 8 個頂點的多邊形
圖 41. 多邊形位元組串流內容. NumParts 等於 2 而且 NumPoints 等於 10。請注意:圓環 (孔) 多邊形的點順序反轉。
表 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
|
一個 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 的欄位︰
- 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
|
註:
- X = 40 + (16 * NumPoints)
- * 選用性
一個形狀檔的 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
|
註:
- X = 44 + (4 * NumParts), Y = X + (16 * NumPoints).
- * 選用性
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
|
註:
- X = 44 + (4 * NumParts), Y = X + (16 * NumPoints).
- * 選用性
一個 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 代表一組 PointZs,如下︰
- 按照 Xmin、Ymin、Xmax、Ymax 順序儲存外框。
- 按照 Zmin、Zmax 順序儲存界限 Z 範圍。按照 Mmin、Mmax 順序儲存界限 M 範圍。
表 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
|
註:
- X = 40 + (16 * NumPoints); Y = X + 16 + (8 * NumPoints)
- * 選用性
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
|
註:
- X = 44 + (4 * NumParts), Y = X + (16 * NumPoints), Z = Y + 16 + (8 *
NumPoints)
- * 選用性
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
|
[ 頁面頂端 | 前一頁 | 下一頁 | 目錄 | 索引 ]