用户指南和参考

ESRI 形状表示

DB2 Spatial Extender 具有几个从 ESRI 形状表示生成几何图形的函数: 除了开放式 GIS 公认二进制表示支持的二维表示之外,ESRI 形状表示还支持可选的 Z 坐标和度量单位。下列函数从 ESRI 形状生成几何图形:

ST_GeometryFromShape
从任何几何图形类型的形状表示创建几何图形。

ST_PointFromShape
从点形状表示创建点。

ST_LineFromShape
从线条形状表示创建线条。

ST_PolyFromShape
从多边形形状表示创建多边形。

ST_MPointFromShape
从多点形状表示创建多个点。

ST_MLineFromShape
从多线条形状表示创建多线条。

ST_MPolyFromShape
从复合多边形形状表示创建复合多边形。

这些函数的一般语法相同。第一个自变量是形状表示, 以二进制大对象 (BLOB) 数据类型的格式输入。 第二个自变量是给几何图形指定的 Spatial 参考系标识符整数。 GeometryFromShape 函数具有以下语法:

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

因为这些形状函数需要定义 C 程序设计语言结构来映射二进制表示, 所以只打算在 3GL 程序内使用它们,它们不适合 4GL 环境。 AsShape 函数将几何图形值转换为 ESRI 形状表示。

形状类型 0 指示空形状,即该形状没有几何图形数据。
形状类型
0 空形状
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

小尾结构

字节 4

X

X

双精度

1

小尾结构

字节 12

Y

Y

双精度

1

小尾结构

多个点

多个点由点的集合组成。按次序 Xmin、Ymin、Xmax、Ymax 存储的边界框。

表 67.
多点字节流内容

位置

字段


类型

数目

次序

字节 0

形状类型

8

整数

1

小尾结构

字节 4



双精度

4

小尾结构

字节 36

点数

点数

整数

1

小尾结构

字节 40




点数

小尾结构

折线

折线是由一个或多个部件组成的有序顶点集。每个部件是两点或多个点的连接序列。 点彼此可能连接或可能不连接。部件彼此可能相交或可能不相交。

因为此规范不禁止具有相同坐标的连续点,因此形状文件读程序必须处理这种情况。 在另一方面,不允许可能导致的退化零长度部件。

“折线”的字段如下:

按次序 Xmin、Ymin、Xmax、Ymax 存储的“折线”的边界框。

部件数
“折线”中的部件数。

点数
所有部件的点的总数。

部件
长度为“部件数”的数组。 每个“折线”存储它在点数组中的第一个点的下标。 数组下标是相对于 0 的。

长度为“点数”的数组。 头尾相接地存储“折线”中每个部件的点。 第 2 个部件的点跟随第 1 个部件的点,以此类推。 部件数组保持每个部件的起始点的数组下标。 在点数组中的部件之间没有定界符。

表 68.
折线字节流内容

位置

字段


类型

数目

次序

字节 0

形状类型

3

整数

1

小尾结构

字节 4



双精度

4

小尾结构

字节 36

部件数

部件数

整数

1

小尾结构

字节 40

点数

点数

整数

1

小尾结构

字节 44

部件

部件

整数

部件数

小尾结构

字节 X




点数

小尾结构

注意:X = 44 + 4 * 部件数。

多边形

多边形由一个或多个环组成。环是四个或更多点的连接序列,形成封闭的不自相交的环路。 一个多边形可包含多个外环。环的顶点的次序或方向指示环的哪一边是多边形的内部。 按顶点次序沿着环行走的观察者的右边邻近区域是多边形内部的邻近区域。 定义多边形中孔的环的顶点按反时针方向。因此, 单个有环的多边形的顶点总是按顺时针次序。 多边形的环称作部件。

因为此规范不禁止具有相同坐标的连续点,因此形状文件读程序必须处理这种情况。 在另一方面,不允许可能导致的退化零长度部件。

多边形的字段如下:

按次序 Xmin、Ymin、Xmax、Ymax 存储的“多边形”的边界框。

部件数
多边形中的环数。

点数
所有环的点的总数。

部件
长度为“部件数”的数组。 存储每个环在点数组中的第一个点的下标。 数组下标是相对于 0 的。

长度为“点数”的数组。 头尾相接地存储多边形中每个环的点。 第 2 个环的点跟随第 1 个环的点,以此类推。 部件数组保持每个环的起始点的数组下标。 在点数组中的环之间没有定界符。

关于“多边形”形状的重要注意事项:

多边形实例示例

图 40. 具有一个孔和八个顶点的多边表


顶部

