使用者の手引きおよび解説書

ESRI 形状表現

地理情報エクステンダーには、ESRI 形状表現から図形を生成する関数がいくつかあります。 Open GIS 事前割り当てバイナリー表現によってサポートされる 2 次元表現に加えて、 ESRI 形状表現もオプションの Z 座標と測定値をサポートしています。以下の関数は、ESRI 形状から図形を生成します。

GeometryFromShape
任意の図形タイプの形状表現から図形を作成します。

PointFromShape
ポイントの形状表現からポイントを作成します。

LineFromShape
折れ線の形状表現から折れ線を作成します。

PolyFromShape
ポリゴンの形状表現からポリゴンを作成します。

MPointFromShape
複数ポイントの形状表示から複数ポイントを作成します。

MLineFromShape
複数折れ線の形状表現から複数折れ線を作成します。

MPolyFromShape
複数ポリゴンの形状表現から複数ポリゴンを作成します。

これらの関数の一般的な構文は同じです。最初の引き数は、2 進ラージ・オブジェクト (BLOB) データ・タイプとして入力される形状表現です。 2 番目の引き数は、図形に割り当てる地理情報参照 ID の整数です。 GeometryFromShape 関数は以下のような構文になります。

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

これらの形状関数では、バイナリー表現をマップする C プログラミング言語構造を定義する必要があるので、 3GL プログラムで使用するよう意図されており、4GL 環境での使用には適していません。 AsShape 関数は、図形値を ESRI 形状表現に変換します。

0 という形状タイプは、形状の図形データがない、ヌル形状を示しています。
形状タイプ
0 ヌル形状
1 ポイント
3* 折れ線
5 ポリゴン
8 複数ポイント
11 ポイント Z
13 折れ線 Z
15 ポリゴン Z
18 複数ポイント Z
21 ポイント M
23 折れ線 M
25 ポリゴン M
28 複数ポイント M

注:
* 上記で示されていない形態タイプ (2、4、6、など) は、将来の利用のために予約済みです。

XY スペースでの形状タイプ

ポイント

ポイントは、X、Y という順番の、一組の倍精度の座標で構成されています。

表 67. ポイントのバイト・ストリームの内容

位置

フィールド


タイプ


順序

バイト 0

形状タイプ

1

整数

1

リトル

バイト 4

X

X

倍精度

1

リトル

バイト 12

Y

Y

倍精度

1

リトル

複数ポイント

複数ポイントは、ポイントの集合で構成されています。境界ボックスは、Xmin、Ymin、Xmax、Ymax の順序で保管されています。

表 68. 複数ポイントのバイト・ストリームの内容

位置

フィールド


タイプ


順序

バイト 0

形状タイプ

8

整数

1

リトル

バイト 4

Box

Box

倍精度

4

リトル

バイト 36

NumPoints

NumPoints

整数

1

リトル

バイト 40

Points

Points

ポイント

NumPoints

リトル

折れ線

折れ線は、1 つまたは複数のパーツから成る、順序が付けられた頂点の集合です。パーツは、一連の複数のポイントをつなげたものです。ポイントはお互いにつながっている場合と、そうでない場合があります。パーツはお互いに交差している場合と、そうでない場合があります。

この仕様では連続するポイントが同一の座標を持つことを禁止していないので、形状ファイル読み取りプログラムはこのような場合も処理しなければなりません。他方、結果としてパーツが短くなり、長さが 0 になることは、許可されません。

以下が折れ線のフィールドです。

Box
Xmin、Ymin、Xmax、Ymax の順序で保管されている、折れ線の境界ボックス。

NumParts
折れ線にあるパーツの数。

NumPoints
すべてのパーツにあるポイントの合計数。

Parts
NumParts の長さの配列。折れ線ごとに、ポイントの配列における最初のポイントの指数を保管します。配列指数は、0 をベースとしています。

Points
NumPoints の長さの配列。折れ線にある各パーツのポイントを端から端まで保管します。パーツ 1 のポイントの後にパーツ 2 のポイントが続くというようにつなげます。パーツの配列には、パーツごとの最初のポイントの配列指数が保持されます。パーツ間のポイントの配列には、区切り文字は入りません。

表 69. 折れ線のバイト・ストリームの内容

位置

フィールド


タイプ


順序

バイト 0

形状タイプ

3

整数

1

リトル

バイト 4

Box

Box

倍精度

4

リトル

バイト 36

NumParts