图 41. 多边形字节流的内容. “部件数”等于 2,“点数”等于 10。注意环形(孔)多边形的点的次序已反向。


顶部


表 69.
多边形字节流内容

位置

字段


类型

数目

次序

字节 0

形状类型

5

整数

1

小尾结构

字节 4



双精度

4

小尾结构

字节 36

部件数

部件数

整数

1

小尾结构

字节 40

点数

点数

整数

1

小尾结构

字节 44

部件

部件

整数

部件数

小尾结构

字节 X




点数

小尾结构

注意:X = 44 + 4 * 部件数。

XY 空间中带度量单位的形状类型

PointM

PointM 由按 X、Y 次序的双精度坐标对加上度量单位 M 组成。

表 70.
PointM 字节流内容

位置

字段


类型

数目

次序

字节 0

形状类型

21

整数

1

小尾结构

字节 4

X

X

双精度

1

小尾结构

字节 12

Y

Y

双精度

1

小尾结构

字节 20

M

M

双精度

1

小尾结构

MultiPointM

MultiPointM 的字段如下:

按次序 Xmin、min、Xmax、Ymax 存储的 MultiPointM 的边界框。

点数
点的数目。

长度为“点数”的“点”数组。

M 数
跟随的“度量单位”数。“M 数”仅可为两个值, 若没有“度量单位”跟随此字段则为零,若有“度量单位”,则“M 数”等于“点数”。

M 范围
按 Mmin、Mmax 次序存储的 MultiPointM 的最小和最大度量单位。

M 数组
长度为“点数”的“度量单位”数组。

表 71.
MultiPointM 字节流内容

位置

字段


类型

数目

次序

字节 0

形状类型

28

整数

1

小尾结构

字节 4



双精度

4

小尾结构

字节 36

点数

点数

整数

1

小尾结构

字节 40




点数

小尾结构

字节 X

M 数

M 数

整数

1

小尾结构

字节 X+4*

Mmin

Mmin

双精度

1

小尾结构

字节 X+12*

Mmax

Mmax

双精度

1

小尾结构

字节 X+20*

M 数组

M 数组

双精度

点数

小尾结构

记录:

  1. X = 40 + (16 * 点数)

  2. * 可选

PolyLineM

一个形状文件 PolyLineM 由一个或多个部件组成。每个部件是两点或多个点的连接序列。 部件彼此可能连接或可能不连接。 部件彼此可能相交或可能不相交。

PolyLineM 的字段如下:

按次序 Xmin、min、Xmax、Ymax 存储的 PolyLineM 的边界框。

部件数
PolyLineM 中的部件数。

点数
所有部件的点的总数。

部件
长度为“部件数”的数组。 存储每个部件在点数组中的第一个点的下标。 数组下标是相对于 0 的。

长度为“点数”的数组。 头尾相接地存储 PolyLineM 中每个部件的点。 第 2 个部件的点跟随第 1 个部件的点,以此类推。 部件数组保持每个部件的起始点的数组下标。 在点数组中的部件之间没有定界符。

M 数
跟随的“度量单位”数。“M 数”仅可为两个值, 若没有“度量单位”跟随此字段则为零,若有“度量单位”,则“M 数”等于“点数”。

M 范围
按 Mmin、Mmax 次序存储的 PolyLineM 的最小和最大度量单位。

M 数组
长度为“点数”的数组。头尾相接地存储 PolyLineM 中每个部件的点。 第 2 个部件的度量单位跟随第 1 个部件的度量单位,以此类推。部件数组保持每个部件的起始点的数组下标。 在度量单位数组中的部件之间没有定界符。

表 72.
PolyLineM 字节流内容

位置

字段


类型

数目

次序

字节 0

形状类型

13

整数

1

小尾结构

字节 4



双精度

4

小尾结构

字节 36

部件数

部件数

整数

1

小尾结构

字节 40

点数

点数

整数

1

小尾结构

字节 44

部件

部件

整数

部件数

小尾结构

字节 X




点数

小尾结构

字节 Y

M 数

M 数

整数

1

小尾结构

字节 Y+4*

Mmin

Mmin

双精度

1

小尾结构

字节 Y+12*

Mmax

Mmax

双精度

1

小尾结构

字节 Y+20*

M 数组

M 数组

双精度

点数

小尾结构

记录:

  1. X = 44 + (4 * 部件数),Y = X + (16 * 点数)。

  2. * 可选

PolygonM

一个 PolygonM 由几个环组成。环是封闭的不自相交的环路。 注意:交点是在 XY 空间而不是在 XYM 空间中计算。 PolygonM 可包含多个外环。PolygonM 的环称作部件。