NumParts

整数

1

リトル

バイト 40

NumPoints

NumPoints

整数

1

リトル

バイト 44

Parts

Parts

整数

NumParts

リトル

バイト X

Points

Points

ポイント

NumPoints

リトル

注:
X = 44 + 4 * NumParts

ポリゴン

ポリゴンは 1 つまたは複数のリングで構成されています。リングとは、閉じた形の 4 つ以上の連続するポイントをつなげたもので、自分自身と交差することのないループになっています。ポリゴンには、複数の外部リングを含めることができます。頂点の順序やリングの方向は、リングのどちらの側がポリゴンの内部であるかを示します。頂点の順序でリングにそって歩くとすると、右側がポリゴンの内側になります。ポリゴンの中の穴を定義するリングの頂点は、左回りの順序になっています。そのため、1 つのリングであるポリゴンの頂点は、必ず右回りの順序になります。ポリゴンのリングのことを、そのポリゴンのパーツといいます。

この仕様では連続するポイントが同一の座標を持つことを禁止していないので、形状ファイル読み取りプログラムはこのような場合も処理しなければなりません。他方、結果としてパーツが小さくなり、長さや面積が 0 になることは、許可されません。

以下がポリゴンのフィールドです。

Box
Xmin、Ymin、Xmax、Ymax の順序で保管されている、ポリゴンの境界ボックス。

NumParts
ポリゴンのリングの数。

NumPoints
すべてのリングにあるポイントの合計数。

Parts
NumParts の長さの配列。リングごとに、ポイントの配列における最初のポイントの指数を保管します。配列指数は、0 をベースとしています。

Points
NumPoints の長さの配列。ポリゴンにある各リングのポイントを端から端まで保管します。リング 1 のポイントの後にリング 2 のポイントが続くというようにつなげます。パーツの配列には、リングごとの最初のポイントの配列指数が保持されます。リング間のポイントの配列には、区切り文字は入りません。

ポリゴンの形状に関する重要な注釈

ポリゴンのインスタンスの例

図 40. 1 つの穴と 8 つの頂点があるポリゴン

top

図 41. ポリゴンのバイト・ストリームの内容. NumParts は 2 に等しく、NumPoints は 10 に等しくなっています。 ドーナツ (穴) ポリゴンにあるポイントの順序が逆になっていることに注意してください。

top

表 70. ポリゴンのバイト・ストリームの内容

位置

フィールド


タイプ


順序

バイト 0

形状タイプ

5

整数

1

リトル

バイト 4

Box

Box

倍精度

4

リトル

バイト 36

NumParts

NumParts

整数

1

リトル

バイト 40

NumPoints

NumPoints

整数

1

リトル

バイト 44

Parts

Parts

整数

NumParts

リトル

バイト X

Points

Points

ポイント

NumPoints

リトル

注:
X = 44 + 4 * NumParts

XY スペースでの測定された形状タイプ

ポイント M

ポイント M は、X、Y という順番の一組の倍精度の座標と測定値 M で構成されています。

表 71. ポイント M のバイト・ストリームの内容

位置

フィールド


タイプ


順序

バイト 0

形状タイプ

21

整数

1

リトル

バイト 4

X

X

倍精度

1

リトル

バイト 12

Y

Y

倍精度

1

リトル

バイト 20

M

M

倍精度

1

リトル

複数ポイント M

以下が複数ポイント M のフィールドです。

Box
Xmin、Ymin、Xmax、Ymax の順番で保管されている、複数ポイント M の境界ボックス。

NumPoints
ポイントの数。

Points
NumPoints の長さのポイントの配列。

NumMs
後に続く測定値の数。このフィールドの後に測定値が入力されていない場合、 NumMs は 2 つのゼロ値しかとることができません。測定値が入力されている場合は、NumPoints と等しくなります。

M Range
Mmin、Mmax の順番で保管される、複数ポイント M の最小と最大の測定値。

M Array
NumPoints の長さの測定値の配列。

表 72. 複数ポイント M のバイト・ストリームの内容

位置

フィールド


タイプ


順序

バイト 0

形状タイプ

28

整数

1

リトル

バイト 4

Box

Box

倍精度

4

リトル

バイト 36

NumPoints

NumPoints

整数

1

リトル

バイト 40

Points

Points

ポイント

NumPoints

リトル

バイト X

NumMs

NumMs

整数

1

リトル

バイト X+4*

Mmin