PolygonM 的字段如下:

按次序 Xmin、min、Xmax、Ymax 存储的 PolygonM 的边界框。

部件数
PolygonM 中的环数。

点数
所有环的点的总数。

部件
长度为“部件数”的数组。 存储每个环在点数组中的第一个点的下标。 数组下标是相对于 0 的。

长度为“点数”的数组。头尾相接地存储 PolygonM 中每个环的点。 第 2 个环的点跟随第 1 个环的点,以此类推。部件数组保持每个环的起始点的数组下标。 在点数组中的环之间没有定界符。

M 数
跟随的“度量单位”数。“M 数”仅可为两个值, 若没有“度量单位”跟随此字段则为零,若有“度量单位”,则“M 数”等于“点数”。

M 范围
按 Mmin、Mmax 次序存储的 PolygonM 的最小和最大度量单位。

M 数组
长度为“点数”的数组。头尾相接地存储 PolygonM 中每个环的度量单位。 第 2 个环的度量单位跟随第 1 个环的度量单位,以此类推。 部件数组保持每个环的起始度量单位的数组下标。 在度量单位数组中的环之间没有定界符。

关于 PolygonM 形状的重要注意事项:

表 73.
PolygonM 字节流内容

位置

字段


类型

数目

次序

字节 0

形状类型

15

整数

1

小尾结构

字节 4



双精度

4

小尾结构

字节 36

部件数

部件数

整数

1

小尾结构

字节 40

点数

点数

整数

1

小尾结构

字节 44

部件

部件

整数

部件数

小尾结构

字节 X




点数

小尾结构

字节 Y

M 数

M 数

整数

1

小尾结构

字节 Y+4*

Mmin

Mmin

双精度

1

小尾结构

字节 Y+12*

Mmax

Mmax

双精度

1

小尾结构

字节 Y+20*

M 数组

M 数组

双精度

点数

小尾结构

记录:

  1. X = 44 + (4 * 部件数),Y = X + (16 * 点数)。

  2. * 可选

XYZ 空间中的形状类型

PointZ

一个 PointZ 由按 X、Y、Z 次序的三个一组的双精度坐标加上度量单位组成。

表 74.
PointZ 字节流内容

位置

字段


类型

数目

次序

字节 0

形状类型

11

整数

1

小尾结构

字节 4

X

X

双精度

1

小尾结构

字节 12

Y

Y

双精度

1

小尾结构

字节 20

Z

Z

双精度

1

小尾结构

字节 28

度量单位

M

双精度

1

小尾结构

MultiPointZ

MultiPointZ 表示一组 PointZ,如下所示:


表 75.
MultiPointZ 字节流内容

位置

字段


类型

数目

次序

字节 0

形状类型

18

整数

1

小尾结构

字节 4



双精度

4

小尾结构

字节 36

点数

点数

整数

1

小尾结构

字节 40




点数

小尾结构

字节 X

Zmin

Zmin

双精度

1

小尾结构

字节 X+8

Zmax

Zmax

双精度

1

小尾结构

字节 X+16

Z 数组

Z 数组

双精度

点数

小尾结构

字节 Y

M 数

M 数

整数

1

小尾结构

字节 Y+4*

Mmin

Mmin

双精度

1

小尾结构

字节 Y+12*

Mmax

Mmax

双精度

1

小尾结构

字节 Y+20*

M 数组

M 数组

双精度

点数

小尾结构

记录:

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

  2. * 可选

PolyLineZ

一个 PolyLineZ 由一个或多个部件组成。每个部件是两点或多个点的连接序列。 部件彼此可能连接或可能不连接。 部件彼此可能相交或可能不相交。

PolyLineZ 的字段如下:

按次序 Xmin、min、Xmax、Ymax 存储的 PolyLineZ 的边界框。

部件数
PolyLineZ 中的部件数。

点数
所有部件的点的总数。

部件
长度为“部件数”的数组。 存储每个部件在点数组中的第一个点的下标。 数组下标是相对于 0 的。

长度为“点数”的数组。 头尾相接地存储 PolyLineZ 中每个部件的点。 第 2 个部件的点跟随第 1 个部件的点,以此类推。 部件数组保持每个部件的起始点的数组下标。 在点数组中的部件之间没有定界符。

Z 范围
按次序 Zmin、Zmax 存储的 PolyLineZ 的最小和最大 Z 值。

Z 数组
长度为“点数”的数组。头尾相接地存储 PolyLineZ 中每个部件的 Z 值。 第 2 个部件的 Z 值跟随第 1 个部件的 Z 值,以此类推。部件数组保持每个部件的起始点的数组下标。 在 Z 数组中的部件之间没有定界符。