Mmin

倍精度

1

リトル

バイト X+12*

Mmax

Mmax

倍精度

1

リトル

バイト X+20*

Marray

Marray

倍精度

NumPoints

リトル

注:

  1. X = 40 + (16 * NumPoints)

  2. * 任意指定

折れ線 M

形状ファイルである折れ線 M は、1 つまたは複数のパーツで構成されています。パーツは、一連の複数のポイントをつなげたものです。パーツはお互いにつながっている場合と、そうでない場合があります。また、お互いに交差している場合と、そうでない場合があります。

以下が折れ線 M のフィールドです。

Box
Xmin、Ymin、Xmax、Ymax の順番で保管されている、折れ線 M の境界ボックス。

NumParts
折れ線 M にあるパーツの数。

NumPoints
すべてのパーツにあるポイントの合計数。

Parts
NumParts の長さの配列。パーツごとに、ポイントの配列における最初のポイントの指数を保管します。配列指数は、0 をベースとしています。

Points
NumPoints の長さの配列。折れ線 M にある各パーツのポイントを端から端まで保管します。パーツ 1 のポイントの後にパーツ 2 のポイントが続くというようにつなげます。パーツの配列には、パーツごとの最初のポイントの配列指数が保持されます。パーツ間のポイントの配列には、区切り文字は入りません。

NumMs
後に続く測定値の数。このフィールドの後に測定値が入力されていない場合、 NumMs は 2 つのゼロ値しかとることができません。測定値が入力されている場合は、NumPoints と等しくなります。

M Range
Mmin、Mmax の順番で保管される、折れ線 M の最小と最大の測定値。

M Array
NumPoints の長さの配列。折れ線 M にある各パーツの測定値を端から端まで保管します。パーツ 1 の測定値の後にパーツ 2 の測定値が続くようにつなげます。パーツの配列には、パーツごとの最初のポイントの配列指数が保持されます。パーツ間の測定値の配列には、区切り文字は入りません。

表 73. 折れ線 M のバイト・ストリームの内容

位置

フィールド


タイプ


順序

バイト 0

形状タイプ

13

整数

1

リトル

バイト 4

Box

Box

倍精度

4

リトル

バイト 36

NumParts

NumParts

整数

1

リトル

バイト 40

NumPoints

NumPoints

整数

1

リトル

バイト 44

Parts

Parts

整数

NumParts

リトル

バイト X

Points

Points

ポイント

NumPoints

リトル

バイト Y

NumMs

NumMs

整数

1

リトル

バイト Y+4*

Mmin

Mmin

倍精度

1

リトル

バイト Y+12*

Mmax

Mmax

倍精度

1

リトル

バイト Y+20*

Marray

Marray

倍精度

NumPoints

リトル

注:

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

  2. * 任意指定

ポリゴン M

ポリゴン M は、多数のリングで構成されています。リングは、閉じた形で自分自身と交差することのないループになっています。交差部分が計算されるのは XY スペースであって、 XYM スペースではない ことに注意してください。ポリゴン M には、複数の外部リングを含めることができます。ポリゴン M のリングのことを、そのポリゴン M のパーツといいます。

以下がポリゴン M のフィールドです。

Box
Xmin、Ymin、Xmax、Ymax の順番で保管されている、ポリゴン M の境界ボックス。

NumParts
ポリゴン M のリングの数。

NumPoints
すべてのリングにあるポイントの合計数。

Parts
NumParts の長さの配列。リングごとに、ポイントの配列における最初のポイントの指数を保管します。配列指数は、0 をベースとしています。

Points
NumPoints の長さの配列。ポリゴン M にある各リングのポイントを端から端まで保管します。リング 1 のポイントの後にリング 2 のポイントが続くというようにつなげます。パーツの配列には、リングごとの最初のポイントの配列指数が保持されます。リング間のポイントの配列には、区切り文字は入りません。

NumMs
後に続く測定値の数。このフィールドの後に測定値が入力されていない場合、 NumMs は 2 つのゼロ値しかとることができません。測定値が入力されている場合は、NumPoints と等しくなります。

M Range
Mmin、Mmax の順番で保管される、ポリゴン M の最小と最大の測定値。

M Array
NumPoints の長さの配列。ポリゴン M にある各リングの測定値を端から端まで保管します。リング 1 の測定値の後にリング 2 の測定値が続くというようにつなげます。パーツの配列には、リングごとの最初の測定値の配列指数が保持されます。リング間の測定値の配列には、区切り文字は入りません。

ポリゴン M の形状に関する重要な注釈

表 74. ポリゴン M のバイト・ストリームの内容

位置

フィールド


タイプ


順序

バイト 0

形状タイプ

15

整数

1

リトル

バイト 4

Box

Box

倍精度

4

リトル

バイト 36

NumParts

NumParts

整数

1

リトル

バイト 40

NumPoints

NumPoints

整数

1

リトル

バイト 44

Parts

Parts

整数

NumParts

リトル

バイト X

Points

Points

ポイント

NumPoints

リトル

バイト Y

NumMs

NumMs

整数

1

リトル

バイト Y+4*

Mmin

Mmin

倍精度

1

リトル

バイト Y+12*

Mmax

Mmax

倍精度

1

リトル

バイト Y+20*

Marray

Marray

倍精度

NumPoints

リトル

注:

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

  2. * 任意指定

XYZ スペースでの形状タイプ

ポイント Z

ポイント Z は、X、Y、Z という順番の三つ組の倍精度の座標と測定値で構成されています。

表 75. ポイント Z のバイト・ストリームの内容

位置

フィールド


タイプ


順序

バイト 0

形状タイプ

11

整数

1

リトル

バイト 4

X

X

倍精度

1

リトル

バイト 12

Y

Y

倍精度

1

リトル

バイト 20

Z

Z

倍精度

1

リトル

バイト 28

測定値

M

倍精度

1

リトル

複数ポイント Z

複数ポイント Z は、以下のようなポイント Z の集合を表しています。


表 76. 複数ポイント Z のバイト・ストリームの内容

位置

フィールド


タイプ


順序

バイト 0

形状タイプ

18

整数

1

リトル

バイト 4

Box

Box

倍精度

4

リトル

バイト 36

NumPoints

NumPoints

整数

1

リトル

バイト 40

Points

Points

ポイント

NumPoints

リトル

バイト X

Zmin

Zmin

倍精度

1

リトル

バイト X+8

Zmax

Zmax

倍精度

1

リトル

バイト X+16

Zarray

Zarray

倍精度

NumPoints

リトル

バイト Y

NumMs

NumMs

整数

1

リトル

バイト Y+4*

Mmin

Mmin

倍精度

1

リトル

バイト Y+12*

Mmax

Mmax

倍精度

1

リトル

バイト Y+20*

Marray

Marray

倍精度

NumPoints

リトル

注:

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

  2. * 任意指定

折れ線 Z

折れ線 Z は 1 つまたは複数のパーツで構成されています。パーツは、一連の複数のポイントをつなげたものです。パーツはお互いにつながっている場合と、そうでない場合があります。また、お互いに交差している場合と、そうでない場合があります。

以下が折れ線 Z のフィールドです。

Box
Xmin、Ymin、Xmax、Ymax の順番で保管されている、折れ線 Z の境界ボックス。

NumParts
折れ線 Z にあるパーツの数。

NumPoints
すべてのパーツにあるポイントの合計数。

Parts
NumParts の長さの配列。パーツごとに、ポイントの配列における最初のポイントの指数を保管します。配列指数は、0 をベースとしています。

Points
NumPoints の長さの配列。折れ線 Z にある各パーツのポイントを端から端まで保管します。パーツ 1 のポイントの後にパーツ 2 のポイントが続くというようにつなげます。パーツの配列には、パーツごとの最初のポイントの配列指数が保持されます。パーツ間のポイントの配列には、区切り文字は入りません。

Z Range
Zmin、Zmax の順序で保管される、折れ線 Z の最小と最大の Z 値。

Z Array
NumPoints の長さの配列。折れ線 Z にある各パーツの Z 値を端から端まで保管します。パーツ 1 の Z 値の後にパーツ 2 の Z 値が続くようにつなげます。パーツの配列には、パーツごとの最初のポイントの配列指数が保持されます。パーツ間の Z 値の配列には、区切り文字は入りません。

NumMs
後に続く測定値の数。このフィールドの後に測定値が入力されていない場合、 NumMs は 2 つのゼロ値しかとることができません。測定値が入力されている場合は、NumPoints と等しくなります。

M Range
Mmin、Mmax の順番で保管される、折れ線 Z の最小と最大の測定値。