M 数
跟随的“度量单位”数。“M 数”仅可为两个值, 若没有“度量单位”跟随此字段则为零,若有“度量单位”,则“M 数”等于“点数”。

M 范围
按 Mmin、Mmax 次序存储的 PolyLineZ 的最小和最大度量单位。

M 数组
长度为“点数”的数组。头尾相接地存储 PolyLineZ 中每个部件的度量单位。 第 2 个部件的度量单位跟随第 1 个部件的度量单位,以此类推。 部件数组保持每个部件的起始度量单位的数组下标。 在度量单位数组中的部件之间没有定界符。

表 76.
PolyLineZ 字节流内容

位置

字段


类型

数目

次序

字节 0

形状类型

13

整数

1

小尾结构

字节 4



双精度

4

小尾结构

字节 36

部件数

部件数

整数

1

小尾结构

字节 40

点数

点数

整数

1

小尾结构

字节 44

部件

部件

整数

部件数

小尾结构

字节 X




点数

小尾结构

字节 Y

Zmin

Zmin

双精度

1

小尾结构

字节 Y+8

Zmax

Zmax

双精度

1

小尾结构

字节 Y+16

Z 数组

Z 数组

双精度

点数

小尾结构

字节 Z

M 数

M 数

整数

1

小尾结构

字节 Z+4*

Mmin

Mmin

双精度

1

小尾结构

字节 Z+12*

Mmax

Mmax

双精度

1

小尾结构

字节 Z+20*

M 数组

M 数组

双精度

点数

小尾结构

记录:

  1. X = 44 + (4 * 部件数),Y = X + (16 * 点数),Z = Y + 16 + (8 * 点数)

  2. * 可选

PolygonZ

一个 PolygonZ 由几个环组成。环是封闭的不自相交的环路。 一个 PolygonZ 可包含多个外环。PolygonZ 的环称作部件。

PolygonZ 的字段如下:

按次序 Xmin、min、Xmax、Ymax 存储的 PolygonZ 的边界框。

部件数
PolygonZ 中的环数。

点数
所有环的点的总数。

部件
长度为“部件数”的数组。存储每个环在点数组中的第一个点的下标。 数组下标是相对于 0 的。

长度为“点数”的数组。头尾相接地存储 PolygonZ 中每个环的点。 第 2 个环的点跟随第 1 个环的点,以此类推。部件数组保持每个环的起始点的数组下标。 在点数组中的环之间没有定界符。

Z 范围
按次序 Zmin、Zmax 存储的弧的最小和最大 Z 值。

Z 数组
长度为“点数”的数组。头尾相接地存储 PolygonZ 中每个环的 Z 值。 第 2 个环的 Z 值跟随第 1 个环的 Z 值,以此类推。 部件数组保持每个环的起始 Z 值的数组下标。 在 Z 值数组中的环之间没有定界符。

M 数
跟随的“度量单位”数。“M 数”仅可为两个值, 若没有“度量单位”跟随此字段则为零,若有“度量单位”,则“M 数”等于“点数”。

M 范围
按 Mmin、Mmax 次序存储的 PolygonZ 的最小和最大度量单位。

M 数组
长度为“点数”的数组。头尾相接地存储 PolygonZ 中每个环的度量单位。 第 2 个环的度量单位跟随第 1 个环的度量单位,以此类推。 部件数组保持每个环的起始度量单位的数组下标。 在度量单位数组中的环之间没有定界符。

关于 PolygonZ 形状的重要注意事项:

表 77.
PolygonZ 字节流内容

位置

字段


类型

数目

次序

字节 0

形状类型

15

整数

1

小尾结构

字节 4



双精度

4

小尾结构

字节 36

部件数

部件数

整数

1

小尾结构

字节 40

点数

点数

整数

1

小尾结构

字节 44

部件

部件

整数

部件数

小尾结构

字节 X




点数

小尾结构

字节 Y

Zmin

Zmin

双精度

1

小尾结构

字节 Y+8

Zmax

Zmax

双精度

1

小尾结构

字节 Y+16

Z 数组

Z 数组

双精度

点数

小尾结构

字节 Z

M 数

M 数

整数

1

小尾结构

字节 Z+4*

Mmin

Mmin

双精度

1

小尾结构

字节 Z+12*

Mmax

Mmax

双精度

1

小尾结构

字节 Z+20*

M 数组

M 数组

双精度

点数

小尾结构


[ 页的顶部 | 上一页 | 下一页 | 目录 | 索引 ]