M Array
NumPoints の長さの配列。折れ線 Z にある各パーツの測定値を端から端まで保管します。パーツ 1 の測定値の後にパーツ 2 の測定値が続くようにつなげます。パーツの配列には、パーツごとの最初の測定値の配列指数が保持されます。パーツ間の測定値の配列には、区切り文字は入りません。

表 77. 折れ線 Z のバイト・ストリームの内容

位置

フィールド


タイプ


順序

バイト 0

形状タイプ

13

整数

1

リトル

バイト 4

Box

Box

倍精度

4

リトル

バイト 36

NumParts

NumParts

整数

1

リトル

バイト 40

NumPoints

NumPoints

整数

1

リトル

バイト 44

Parts

Parts

整数

NumParts

リトル

バイト X

Points

Points

ポイント

NumPoints

リトル

バイト Y

Zmin

Zmin

倍精度

1

リトル

バイト Y+8

Zmax

Zmax

倍精度

1

リトル

バイト Y+16

Zarray

Zarray

倍精度

NumPoints

リトル

バイト Z

NumMs

NumMs

整数

1

リトル

バイト Z+4*

Mmin

Mmin

倍精度

1

リトル

バイト Z+12*

Mmax

Mmax

倍精度

1

リトル

バイト Z+20*

Marray

Marray

倍精度

NumPoints

リトル

注:

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

  2. * 任意指定

ポリゴン Z

ポリゴン Z は、多数のリングで構成されています。リングは、閉じた形で自分自身と交差することのないループになっています。ポリゴン Z には、複数の外部リングを含めることができます。ポリゴン Z のリングのことを、そのポリゴン Z のパーツといいます。

以下がポリゴン Z のフィールドです。

Box
Xmin、Ymin、Xmax、Ymax の順序で保管されている、ポリゴン Z の境界ボックス。

NumParts
ポリゴン Z のリングの数。

NumPoints
すべてのリングにあるポイントの合計数。

Parts
NumParts の長さの配列。リングごとに、ポイントの配列における最初のポイントの指数を保管します。配列指数は、0 をベースとしています。

Points
NumPoints の長さの配列。ポリゴン Z にある各リングのポイントを端から端まで保管します。リング 1 のポイントの後にリング 2 のポイントが続くというようにつなげます。パーツの配列には、リングごとの最初のポイントの配列指数が保持されます。リング間のポイントの配列には、区切り文字は入りません。

Z Range
Zmin、Zmax の順序で保管される弧の最小と最大の Z 値。

Z Array
NumPoints の長さの配列。ポリゴン Z にある各リングの Z 値を端から端まで保管します。リング 1 の Z 値の後にリング 2 の Z 値が続くようにつなげます。パーツの配列には、リングごとの最初の Z 値の配列指数が保持されます。リング間の Z 値の配列には、区切り文字は入りません。

NumMs
後に続く測定値の数。このフィールドの後に測定値が入力されていない場合、 NumMs は 2 つのゼロ値しかとることができません。測定値が入力されている場合は、NumPoints と等しくなります。

M Range
Mmin、Mmax の順序で保管される、ポリゴン Z の最小と最大の測定値。

M Array
NumPoints の長さの配列。ポリゴン Z にある各リングの測定値を端から端まで保管します。リング 1 の測定値の後にリング 2 の測定値が続くというようにつなげます。パーツの配列には、リングごとの最初の測定値の配列指数が保持されます。リング間の測定値の配列には、区切り文字は入りません。

ポリゴン Z の形状に関する重要な注釈

表 78. ポリゴン Z のバイト・ストリームの内容

位置

フィールド


タイプ


順序

バイト 0

形状タイプ

15

整数

1

リトル

バイト 4

Box

Box

倍精度

4

リトル

バイト 36

NumParts

NumParts

整数

1

リトル

バイト 40

NumPoints

NumPoints

整数

1

リトル

バイト 44

Parts

Parts

整数

NumParts

リトル

バイト X

Points

Points

ポイント

NumPoints

リトル

バイト Y

Zmin

Zmin

倍精度

1

リトル

バイト Y+8

Zmax

Zmax

倍精度

1

リトル

バイト Y+16

Zarray

Zarray

倍精度

NumPoints

リトル

バイト Z

NumMs

NumMs

整数

1

リトル

バイト Z+4*

Mmin

Mmin

倍精度

1

リトル

バイト Z+12*

Mmax

Mmax

倍精度

1

リトル

バイト Z+20*

Marray

Marray

倍精度

NumPoints

リトル


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]