CC BY 4.0

Universal spatial DataBase eXtension (UDBX)
オープンデータフォーマットホワイトペーパー
UDBX Open Data Format WhitePaper

Draft
日本スーパーマップ株式会社
2020年10月

I

目 次

１

概要 ............................................................................................................................................. 1

1.1 準拠 ................................................................................................................................ 1
1.2 全体構造 ........................................................................................................................ 2
1.3 データセットのタイプ ................................................................................................... 3
1.4 Geometryタイプ ........................................................................................................... 32

システムテーブル ..................................................................................................................... 4
2.1 SpatiaLiteシステムテーブル ......................................................................................... 5
2.1.1 座標系情報テーブル ............................................................................................... 5
2.1.2 ベクタデータセットシステムテーブル ................................................................... 6
2.2 SuperMapシステムテーブル ......................................................................................... 6
2.2.1 データソースの説明情報テーブル .......................................................................... 6
2.2.2 ベクトルデータセットシステムテーブル .............................................................. 7
2.2.3ラスタデータセットシステムテーブル ................................................................... 113

データテーブル ....................................................................................................................... 14
3.1 ベクタデータセット .................................................................................................... 15
3.1.1 属性データセット ................................................................................................. 15
3.1.2 2 D/3D/ポイントデータセット ............................................................................ 15
3.1.3 2D/3D/ラインデータセット ................................................................................. 15
3.1.4 2D/3D/ポリゴンデータセット ............................................................................ 16
3.1.5 テキストデータセット .......................................................................................... 16
3.1.6 複合データセット ................................................................................................. 17
3.1.7 2D/3Dネットワークデータセット ........................................................................ 18
3.1.8 3Dモデルデータセット .......................................................................................... 19
3.2 ラスタデータセット .................................................................................................... 20
3.2.1 Imageデータセット ............................................................................................... 21
3.2.2 Gridデータセット ................................................................................................. 21
3.2.3 VoxelGridデータセット ....................................................................................... 21
3.2.4 モザイクデータセット ......................................................................................... 21II4

オブジェクト保存構造 .......................................................................................................... 23
4.1 基本タイプ ................................................................................................................... 23
4.1.1基本データタイプ ................................................................................................... 23
4.1.2 String..................................................................................................................... 23
4.1.3 Point...................................................................................................................... 24
4.1.4 PointZ ................................................................................................................... 24
4.1.5 Rect ....................................................................................................................... 24
4.1.6 BoundingBox ........................................................................................................ 24
4.1.7 Ring ....................................................................................................................... 24
4.1.8 RingZ .................................................................................................................... 25
4.1.9 Vector3D ............................................................................................................... 25
4.1.10 Color ................................................................................................................... 25
4.2 SpatiaLiteの単純なオブジェクト ................................................................................ 25
4.2.1 GAIAPoint ............................................................................................................ 26
4.2.2 GAIAPointZ .......................................................................................................... 26
4.2.3 GAIAMultiLineString ........................................................................................... 26
4.2.4 GAIAMultiLineStringZ ......................................................................................... 27
4.2.5 GAIAPolygon ....................................................................................................... 27
4.2.6 GAIAMultiPolygon ............................................................................................... 28
4.2.7 GAIAMultiPolygonZ ............................................................................................. 28
4.3 複合データセットに保存されているオブジェクト ..................................................... 29
4.3.1 Style ...................................................................................................................... 29
4.3.2 GeoPoint ............................................................................................................... 31
4.3.3 GeoLine ................................................................................................................ 31
4.3.4 GeoRegion ............................................................................................................ 31
4.3.5 GeoPoint3D .......................................................................................................... 31
4.3.6 GeoLine3D ........................................................................................................... 32
4.3.7 GeoRegion3D ....................................................................................................... 32
4.3.8 GeoRect ................................................................................................................ 32
4.3.9 GeoRectRound ...................................................................................................... 33
4.3.10 GeoCircle ............................................................................................................ 33
4.3.11 GeoEllipse ........................................................................................................... 33
4.3.12 GeoPie ................................................................................................................ 34
4.3.13 GeoArc ................................................................................................................ 34
4.3.14 GeoEllipticArc ..................................................................................................... 34
4.3.15 曲線 ..................................................................................................................... 35III

4.4 テキストオブジェクト ................................................................................................. 35
4.5 3Dモデルオブジェクト ............................................................................................... 36
4.5.1 GeoModel3D ........................................................................................................ 38
4.5.2 ModelNodeModelNode{ ....................................................................................... 38
4.5.3 ModelEntity .......................................................................................................... 40
4.6 グリッドブロックストレージ ...................................................................................... 47
4.7 その他のオブジェクト ................................................................................................. 48
4.7.1 座標系オブジェクト .............................................................................................. 48

IV

１

概要

UDBX（(Universal Spatial Database Extension)は、SuperMapが提案したファイルタイプのオープンデータ
フォーマットです。空間データの効率的な保存と管理をサポートし、空間データの共有と交換のためのオープンで便利なソリューションを提供します。
UDBXには次のような主な特長があります。
●全空間データサポート：2、3次元統合とベクタ/ラスタ統合のデータストレージと管理を含む。
●シングルファイルストレージ：データのコピーと配布を容易にするために、単一のファイルストレージを使用します。
●同時実行サポート：1つのUDBXデータは、複数のユーザーが同時にアクセスできます。
●クロスプラットフォームのサポート：デスクトップ、サーバー、モバイル端末での効率的な読み書きをサ
ポートします。
●大量データのサポート：1つのUDBXファイルは、超大容量のデータストレージをサポートします。
●Unicodeサポート：複数の言語を格納するためのUnicodeエンコーディングをサポートします。

1.1 準拠本書に記載されている用語または略語は、次の規則に準拠します。
●OGC：オープン地理空間情報コンソーシアム(OpenGeospatialConsortium)●OGCシンプルオブジェクトモデル仕様：OGCSimplefeatureaccess-Part1：Commonarchitecture仕様に規定さ●れている単純なオブジェクトモデル●SQLite：オープンソースの軽量版リレーショナルデータベース●SpatiaLite：SQLiteベースの空間拡張エンジンに基づいて、OGC単純オブジェクトモデル仕様に準拠した
空間データの格納および管理●proj.4：OSGeoのオープンソースGISツール。マップの座標系表現と変換●WKT：OGCのWellKnownText●データセット：同じ座標系を持つ同じ種類のデータで構成されるデータコレクション●ベクタデータセット：CADデータセットを除き、同じGeometryタイプ、同じ空間参照系、同じフィールド構造を持つベクタフィーチャコレクション●ラスタデータセット：長さと幅の範囲を持った規則的な空間配列データセット。配列データは同じ空間参照系を持ち、空間位置に対応した同類の属性値、例えばは温度、標高値などを有するもの●データソース：さまざまな種類のデータセットで構成されるデータセットのコレクション

現在、UDBXが対応しているバージョンはSpatiaLite 4.3、SQLite 3.17.0となっています。

1

フィールド/データタイプについて●本書のシステムテーブル(セクション2を参照)とデータテーブル(セクション3を参照)の表“の[フィールドの種類]はSQLiteです。
●INTEGER型がデフォルトで32ビット整数であるフィールド型。
●UDBXによって提供されるデータセットフィールド情報は、SQLiteフィールドの種類に基づいて拡張されます。2.2.2.2セクション;●オブジェクトのバイナリストリームストアは、基本的なデータ型で記述され、各型の意味、値の範囲、占有バイト数などは、セクション4.1.1を参照してください。

1.2 全体構造
UDBXはSQLiteデータベースでデータを保存して、ファイル拡張名は"udbx"です。ストレージルールは、
SpatiaLiteストレージとSuperMapカスタムストレージ2つのタイプがあります。SpatiaLiteストレージはポイン
ト、ライン、ポリゴンなどの基本的なベクタタイプに対応して、SuperMapカスタムストレージ形式はその他のデータタイプに対応します。
UDBXのテーブルは、システムテーブルとデータテーブルの2つのカテゴリに区分されます。システムテー
ブルはUDBXのデータセットを管理するために使用されるため、システムテーブルはSpatiaLiteのシステムテー
ブルとSuperMapカスタムシステムテーブルと区別されます。UDBXのテーブル構造の関係を図1に示します。

図1 UDBXテーブル構造図2

1.3 データセットのタイプ
一つのudbxファイルは、複数のデータセットを格納する1つのデータソースであります。データセットには、ベクタデータセットとラスタデータセットの2つのカテゴリがあります。ベクタデータセットには、同じ座標系と属性情報を持つ空間オブジェクトが格納され、ラスタデータセットは連続したフィールドデータをブロ
ック別に格納および整理します。データセットの種類を表1に示します。
表1 データセットの種類の説明

データセットタイプ

列挙値

説

明

Tabular0

幾何オブジェクトを格納しないテーブル

Point

1

2Dポイントデータセット

PointZ

101

3Dポイントデータセット

Lin.

3

2Dラインデータセット

LineZ

103

3Dラインデータセット

RegionZ

5

2Dポリゴンデータセット

RegionZ

105

3Dポリゴンデータセット

Text

7

テキストオブジェクト

CAD

149

複数のジオメトリオブジェクトを格納する複合データセット

Network

4

2Dネットワークデータセット

Network3D

205

3Dネットワークデータセット

Model

20

3Dモデルデータセット

Image

88

マルチバンド画像データセット

Grid

83

Gridデータセットは、デジタルサーフェスモデルに対応し、ピクセル
値は地表の特徴量を表します

VoxelGrid89

ボクセルラスタデータセット

Mosaic206

モザイクデータセット

1.4 Geometryタイプ
2D/3Dポイント、ラインおよびポリゴンデータセットに格納されているオブジェクトは、SpatiaLiteのポイ
ント、ライン、ポリゴンオブジェクトを使用し、オブジェクトの命名は"GAIA"プレフィックスで識別され、その他のオブジェクトタイプは"Geo"というプレフィックスで識別されます。各Geometryタイプは表2に示され、対応するストレージ構造はセクション4を参照してください。

3

表2 Geometryタイプの説明

Geometryタイプ

説明

GAIAPoint

1

2Dポイントオブジェクト

GAIAPolygon

3

2Dポリゴンオブジェクト

GAIAMultiLineString

5

2Dライン（サブオブジェクト含む）

GAIAMultiPolygon

6

2Dライン（サブオブジェクト含む）

GAIAPointZ

1001

3Dポイントオブジェクト

GAIAMultiLineStringZ

1005

3Dライン（サブオブジェクト含む）

GAIAMultiPolygonZ

1006

3Dポリゴン（サブオブジェクト含む）

GeoPoint3D101

3Dポイント

GeoLine3D

103

3Dライン（サブオブジェクト含む）

GeoRegion3D

105

3Dポリゴン（サブオブジェクト含む）

GeoText
GeoModel3D

2

列挙値

7
1218

テキスオブジェクト
3Dモデルオブジェクト

GeoRect

12

矩形/斜め矩形

GeoRectRound

13

角丸矩形

GeoCircle

15円

GeoEllipse

20

楕円

GeoPie21

扇形

GeoArc24円アーク

GeoEllipticArc.

25

楕円アーク

GeoCardinal

27

Cardinal曲線

GeoCurve28

ペンシルライン

GeoBSpline29

Bスプライン曲線

システムテーブル

システムテーブルは、データソース内のデータセット情報を格納および管理するために使用されます。シス
テムテーブルはSpatiaLiteで定義されたシステムテーブルとSuperMapによって定義されたシステムテーブルに区分されます。

4

2.1 SpatiaLiteシステムテーブル
UDBXはSpatiaLiteを使用してポイント、ライン、ポリゴンデータセットを管理するため、主にSpatiaLiteの座標系とベクタデータセット関連のシステムテーブルに関係しています。

2.1.1 座標系情報テーブル
座標系情報はspatial_ref_sysとspatial_ref_sys_auxに格納され、2つのテーブルはsridによって関連付けられます。
表3 spatial_ref_sysspatial_ref_sysのフィールド情報

フィールド名タイプ

null値可否

説

明

srid

INTEGERN

主キー;座標系のユニークID

auth_nam

TEXT.

N

座標系の作成者/正式名称を定義します

auth_srid

INTEGERN

座標系の内部ID

ref_sys_name

TEXT

N

座標系の名

proj4tex

TEXT

N

proj.4 テキスト形式で表される座標

srtext.

TEXT

N

wkt で表される座標系

[1]

[2]

表4 spatial_ref_sys_auxのフィールド情報

フィールド名srid

タイプ
INTEGER

null値可否N説

明

主キー;外部キーは、spatial_ref_sys(srid)に関連付けられます。座標系のユニークID

is_geographic

INTEGER

Y

地理座標系かどうか

has_flipped_axes

INTEGERY

軸が反転するかどうか

spheroid

TEXT

Y

参照楕円体

prime_meridian

TEXT

Y

中央子午線

datum

TEXT

Y

測地系

projection

TEXT

Y

投影方法

unit.

TEXT

Y

座標系の単位axis_1_name

TEXT.

Y

スピンドル名

axis_1_orientation

TEXT

Y

スピンドルが向いています

axis_2_name

TEXT

Y

副軸の名前

axis_2_orientation

TEXT

Y

副軸は向いています5

2.1.2 ベクタデータセットシステムテーブル
SpatiaLiteのベクタデータセットシステムテーブル情報は、geometry_columns格納されます。
表5 geometry_columnsのフィールド情報を示します

フィールド名タイプ

null値可否説

明

f_table_name

TEXT

N

データテーブルの名前

f_geometry_column

TEXT

N

データテーブルのgeometry列名。共用主キー(f_table_name,f_geometry_column).

geometry_type

INTEGERN

geometry型を表2に示します

coord_dimension

TEXT

N

geometry座標のディメンション

srid

TEXT

N

座標系は、テーブルのspatial_ref_sysで識別されます
sridフィールドの関連付け

spatial_index_enabled

INTEGERN

空間インデックスが確立されているかどうかR*

値：0はインデックスなし、1は ツリーインデッ
クスを表します2.2 SuperMapシステムテーブル
SuperMapカスタムシステムテーブルは、データソース記述情報テーブル、ベクタデータセットシステムテーブル、ラスタデータセットシステムテーブルが含まれます。

2.2.1 データソースの説明情報テーブル
SmDataSourceInfoテーブルには、データソースの基本的な説明情報が格納されます(表6を参照)。
表6 SmDataSourceInfoテーブルのフィールド情報

フィールド名タイプ

null値可否説

明

SmFlag

INTEGERN

データソースID、主キー

SmVersion

INTEGER

Y

バージョン番号。現在のバージョン番号は10です

SmDsDescription

TEXT

Y

データソースの説明情報

SmProjectInfo

BLOB

Y

データソースの座標系情報については、4.7.1を参照

SmLastUpdateTime

DATE

N

データソースが最後に更新された時刻

6

SmDataFormat

INTEGER

N

データ保存フォーマット。現在の値は0で、UTF8エン
コードによる表します

2.2.2 ベクトルデータセットシステムテーブル
ベクタデータセットシステムテーブルには、データセットレジストリテーブル、フィールド情報テーブル、
値域情報テーブルが含まれます。

2.2.2.1 ベクタデータセットレジストテーブル
ベクタデータセットの登録情報は、SmRegisterテーブルに記録され、データセット名、対応するテーブル名、データセットの種類、親子データセットの関係などを含みます(表7を参照)。
表7 SmRegisterテーブルのフィールド情報

フィールド名タイプ

null値可否説

明SmDatasetID

INTEGERN

主キー;データセットID

SmDatasetName

TEXT

Y

データセット名

SmTableName

TEXT

Y

データテーブル名

SmOption

INTEGERY

データセットのオプション情報、レコードがピラ
ミッド付きかどうか、圧縮されているかどうか等、内部的に使用されますSmEncTypeINTEGERY

予約フィールド

SmParentDTID

INTEGERN

親データセットIDは空にすることができます

SmDatasetType

INTEGERY

データセットの種類、列挙値は表1を参照

SmObjectCountINTEGERN

オブジェクトの数(データテーブルのレコード数)

SmLeft

REAL

Y

データセットの地理的範囲：

SmRight

REAL

Y

データセットの地理的範囲：右SmTop.

REAL

Y

データセットの地理的範囲：下SmBottom

REAL

Y

データセットの地理的範囲：上SmIDColName

TEXT

Y

データテーブルオブジェクトID列名

SmGeoColName

TEXT

Y

データテーブル幾何オブジェクトの列名

SmMinZ

REAL.

Y

データセットの最小高さは、3Dデータセットに適用されます

SmMaxZ

REAL.

Y

データセットの最大高さは、3Dデータセットに適用されます

SmSRIDINTEGER

Y

座標系IDは、spatial_ref_sysテーブルのsridに関連します。フィールド値がnullの場合SmProjectInfoの値を取得します。
7

SmIndexType

INTEGERY

空間インデックスタイプ、値の範囲{0,2},0はインデックスなし、2はR木インデックスを表します。

SmToleranceFuzzy

REAL

Y

ノートスナップトレランス；トポロジ処理/編集時に使用されます。

SmToleranceDAngle

REAL

Y

角度トレランス。トポロジ処理/編集時に使用されます。

SmToleranceNodeSnap

REAL

Y

ロングダングルトレランス。トポロジ処理/編集時に使用されます。

SmToleranceSmallPolygon

REAL

Y

ポリゴン積トレランス。トポロジ処理/編集時に使用されます。

SmToleranceGrain

REAL

Y

SmMaxGeometrySize

INTEGERN

幾何オブジェクトバイナリストリーム
最大バイト数

SmOptimizeCountINTEGERN

予約フィールド

SmOptimizeRatio

REAL

Y

予約フィールド

SmDescription

TEXT

Y

データセット記述情報

SmExtInfo

TEXT

Y

データセットユーザーカスタム拡張情報。

SmCreateTime

DATETIMEY.

データセットが作成された時刻。

SmLastUpdateTime

DATETIMEY.

データセットが最後に更新された時刻。

SmProjectInfo

BLOB

Y.

データセットの座標系(4.7.1を参照)。値を指定すると、データセットの座標系が優先され、データソー
スの座標系は無視されます。

2.2.2.2 データセットフィールド情報テーブル
ベクタデータセットのフィールド情報はSmFieldInfoテーブルに格納され、表8を参照して、各データセットのフィールド(データセットのプライマリテーブルのフィールドに対応する)、各フィールドのエイリアス、SuperMapに対応するフィールドの種類などの情報が主に記録されます。
表8 SmFieldInfoテーブルのフィールド情報

フィールド名タイプ

NULL値可否

説

明

SmID

INTEGERN

主キー

SmDatasetID

INTEGERY

所有するデータセットのID
SmRegisterのSmDatasetIDフィールドに対応します。

8

SmFieldName

TEXT

Y

フィールド名SmFieldCaption

TEXT

Y

フィールド識別名

SmFieldType

INTEGER

Y

SuperMapに対応するフィールドのタイプ
表9SuperMapのフィールドタイプに示します

SmFieldFormat.

TEXT

Y

フィールドの値のフォーマット文字列

SmFieldSign

INTEGER

Y

フィールドIDを表10に示します

SmFieldDomain

TEXT

Y

破棄されたフィールド

SmFieldUpdatable

INTEGER

Y

フィールド値を変更可能かどうか

SmFieldbRequired

INTEGER

Y.

フィールドを入力するかどうか

SmFieldDefaultValue

TEXT.

Y

フィールドのデフォルト値

SmFieldSize

INTEGER

Y

フィールドの長さ

表9 SuperMapのフィールド種類

列挙値

タイプ

バイト数

値域

説

明

0

Unknown/

無効値

1

Boolean1

0^1

ブールタイプ2

Byte

1[0,255]

符号なしバイト

3

Int16

2

[-32768,32767]

16ビット整数型

4

Int32

4

[-2147483648,2147483647]

32ビット整数型

16

Int64

8

[-2 (22 -1)].

6

Float

4

[-3.4×10]38,3.4×10 ]7

Double8[-1.7×10]308,1.7×10

10

Text

外部指定

/

不定長の文字列

127

NText.

外部指定/

ワイドバイト不定長の文字列

18

Char

外部指定

/

固定長文字列

8

Date

/

/

日付：年、月、日。時間なし

22

Time

/

/

時刻：時間、分、秒。日付な

63,

63

64ビット整数型
38 38
308,1.7×10

単精度型
308

]

倍精度型

し
2

TimeStamp/

タイムスタンプ、年、月、日、
時、分、秒

9

Binary外部指定/

固定長バイナリ型

11

LongBinary

外部指定

/

不定長バイナリ型
9

表10 SuperMapのフィールドID

列挙値

説

明

0

通常のフィールド

1

ネットワークデータセットのノードID(SmNodeIDフィールドをデフォルト)2

ネットワークデータセットのエッジの起点フィールド(SmFNodeフィールドをデフォルト)3

ネットワークデータセットのエッジの終点フィールド(SmTNodeフィールドをデフォルト)4

ネットワークデータセットエッジのIDフィールド11

オブジェクトIDフィールド12

幾何オブジェクトフィールド50

ユーザー定義フィールド開始値を識別します

2.2.2.3 値域情報テーブル
値域は、範囲値域(表11を参照)と列挙値域(表12を参照)に分割され、フィールドの値を制約します。
SmDomainsテーブルは、2種類の値域情報をまとめています。表13参照;SmDomainFieldはフィールド及び適用される値域規則を記録しています(表14を参照)。
表11 SmRangeDomainsテーブルのフィールド情報

フィールド名タイプ

null値可否説

明

DomainID

INT

N

主キー

FieldType

INT.

N

フィールドタイプ

DomainRangeInfos

BLOB

Y

範囲値域規則オブジェクト(4.7.2を参照)

表12 SmCodeDomainsテーブルのフィールド情報

フィールド名タイプ

null値可否説

明

DomainID

INT

N

主キー

FieldType

INT

N

フィールドタイプ

DomainCodeInfos

BLOB

Y

値域規則オブジェクトを列挙します(4.7.2を参照)

10

表13 SmDomainsテーブルのフィールド情報

フィールド名タイプ

null値可否説

DomainID

INT

N

主キー;値域規則ID

DomainName

TEXT

N

値域名

DomainDescription

TEXT

N

説明情報

DomainType

INT

N

値域タイプ,更新：

明

1は範囲値域を表し、範囲内では有効
3は範囲値域を表し、範囲内ではないと有効2は有効な列挙値域を表し、列挙値は有効
4は無効な列挙値域を表し、列挙値は無効
表14 SmDomainFieldテーブルのフィールド情報

フィールド名DatasetID

タイプ
INT

null値可否説N明

データセットID;
SmRegisterテーブルのSmDatasetIDフィールドに関連

FieldName

TEXT

N

値域規則が適用されるデータセットのフィールド名
主キー(DatasetID、FieldName)を結合し、SmFieldInfoテーブルの.
(SmDatasetID、SmFieldName)関連付け、表8を参照

2.2.3ラスタデータセットシステムテーブル
ラスタデータセットは2つのシステムテーブルで管理する：SmImgRegisterがラスタデータセット情報を格納し、SmBandRegisterがラスタデータセットのバンド/レイヤー情報と対応するピラミッドデータセット情報を格納します。

11

2.2.3.1ラスタデータセットレジストリ
SmImgRegisterのフィールド情報を表15に示します。
表15 SmImgRegisterテーブルのフィールド情報

フィールド名SmDatasetID

タイプ
INTEGER

null値可否
N

説

明

主キー;
データセットID

SmDatasetName

TEXT

N

データセット名

SmTableName

TEXT

N

データセットテーブル名

SmDatasetType

INTEGERN

データセットタイプ、列挙値は表1に示されています

SmWidthINTEGERY

データセットの幅、ピクセル単位

SmHeight.

INTEGERY

データセットの高さ、ピクセル単位

SmeBlockSize

INTEGER

Y

保存ブロックの大きさはピクセル単位として、長さ一致。
設定64|128|256|1024

SmColorSpac。

INTEGER

Y

破棄されたフィールド

SmGeoLeft.

REAL

Y

地理的範囲：左SmGeoTop.

REAL

Y

地理的範囲：上SmGeoRight

REAL

Y

地理的範囲：右SmGeoBottom

REAL

Y

地理的範囲：下

SmCreateTime

DATE

N

データセットが作成された時刻

SmCreato

TEXT

N

作成者

SmDescription

TEXT

Y

データセット記述情報

SmClipRegion

BLOB

Y

クリッピングポリゴン;表示時にポリゴンの内側の領域のみが表示されます。

SmExtInfo

TEXT

Y

データセット拡張記述情報

SmStatisticsInfo

TEXT

Y

統計情報

SmProjectInfo

BLOB

Y

座標系情報、4.7.1を参照

12

2.2.3.2バンド情報レジストリ
表16 SmBandRegisterテーブルのフィールド情報

フィールド名タイプ

null値可否説

明

SmBandID

INTEGERN

主キー;バンドID

SmDatasetID

INTEGERN

所属データセットIDとSmImgRegisterのSmDatasetIDを関連付け

SmBandIndex.

INTEGERN

バンドの順序番号

SmBandName

TEXT

N

バンド名

SmBandAvail

INTEGERN

使用可能かどうか、値1：可用、0：不可用

SmOption

INTEGERY

データセットオプション情報、内部使用、レコードにピ
ラミッドなどの情報が含まれるかどうか記録

SmScalar

INTEGERY

予約フィールドSmEncTypeINTEGERN

Blockの圧縮符号化方法を表17に示す

SmPixelFormat.

INTEGERN

ピクセル形式を表18に示します

SmMaxBlockSize

INTEGER

Y

ストレージブロックの最大サイズ、単位、バイト

SmMinZ

REAL

Y

ピクセル値の最小値

SmMaxZ

REAL.

Y

ピクセル値の最大値

SmAltitude

REAL

Y

レイヤーデータは高さを表します、外部設置

SmPyramid

TEXT

Y

親データセット名、空に設定することができないなら、ピラミッドデータセットに

SmPyramidLevel

INTEGER

N

ピラミッドレイヤーID;0より大きい場合は対応するピラ
ミッドレイヤー

SmCreator

TEXT.

N

作成者

SmCreateTime

DATE

N

作成時刻

SmNovalue

REAL

Y

Null値

SmPalette

BLOB

Y

カラーパレット(カラーコントロールテーブル)は、視覚化時に使用されます。Color配列として格納されます(4.1.10
を参照)

13

表17 Block圧縮エンコード方法

列挙値

説

明

精度の損失

0

圧縮エンコーディングは使用されません

ロスレス

8

DCT、離散コサイン圧縮

破損している

9

SGL、実行符号化圧縮

ロスレス

11

LZW圧縮

ロスレス

12

PNG圧縮

ロスレス
表18 ピクセル形式

列挙値

3

説

明

1

MONO、単一値

44ビットの数値

8

8ビット符号なし

80

8ビットは符号付き

16

16ビットは符号付き160

16ビット符号なし

24

24ビットの真の色32

32ビットは、真の色を強化

320

32ビットには符号付きのステレオタイプがあり

321

32ビット符号なしの整形

64

64ビットには、符号付きロングプロファイルがあり

3200

32ビット浮動小数点型

6400

64ビット倍精度浮動小数点型

データテーブル

データテーブルは、実際のデータを格納するために使用され、各データセットは1つ以上のテーブルに対応し、システムテーブルの管理範囲によって、ベクタデータセットとラスタデータセットの2つのカテゴリに分類されます。

14

3.1 ベクタデータセット
ベクタデータセットには、属性データセット、2D/3Dポイント/ライン/ポリゴンデータセット、テキストデータセット、複合データセット、2D/3Dネットワークデータセット、3Dモデルデータセット、およびビデオ
モザイクデータセットが含まれます。
ベクタデータセットの空間インデックスは、SQLiteの空間インデックスメカニズムを使用します。関連説明
は公式ドキュメントが参照できます。

3.1.1 属性データセット
属性データデータセットには空間データが格納されません、データテーブルに対応するシステムのフィールドは表19に示されています。
表19 属性データ・セット・システム・フィールド

フィールド名タイプ

null値可否

説

明

SmID

INTEGERN

主キー;オブジェクトのユニークID

SmUserID

INTEGERY

ユーザーカスタムID値

3.1.2 2 D/3D/ポイントデータセット
2Dポイントデータセットと3Dポイントデータセットシステムフィールドは同じです(表20を参照)。ここで、SmGeometryフィールドストレージポイントオブジェクトのタイプは、geometry_columnsのgeometry_type
フィールドによって決定されます(表5を参照)。
表20 ポイントデータセットシステムフィールド

フィールド名タイプ

null値可否

説

明

SmID

INTEGERN

主キー;オブジェクトのユニックID

SmUserID

INTEGERY

ユーザーカスタムID値

SmGeometry

POINT

N

GAIAPointまたはGAIAPointZオブジェクトを保存し、保存構造は4.2.1および4.2.2を参照してください

3.1.3 2D/3D/ラインデータセット
2Dラインデータセットと3Dラインデータセットのシステムフィールドは同じです(表21を参照)。ここで、SmGeometry フ ィ ー ル ド ス ト レ ー ジ ラ イ ン オ ブ ジ ェ ク ト の 具 体 的 な タ イ プ は 、 geometry_columns のgeometry_typeフィールドによって決定されます(表5を参照)。

15

表21 行データ・セット・システム・フィールド

フィールド名タイプ

null値可否

説

明

SmID

INTEGERN

主キー;オブジェクトのユニックID

SmUserID

INTEGERY

ユーザーカスタムID値

SmLength

REAL

N

ラインオブジェクトの長さ（単位はメートル）

SmTopoError

INTEGERN

トポロジトレランス、ラインデータセットトポロジ時使
用

SmGeometry

MULTILINESTRINGN

GAIAMultiLineStringまたはGAIAMultiLineStringZオブジェ
クトの保存、保存構造は4.2.3および4.2.4を参照してください

3.1.4 2D/3D/ポリゴンデータセット
2Dポリゴンデータセットと3Dポリゴンデータセットシステムフィールドは同じです(表22を参照)。ここで、 SmGeometryフ ィ ー ル ド ス ト レ ー ジ フ ェ イ ス オ ブ ジ ェ ク ト の 具 体 的 な タ イ プ は 、 geometry_columnsのgeometry_typeフィールドによって決定されます(表5を参照)。
表22 ラインデータ・セット・システム・フィールド

フィールド名タイプ

null値可否

説

明

SmID

INTEGERN

主キー;オブジェクトのユニックID

SmUserID

INTEGERY

ユーザーカスタムID値

SmArea

REAL

N

ポリゴンオブジェクトのポリゴン積,単位は平方メートル

SmPerimeter

REAL

N

ポリゴンオブジェクトの周長;単位はメートル

SmGeometry

MULTIPOLYGONNGAIAMultiPolygonまたGAIAMultiPolygonZオブジェクトを保存し、保存構造については、セクション4.2.6および4.2.7を参照してください3.1.5 テキストデータセット
テキストデータセットシステムフィールドは表23に示され、1つのテキストデータセットは1つのデータテー
ブルに対応します。

16

表23 テキストデータセットシステムフィールド

フィールド名タイプ

null値可否

説

明

SmID

INTEGERN

主キー;2DテキストオブジェクトのユニックID

SmUserID

INTEGERY

ユーザーカスタムID値

SmGeometry

BLOB

Y

GeoTextのバイナリストリームデータについては、セクション
4.3.8を参照してください

SmIndexKe

POLYGONY

オブジェクトの範囲、GAIAPolygonオブジェクトとして保存。
4.2.5セクションを参照、空間インデックスのメンテナンスに使用されます

3.1.6 複合データセット
複合データセットにはさまざまな畿何オブジェクトタイプを保存できます。セクション4.3を参照。1つの複合データセットは、一つのデータテーブルに対応します、表24に示す。
表24 複合データセットシステムフィールドを示します

フィールド名タイプ

null値可否

説

明

SmID

INTEGERN

主キー;オブジェクトのユニックID

SmUserID

INTEGERY

ユーザーカスタムID値

SmGeoTypeINTEGERN

Geometryタイプを表25に示します

SmGeometry

BLOB

Y

SuperMapシンプルオブジェクトのバイナリストリームについては、4.3節を参照してください

SmIndexKey

POLYGON

Y

SuperMapシンプルなオブジェクトの範囲については、
4.2.5節を参照してください、空間インデックスのメンテナン
スに使用されます

表25複合データセットに保存されているオブジェクトの種類

Geometry型

列挙値

説

明

GeoPoint

1

2Dポイント

GeoLine3

2Dライン(サブオブジェクトを持つ可能)

GeoRegion

5

2Dポリゴン(サブオブジェクトを持つ可能)

GeoText

7

テキスト(4.4節を参照)

GeoRect

12

矩形/斜め矩形

GeoRectRound

13

丸角矩形

GeoCircle

15

円
17

GeoEllipse

20

楕円

GeoPie21

扇ポリゴン

GeoArc24円アーク

GeoEllipticArc.

25

楕円アーク

GeoCardinal

27

Cardinal曲線

GeoCurve28

ペンシルライン

GeoBSpline

29

Bタイプ曲線

GeoPoint3D101

3Dポイント

GeoLine3D103

3Dポイント(サブオブジェクトを持つ可能)

GeoRegion3D

105

3Dポリゴン(サブオブジェクトを持つ可能)3.1.7 2D/3Dネットワークデータセット
2Dネットワークデータセットと3Dネットワークデータセットの保存方式は同じです。プライマリテーブルとサブテーブルで構成され、プライマリテーブルにはネットワークデータセットのエッジとノード接続情報が保存され、サブテーブルにはネットワークデータセットのノードが保存されます(表26および表27を参照)。
3Dネットワークデータセットなら、プライマリテーブルのSmGeometryフィールドには3Dラインオブジェ
クトが保存され、サブテーブルは3Dポイントオブジェクトを保存します。
表26 ネットワークデータセットのプライマリテーブルのシステムフィールド

フィールド名タイプ

null値可否

説

明

SmID

INTEGERN

主キー;ラインオブジェクトのユニックID

SmUserID

INTEGERY

ユーザーカスタムID値

SmEdgeID

INTEGERN

エッジID

SmFNodeINTEGERY

起点のポイントID

SmTNodeINTEGER

Y

終点結節ID

SmResistanceA

REAL

Y

正方向バリア

SmResistanceB

REAL

Y

負方向バリアSmTopoError

INTEGERN

トポロジトレランス、ラインデータセットトポロジ処理
時使用

SmLength

REAL

N

ラインオブジェクトの長さ、単位はメートル

SmGeometry

MULTILINESTRINGN

GAIAMultiLineStringまたはGAIAMultiLineStringZオブジェ
クト。保存構造は4.2.3および4.2.4を参照してください18

表27 ネットワークデータセットのサブテーブルのシステムフィールド

フィールド

タイプ

null値可否

説

明

SmID

INTEGERN

主キー;ポイントオブジェクトのユニックID

SmUserID

INTEGERY

ユーザーカスタムID値

SmNodeID

INTEGERY

ノードID

SmGeometry

POINT

N

GAIAPointまたはGAIAPointZオブジェクト、保存構造は4.2.1およ名び4.2.2を参照してください

3.1.8 3Dモデルデータセット
3Dモデルデータセットには、3DモデルオブジェクトGeoModel3D、オブジェクト論理構造、および構造4.3
セクションが格保存れます。
1つの3Dモデルデータセットは、メインテーブルとサブテーブルの2つのデータテーブルに対応し、表28と表29を参照してください。プライマリテーブルにはモデルの構造情報が保存され、サブテーブルにはモデルに関連付けられた実体オブジェクトが保存されます。メインテーブルに保存されているモデル構造は、モデルオ
ブジェクトが参照される実体オブジェクト名、実体オブジェクト名に基づく64ビットHashCodeエンコーディ
ングを記録し、サブテーブルのSmHashCodeフィールドに保存されます。
表28 3Dモデルデータセットのメインテーブルのシステムフィールド

フィールド名タイプ

null値可否

説

明

SmID

INTEGERN

主キー;モデルオブジェクトのユニックID

SmUserID

INTEGERY

ユーザーカスタムID値

SmGeometry

BLOB

Y

GeoModel3Dのバイナリストリームデータについては、4.5.1
を参照してください

SmIndexKey

POLYGONY

モデルオブジェクトの範囲(4.2.5セクションを参照)空間イン
デックス保守時使用

表29 3Dモデルデータセットサブテーブルのシステムフィールド

フィールド名タイプ

null値可否

説

明

SmID

INTEGERN

主キー;モデルオブジェクトのユニックID

SmHashCode

INTEGERY

ユニック制約

SmGeometry

BLOB

Y

実体オブジェクトのバイナリストリームデータについては、セクション4.5.3を参照してください193.2 ラスタデータセット
ラスタデータセットには、Imageデータセット、Gridデータセット、ボクセルグリッド(VoxelGrid)データセ
ット、モザイクデータセットなどの2Dまたは3D空間のフィールドデータに保存されます。
Imageデータセット、Gridデータセット、およびVoxelGridデータセットのデータ編成と保存方式は同じです。
(1)元データ
元のデータ保存は一つのデータテーブルに対応します，メインテーブルという。保存される基本単位はブロック(Block)で、ブロックのサイズはSmImgRegisterのSmeBlockSizeフィールドに記録され、表15を参照してください。各ブロックは、メインテーブルのレコードの行に対応する固定長および幅のマトリックスデータブロックを表します。表30を参照してください。
(2)ピラミッド
ピラミッドデータは、ピラミッドの各層に1つのサブデータセットを持つ複数の層を持つ場合があり、各サブデータセットはプライマリデータセットと同じタイプのラスタデータセットであり、その親子関係はシステ
ムテーブルSmBandRegisterによって維持されます(表16を参照)。
表30 グリッドデータテーブルのフィールド情報

フィールド

タイプ

null値可否

説

明

名
SmRow

INTEGER

N

ブロックの行番号

SmColumn

INTEGER

N

ブロックの列番号

SmBandID

INTEGERN

グリッドデータ層ID
Gridデータセットの場合、既定値は0です
Imageデータセットの場合はバンド番号、ボクセルラスタデー
タセットの場合は層ID
合成主キー：(SmRow,SmColumn,SmBandID).

SmSizeINTEGERN

ブロックデーバイトストリーム大きさ

SmBandLONGBLOB

Y

ブロックデータ(保存の内容は4.6セクションを参照)

モザイクデータセットは、元データ+元の画像ファイルを使用して、3.2.4セクションに示す大画像データを管理します。

20

3.2.1 Imageデータセット
Imageデータセットは、1つ以上のバンドを持つ画像データを保存するために使用され、ピクセル値はカラー値を表します。
単バンドImageデータセットには、黒と白のグレースケール値、またはRGB合成ピクセル値のカラー値を保存できます。
画像データは一般的に大きく、通常はDCT(DiscreteCosineTransform)を使用します。DCTは離散余弦コー
ドであり、高い圧縮率と性能を有する画像圧縮に広く用いられている変換コード方法であるが、データ精度は低下になる。データの精度を維持する場合はPNG、LZW圧縮コード(4.6セクションを参照)を使用できます。

3.2.2 Gridデータセット
Gridデータセットには、DTM(DigitalTerrainModel，数字地表モデル)データが保存されます。ピクセル値は、標高値、土壌タイプ、土地利用タイプ、岩盤の深さなどの地理または地理現象を表します。Gridデータセットに基づいて、グリッドデータ統計や代数演算などの数学的分析とグラフィックス処理に基づいて計算を行うことができます。
Gridデータセットは、LZWおよびSGLとして圧縮コードが使用できます(4.6節を参照)。SGLは、SuperMapによってカスタマイズされた圧縮ストレージ形式であり、重複データだけでなく、重複しないデータに対して圧縮操作を行う改善した
LZW(Lempel_Zir_Welch)コードであります。

3.2.3 VoxelGridデータセット
VoxelGridデータセットは、空中電磁信号フィールド、空気および水質汚染フィールド、地下地質特性フィールドなどの連続的で非均質な3D空間属性フィールドデータを保存します。
連続する3次元フィールドデータをデータの異なる層にリサンプリングまたは補間し、各層のデータをブロックで保存し、高さ特性値の識別は、SmBandRegisterテーブルのSmAltitudeフィールドに記録されます(表16を参照)。

3.2.4 モザイクデータセット
モザイクデータセットのマスターテーブルはSmImgRegterシステムテーブルに記録され、各モザイクデータ
セットには、輪郭、境界、およびクリッピングを表す3つのサブデータセットがフックされます。3つのサブデータセットはすべてポリゴンデータセットであり、テーブルの名前付け規則は(tablenameはモザイクデータセ
ットのプライマリテーブル名です)。
アウトラインサブデータセット：tablename_F境界サブデータセット：tablename_Bサブデータセットの切り
抜き：tablename_C。
アウトラインサブデータセットは、モザイクデータセットが画像ファイルを保存および整理するための基盤であり、各ポリゴンを持つポリゴンデータセットです。

21

単一画像の地理的範囲と同様に、画像の分布とカバレッジをプロファイルでグローバルに参照できます(表31を参照)。
表31 モザイクデータセットのアウトラインサブデータセットテーブル
フィールド名タイプ

null値可否

説

明

SmID

INTEGERN

主キー;オブジェクトID

SmUserID

INTEGERY

ユーザーカスタムID値

SmArea

REAL.

N

ポリゴンのポリゴン積

SmPerimeter

REAL

N

ポリゴンの周長SmGeometry

MULTIPOLYGON

N

幾何オブジェクト

SmFileName

TEX

Y

フックされたファイルの名前

SmMinPS

REAL

Y

画像ファイルの最小表示解像度

SmMaxPS

REAL

Y

画像ファイルの最大表示解像度

SmLowPS

REAL

Y

画像の元の解像度

SmHighPS

REAL

Y

画像ピラミッドの解像度

SmCategory

INTEGERY

元のファイルかどうか。値を取る
1

は元のファイルであることを示しま

2

プレゼンテーションは概要ビューです
す
SmPathTEXT

Y

画像ファイルパス

SmInfoTEXTY

画像ファイルの統計情報

SmZOrderINTEGERY

予約フィールド

SmFileHash

TEXT

Y

ファイルに対応するHash値

SmOverviewLevel

INTEGER

Y

ピラミッドレベル、元のファイルは0です

境界サブデータセットにはモザイクデータセットの表示範囲が保存され、テーブルのフィールドは2Dポリゴ
ンデータセットと同じです。
クリッピングサブデータセットには、各画像の表示範囲が保存され、テーブルのフィールドには、2Dポリゴ
ンデータセットのフィールドに加えて、FootprintID、INTEGERタイプ、およびアウトラインサブデータセッ
トのSmIDフィールドに関連付けられます。

22

4

オブジェクト保存構造

このセクションでは、UDBX内のさまざまなオブジェクトのバイナリ保存構造について説明します。バイト
はLittle-Endianです。つまり、下位バイトがメモリの下位アドレス側に配置されます。

4.1 基本タイプ
オブジェクストアの構造を記述する基本的なタイプには、基本データタイプと一般的に使用されるオブジェ
クトタイプがあります。

4.1.1基本データタイプ
オブジェクト保存構造に関連する基本データタイプを表32に示します。
表32 基本データ及び説明

タイプ

フィール数

値範囲

説

明

byte

1

[0,255]

1バイト

bool

1

0^1

ブールタイプint16

2[-32768,32767]

ショートタイプ

uint162[0,65535]

符号なしの短いプロファイル

int32

4

[-2147483648,2147483647]

フルタイプ

uint32

4[0,4294967295]

符号なしの整形int64

8[-2 (22 -1)]

uint648[0,(2 -1)]

float

4

[-3.4×10]38,3.4×10 ]

63,

63

ロングタイプ64

符号なしロングプロファイル
38 38

double8[-1.7×10]308,1.7×10

wchar

2

--

308

,1.7×10

単精度浮動小数点型
308]

倍精度浮動小数点型
ワイド文字型

4.1.2 String
オブジェクト保存構造に関連する文字列データタイプは、UnicodeでコードされたStringオブジェクトで記述され、文字セットはUTF8として定義され、保存構造は次のようになります。
String{int32

length;//バイト数byte

str[length];//データ内容}
23

4.1.3 Pointx,yで表された2D座標点：
Point{ //point座標オブジェクトdouble
doublex;y;.

}4.1.4 PointZ
x、y、zで表される3D座標点：
PointZ{//point座標オブジェクトdoublex;doubley;doublez;.
}

4.1.5 Rect
左上の点と右下の点で表される矩形：
Rect{

//矩形

PointpntLB;.

//左下角点

PointpntRT;.

//右上角点}

4.1.6 BoundingBox
バウンディングボックス、最大ベクトルと最小ベクトルで表します。
BoundingBox{

PointZboxMax;

バウンディング
ボックスの最大ベクトル

PointZboxMin;

バウンディング
ボックスの最小ベクトル}

4.1.7 Ring
リング、ポイントによって首尾相互接続
Ring{

ポイントで構成されるリング24

int32

点数

numPoints;

点座標

Point[] pnts[numPoints];}

4.1.8 RingZ
リング、３Dポイントによって首尾相互接続の環状を構成。
ポイントで構成

RingZ{

されるリング
int32

numPoints;

点数

PointZ[]pnts[numPoints];

点座標}4.1.9 Vector3D
3Dベクトル、保存構造はPointZと同じで、4.1.4を参照してください。

4.1.10 Color
カラー、rgbaの4つのコンポーネントで構成されるuint32値。
Color {
bytea;//alpha
値

byte

b;

//blue値

byteg;//green
値

byte

r;

//red値}

4.2 SpatiaLiteの単純なオブジェクト
SpatiaLiteの単純なオブジェクトタイプは、2D/3Dのポイント、ライン、ポリゴンタイプです。
GAIAInfoは、SpatiaLiteの各種単一オブジェクストアのヘッド情報で、次のように構成されます。
幾何オブジェクトの基本情報

GAIAInfo{

バイト順：小端保存

staticbyte
byteOrdering=1;.
int32

srid;

座標系ID

Rect

mbr;

オブジェクトの座標範囲

25

MBR終了ID

staticbyte
gaiaMBR=0x7c;}

4.2.1 GAIAPoint
SpatiaLiteの2Dポイントオブジェクト：
GAIAPoint{
バイナリストリームの開始タグ

staticbyte
gaiaStart=0x00;.
GAIAInfo

info;

幾何オブジェクトの基本情報

staticint32

geoType=1;

GeometryタイプID

Point

ポイントオブジェクトの座標値

geopnt;

バイナリストリームの終了タグ

staticbyte
gaiaEnd=0xFE;}

4.2.2 GAIAPointZ
SpatiaLiteの3Dポイントオブジェクト：
GAIAPointZ{
バイナリストリームの開始タグ

staticbyte
gaiaStart=0x00;.
GAIAInfo

info;

staticint32

ジオメトリオブジェクトの基本情報
Geometry型ID

geoType=1001;.
PointZ

geoPntZ;

staticbyte

ポイントオブジェクトの座標値
バイナリストリームの終了タグ

gaiaEnd=0xFE;}

4.2.3 GAIAMultiLineString
SpatiaLiteの2Dマルチラインオブジェク
ト：
GAIAMultiLineString{staticbyte

バイナリストリームの開始タグ

gaiaStart=0x00;.

26

GAIAGeoInfo

info;

幾何の基本情報

staticint32

geoType=5;.

GeometryタイプID。

int32

numLineStrings;.

サブオブジェクトの数

lineStrings[numLineStrings];//LineString の ジ オ メ ト リ デ ー タ staticbyte

LineStringEntity[]
gaiaEnd=0xFE;//バイナリストリーム終了タグ}
LineStringEntity{
staticbyte

gaiaEntityMark=0x69;//サブオブジェクトID

staticint32

geoType=2;

int32

GeometryタイプID
点数

numPoints;

Point[] pnts[numPoints];

各点の座標値}

4.2.4 GAIAMultiLineStringZ
SpatiaLiteの3Dマルチラインオブジェクト：.
GAIAMultiLineStringZ{
staticbyte

gaiaStart=0x00;

バイナリストリームの開始タグ

GAIAGeoInfo

info;

幾何オブジェクトの基本情報

staticint32

geoType=1005;

GeometryタイプID

int32

numLineStrings;

サブオブジェクトの数

LineStringZEntity[]lineStrings[numLineStrings];//LineString の ジ オ メ ト リ デ ー タ staticbyte
gaiaEnd=0xFE;//バイナリストリーム終了タグ}
LineStringZEntity{
staticbyte

gaiaEntityMark=0x69;//サブオブジェクトID
geoType=1002;//Geometry タ イ プ

int32

numPoints;//点数

PointZ[]pnts[numPoints]; //各点座標値

staticint32
ID.

}

4.2.5 GAIAPolygon
SpatiaLiteの2Dポリゴンオブジェクト：
GAIAPolygon{
staticbyte

gaiaStart=0x00;

バイナリストリームの開始タグ

27

GAIAInfo

幾何オブジェクトの基本情報

info;

ポリゴンジオメトリデータ

PolygonDatadata;
staticbyte

バイナリストリームの終了タグ

gaiaEnd=0xFE;}
ポリゴンジオメトリデータ

PolygonData{staticint32

geoType=3;

GeometryタイプID

int32

numInteriors;

内円の数

Ring

interiorRing[numInteriors];

外円オブジェクト

Ring[]

interiorRings[numInteriors];//内円オブジェクト}

4.2.6 GAIAMultiPolygon
SpatiaLiteの2Dマルチフェイスオブジェクト：
GAIAMultiPolygon{
staticbyte

gaiaStart=0x00;

バイナリストリームの開始タグ

GAIAGeoInfo

info;

幾何オブジェクトの基本情報

staticint32

geoType=6;

GeometryタイプID

int32

サブオブジェクトの数

numPolygon;

ポリゴンエンティティ[]

ポ

リ

ゴ

ン

サブオブジェクトデータ[numPolygon];}
PolygonEntity{
staticbyte

gaiaEntityMark=0x69;

サブオブジェクトID

PolygonData

data;

サブオブジェクトデータ}

4.2.7 GAIAMultiPolygonZ
SpatiaLiteの3Dポリゴンオブジェクト：
GAIAMultiPolygonZ{
staticbyte

gaiaStart=0x00;

バイナリストリームの開始タグ

GAIAGeoInfo

info;

幾何オブジェクトの基本情報

staticint32

geoType=1006;

GeometryタイプID

int32

numPolygon;

サブオブジェクトの数

28

polygons[numPolygon];

サブオブジェクトデータ

staticbyte

gaiaEntityMark=0x69;

サブオブジェクトID

PolygonZData

data;

サブオブジェクトデータ

PolygonEntity[]}
PolygonEntity{}
PolygonZの幾何デ ーPolygonZData{タstaticint32

geoType=1003;

GeometryタイプID

int32

numInteriors;

内円の数

RingZ

exteriorRing;

外円オブジェクト

RingZ[] interiorRings[numInteriors];//内円オブジェクト}

4.3 複合データセットに保存されているオブジェクト
複合データセットには、2D/3Dポイント/ライン/ポリゴン、パラメータ化などの空間オブジェクト(表25を参照)とテキストオブジェクトを保存できます(セクション4.4を参照)。他のデータセットとは異なり、複合データセットはオブジェクトスタイルをGeoHeaderとしてオブジェクトヘッドに保存できます。
ジオヘッド

{.

int32

geoType;

オブジェクトタイプを表25に示します

int32

styleSize;

オブジェクトスタイルはバイト数を占用

Style

Style;

スタイルコンテンツについては、4.3.1のセクションを参照し
てください

}

4.3.1 Style
Styleは、オブジェクトの寸法によってポイントシンボル、ラインシンボル、およびポリゴンフィルスタイルに分割されます(シンボルのIDはSuperMapのシンボルライブラリで使用する必要があります)。

4.3.1.1

StyleMarker

ポイントシ
ンボル
StyleMarker

{

int32

length;バイトストリームの長さ

int32

markerStyle;

シンボルライブラリ内のポイントシンボ
ルのID

int32

markerSize;

シンボルサイズ、精度0.1ミリメートル
29int32markerAngle;

シンボルの回転角度(0.1度単位)

color

markerColor;

シンボルの色int32

markerwidth;

シンボルの幅

int32

markerHeight;

シンボルの高さ

byte

reservedLength;

予約バイトの長さ

byte[]

reservedData[reservedLength+4];

予約データ

byte

fillOpaqueRate;

フィル透明度byte

fillGradientType;

グラデーションフィルのタイプ

int16

fillAngle;

フィル角度

int16

fillCenterOffsetX;

フィル中心位置水平オフセットの割合

int16

fillCenterOffsetY;

フィル中心位置垂直オフセットの割合

color

fillBackcolor;

フィル背景色}4.3.1.2

StyleLine

ラインシンボル
StyleLine {
int32lineStyle;//line ラ イ ン シ ン ボ ル は マ ー ク ラ イ ブ ラ リ に あ る ID 番 号 int32lineWidth;// 線 の 太 さ 、0.1mmColorlineColor;.

//線の色bytereservedLength;//予約バイトの長さ

byte[]

reservedData[reservedLength+4];

4.3.1.3

StyleFill//予約データ}

ポリゴンフィルスタイル
StyleFill {int32

lineStyle;

マークライブラリ内のラインシンボルのID

int32

lineWidth;

線の太さ、精度0.1mm

color

lineColor;

線の色

int32

fillStyle;

フィルライブラリ内のシンボルのID

ColorfillForecolor;

フィル前景色Color

fillBackcolor;

フィル背景色byte

fillOpaquerate;

フィル透明度byte

fillgGadientType;

グラデーションフィルタイプ

int16

fillAngle;

フィル角度、精度0.1°

int16

fillCenterOffsetX;

フィル中心位置水平オフセットの割合

int16

fillCenterOffsetY;

フィル中心位置垂直オフセットの割合

bytereserved1Length;

予約バイトの長さ30byte[]

reserved1Data[reserved1Length+4];データを予約します

bytereserved2Length;byte[]

reserved2Data[reserved2Length+4];データを予約します//予約バイトの長さ}4.3.2 GeoPoint
2Dポイントオブジェクト
GeoPoint{.
GeoHeaderheader;

Point

pnt;.

//点座標値}

4.3.3 GeoLine
2Dラインオブジェクト
GeoLine{.
GeoHeaderheader;uint32

numSub;

サブオブジェクトの数

int32

subPointCount[numSub];

各サブオブジェクト点数

Point[] pnts[allPntCount];の和allPntCountは、すべてのサブオブジェクトの点座標数です}4.3.4 GeoRegion
2Dポリゴンオブジェクト
GeoRegion{
GeoHeaderheader;uint32

numSub;

サブオブジェクトの数

int32

subPointCount[numSub];

各サブオブジェクト点数

Point[] pnts[allPntCount];の和allPntCountは、すべてのサブオブジェクトの点座標数です}4.3.5 GeoPoint3D
3DポイントGeoPoint3D
31

GeoHeader

header;PointZ

pnt;

点座標

}

4.3.6 GeoLine3D
3Dライン
GeoLine3D
GeoHeader
uint32
int32

haeder;numSub;subPointCount[numSub];

PointZ[] pnts[allPntCount];

サブオブジェクトの数//サブオブジェクトごとの点数//allPntCountは、すべてのサブオブジェクトの点座標数ですの和}

4.3.7 GeoRegion3D
3Dポリゴン
Geoheader3D
GeoHeaderheader;uint32

numSub;int32

subPointCount[numSub]; //サブオブジェクトごとの点数

PointZ[]pnts[allPntCount];}//サブオブジェクトの数

allPntCountは、すべてのサブオブジェクトの点座
標数の和4.3.8 GeoRect
矩形オブジェクト
GeoRect {.
GeoHeaderheader;point

pntCenter;中心位置座標値

Doublewidth;

幅doubleheight;高さ

int32

angle;

回転角度に10を掛け、丸め値を四捨五入

staticint32

reserved=0;

予約

}

32

4.3.9 GeoRectRound
丸角矩形
GeoRectRound{

GeoHeaderheader;
Point

pntCenter;中心位置座標値

doublewidth;

幅doubleheight;高さ

int32

angle;

回転角度に10を掛け、丸め値を四捨五入しま。

staticint32

reserved=0;

予約

doubleradiusX;

丸角半長軸

doubleradiusY;

丸角半短軸}

4.3.10 GeoCircle
円
GeoCircle{

GeoHeaderheader;
Point

pntCenter;中心位置座標値

doubleradius;半径}4.3.11 GeoEllipse
楕円
GeoEllipse{
GeoHeaderheader;Point

pntCenter;中心位置座標値

Doublesemimajoraxis;

半長軸

doublesemiminoraxis;

半短軸

int32

angle;

回転角度に10を掛け、丸め値を四捨五入

33staticint32

reserved=0;

予約}

4.3.12 GeoPie
扇形
GeoPie {GeoHeaderheader;Point

pntCenter;中心位置座標値。

Doublesemimajoraxis;

半長軸

doublesemiminoraxis;

半短軸

int32

rotationangle;

回転角度に10を掛け、丸め値を四捨五入

int32

startangle;

開始角度に10を掛け、丸め値を四捨五入

int32

endangle;

終了角度に10を掛け、丸め値を四捨五入

staticint32

reserved=0;

予約}

4.3.13 GeoArc
円アーク
GeoArc {GeoHeaderheader;point

pntStart;

開始点の座標値

Point

pntMiddle;

中間点の座標値

point

pntEnd;

終端点座標値}

4.3.14 GeoEllipticArc
楕円アーク
GeoEllipticArc{

GeoHeaderheader;
Point

pntCenter;中心位置座標値

Doublesemimajoraxis;

半長軸Doublesemiminoraxis;

半短軸

int32

rotationangle;

回転角度に10を掛け、丸め値を四捨
五34

int32開始角度に10を掛け、丸め値を四捨

startangle;

五入
int32

endangle;

終了角度に10を掛け、丸め値を四捨五入

staticint32

reserved=0;

予約}

4.3.15 曲線
曲線には、Cardinalカーブ、フリーカーブ、およびBスプラインが含まれます。保存構造は同じです。
CurveObject{

GeoHeaderheader;
uint32

numPnts;

曲線参照点の数

Point[]

pnts[numPnts];

曲線参照点の座標}

4.4 テキストオブジェクト
テキストオブジェクトは、テキストデータセットまたは複合データセットに保存できます。テキスデータセ
ットに保存されている場合は、
GeoHeaderのstyleSizeは0GeoText{
GeoHeaderheader;//オブジェクト先頭については、4.3サブセクションint32

subCountを参照してください;//textサブオブジェクトの数。

TextStyletextStyle; //textスタイル
GeoSubText

サブテキスト[subCount];//textサブオブジェクト}
GeoSubText{
point

pntAnchor;//アンカーポイント

int32

subAngle;//回転角度、実際の回転角度は10の丸め値で乗算されます

staticint32

reserved=0;予約

stringsubText;.

//テキスサブオブジェクトのテキスト内容}
TextStyle{.
color

color;TextStyleBit

textStyleBit;

color

bgColor; //テキスト背景色

DoublefontWidth;//テキストカラー//テキストビットごとスタイル//テキストフォント幅35

DoublefontHeight;//テキストフォント高さ

Point

pntAnchor;//テキストアンカーポイント

stringfaceName;//テキストフォント名

TextStyleBit{
Byte

fixedSize;

固定サイズ

Byte

weight;ストローク幅byte

styleFlag;

太字斜体下線など

bytealignFlag;

テキストの配置}styleFlagは、影付き、輪郭、背景不透明、固定サイズ、取り消し線、下線、斜体、太字など、8ビットで特定のスタイルで識別されるかどうかを示します。
alignFlagは2つの部分に分かれています,高い4ビット予約,低ビット4ビットは、フォントの配置を表し、値の意味を取る：
0：左上;1：中央上;2：右上;
6：左下;7：中下;8：右下;
9：左中央;10：中央、11：右中央

4.5 3Dモデルオブジェクト
3Dモデルオブジェクト(GeoModel3D)は、ローカル座標系を持つモデルオブジェクト(ModelNode)とその配
置場所、姿勢などの情報で構成され、その組織構造は図2に示されています。

36

図2 GeoModel3Dオブジェクトの組織構造

ModelNodeは、精緻とLODレイヤー（PagedLODで表されるオプション）データで構成されます。ファイ
ンレイヤーとLODレイヤーの基本コンポーネントはPatchです。各パッチには複数のGeodeが含まれます。ジ
オードは、物理オブジェクトで構成されるデータパケットです（使用するModelEntity）、Geodeのマトリックスを介して、同じエンティティを異なる位置に配置して、モデルデータのインスタンス化ストレージを実現できます。
ModelEntityのサブクラスには、スケルトン（EntitySkeleton）、材料（EntityMaterial3D）、およびテクス
チャが含まれます（EntityTexture）。
保存戦略の観点から、GeoModel3Dはメインテーブルに保存され、Geodeは実体オブジェクトの名前のみを保存します。実体オブジェクトはデータセットサブテーブルに個別に保存され、実体オブジェクト名に基づく
64ビットHashCodeコードがオブジェクトIDとして使用されます。

37

4.5.1 GeoModel3D
GeoModel3D
staticint32

type=1218;

オブジェクトタイプ

staticint32

hasStyle=0;

スタイルがあるかどうか

uint32version;オブジェクトバージョン番号bool

isSpherePlaced;

球ポリゴンに配置するかどうか

Vector3D

vecPosition;

オブジェクト位置

Vector3D

vecScale;

オブジェクトスケール値

Vector3D

vecRotate;

オブジェクト回転値
バウンディングボックス

BoundingBoxbbox;
ModelNodemodelNode;}

4.5.2 ModelNodeModelNode{

int32

numLODs;

LOD層数

PagedLOD

LOD層データ

pagedLODs[numLODs];
int32

numPatches;

精緻モデルPatchの数

Patch;

patches[numPatches]

精緻モデルPatchデー}

タPagedLOD{

RangeMode

rangeMode;

int16として保存される範囲モードを切り替
えます

int32

lodNum;

LOD層番号

int32

numPatches;

当該層のPatcheの数

Patch

patches[numPatches];

Patcheデータ}
LODモード切り替え
EnumRangeMode {DISTANCE_FROM_EYE_POINT=0,

モード
カメラまでの距離に応じて切り替え38

画ポリゴンのピクセ

PIXEL_SIZE_ON_SCREEN=1}

ルサイズに応じて切り替え
Patch{
float

lodDdistance;

距離を切り替え

int32

index;

現 在 デ ー タ 層 Patchのインデックス番号

int32

親ノードのインデッ

parentIndex;

クス番号、-1は親ノー
ドがないことを示します
int32

numChildren;

サブノードの数

int32

childrenIndexes[numChildren];//サブノードインデックス番号

int32

geodeCount;//Geodeの数

Geodegeodes[geodeCount]; //各Geodeデータ}
Geode{
Matrix4dlocalMatrix;

マトリックス情報

int32

スケルトンの数

numSkeletons;

スケルトン名StringskeletonNames[numSkeletons]。
int32

numMaterials;

Stringマテリアルの数
マテリアルの名前

materialNames[numMaterials].
int32

テクスチャのnumTextures;
数39

String

テクスチャ名textureNames[numTextures]}
Matrix4d {//4*4行列、行の主順序

Doublevalues[16];}4.5.3 ModelEntity
4.5.3.1 EntitySkeleton
EntitySkeleton{

Stringname;

スケルトン名StringmaterialName;

関連付けられたマテリアル名

BoundingBox

バウンディン

bbox;

グボックス
マトリックスMatrix4d localMatrix;
VertexDataPackage
int32

頂点データ

dataPack;

インデックスnumIndexpacks;

パッケージの数
インデックスIndexPackage
indexPacks[numIndexpacks];

パッケージの配}列

VertexDataPackage{
VertexOptionsの列挙値をビット単位で演算した頂点プロパティ
int32

vertexOptions;

uint16

numDim;//頂点座標ディメンション

uint32numVertexes;//頂点の数uint16vertexStride;//頂点座標の配列内のオフセット
頂点座標データ。vertexOptionsにVO_VERTEX_DOUBLEプロパティがある場合はdouble、それ以外の場合
はfloatvariant.

vertexData[numVertexes*numDim];

uint32

numNormals;

uint16

配列内のnormalStride

フロッ

normalData[numNormals*numDim];ト//法線ベクトル数//法線ベクトルオフセット//法線ベクトルデー

タuint32

numColors;//頂点カラー数40

uint16colorStride;uint32colorData[colorCount];//色は配列内でオフセット// 頂 点 カ ラ ー 、 4 バ イ ト ス ト レ ー ジ

R/G/B/A
int32

numTextures;//テクスチャチャネルの数

TextureCoordtextureCoords[numTextures];//テクスチャ座標データ}
EnumVertexOptions{//頂点データのプロパティ

VO_NORMALS=1、//法線を含む

VO_TEXTURE_COORDS=2、//にはテクスチャ座標が含むVO_DIFFUSE_COLOURS=4、//には頂点カラーが含まれます
VO_SPECULAR_COLOURS=8、//には頂点secondColorが含まれている必要があります

VO_BLEND_WEIGHTS=16,//重み値を使用して計算されます

VO_USE_SINGLE_COLOR=

32、//は1つの色で描画されます

VO_USE_POINT_SMOOTHING= 64、//ポイントアンチエイリアスを使用
VO_MATERIAL=128,//マテリアルを使用します

VO_TEXTURE_COLOR=256,//テクスチャカラーを使用します

VO_VERTEX_DOUBLE= 512、//頂点座標は高精度doubleです
VO_TEXTURE_COORD_Z_IS_MATRIX=1024の場合、//は頂点プロパティのZ値を表す行列です。
};
テクスチャ座標

TextureCoord{uint16

テクスチャ座標デ

dimension;ィメンション
uint32

テクスチャ座標のnumCoords;
数

uint16float

オフセット値

stride;coordData[numCoords*dimension]; //座標値}
IndexPackage{
uint32numIndexes;

インデックスの数

IndexType.

type;

int32として保存されるインデッ
クスデータタイプbool

インデックスを使用するかどう

isUseIndex;
かOperationType

operationType;

頂点はint32として保存される
方法で編成

41

イ ン デ ッ ク ス デ ー タ 、 type が IT_32BIT ま た は IT_32BIT_2 の 場 合 、 variant は uint32 、 さ も な く ば 、
uint16variantindexData[indexesCount
int32

numPass;//使用されるPassの数

StringpassNames[numPass];//で使用されるPassの名前の配列}
EnumIndexType{
IT_16BIT=0,

インデックス値はuint16で表されIT_32BIT=1,

インデックス値はuint32で表されIT_16BIT_2=2,

uint16で表されるインデックス値を持つ
プロパティインデックス

IT_32BIT_2=3,

uint32で表されるインデックス値を持つ}

プロパティインデックス

EnumOperationType{

頂点の編成方法

OT_POINT_LIST=1,

単一のポイント

OT_LINE_LIST=2,

2点線

OT_LINE_STRIP=3,

ライン文字列OT_TRIANGLE_LIST=4, //三角形
OT_TRIANGLE_STRIP=5, //ストリップ三角形
OT_TRIANGLE_FAN=

6、//扇ポリゴン三角形で構成されます
OT_QUAD_STRIP=

8、//ストリップクワッド

OT_QUAD_LIST=

9、//クワッド文字列、エッジを共有しない

OT_POLYGON=10,

//多角形

}

4.5.3.2

EntityMaterial3D

EntityMaterial3D{
Doubleversion;バージョン番号Stringname;材料名
StringEffectType
int32
TechniquegroupName;.

//材料が属するグループ名

effectType;.

//特殊効果材料タイプ(int32int32numTechniqueとして格納されます//Techniqueの数
techniguea[numTechnique];//Techniqueデータ}
EnumEffectType{ //特殊効果材料列挙体
NONE=0,//特殊効果なし

WATER=1,

1、//ウォーターエフェクト42

}Technique{Stringname;StringschemeName;

StringlodIndex; //Techniqueで使用されるLOD層インデックス
String//Technique名//Techniqueが属するschemeの名前

mShadowCasterMaterialName;

シャドーキャストの材
料名
シャ ド ー受 け 取 る材

StringmShadowReceiverMaterialName;

料名

int32

numPass;

passの数Passpasses[numPass];

バインドされたすべて

}

のpass

Pass{
String

name;

pass名

PolygonMode

polygonMode;

int32として保存される描画モードCullingMode

cullMode;

トリミンモード(int32
として格納)

Bool

lightEnabled;

ライトがオンかどうかを設定

uint32。

リサーブド;

使用されていませんbool

リサーブド;

使用されていません

float

pointSize;

ポイントサイズfloat

pointMinSize;

ポイント最小サイズ

float

pointMaxSize;

ポイント最大サイズ

int16

リサーブド;

使用されていません

doubleリサーブド[3];

使用されていません

SmoothHintModepntSmoothHintMode;

ラインスムーズ方式は
int32として保存

SmoothHintModelineSmoothHintMode;

ポイントスムーズ方式はint32として保存

uint32 ambient;環境光

uint32 diffuse;

散乱光

uint32 スペクター;

反射光

uint32 selfIllumination;

自己照明

uint32 materialColor;

材料カラー

43

floatshininess;

発光、放出された光点サイズに影響

uint32 tracking;

頂点カラートラッキングbool

receiveShadow;

影を受けるかどうか

boolcolorWrite;

色を書き込むかどうか

floatalphaReject;

Alphaテスト参照値
アルファ

CompareFunction

Alphaテスト方式はint32として保存されます

RejectFunc;.
boolreserved;

使用されていません

booltransparentSorting;

透明なオブジェクトの深さの並べ替え

boolreserved;

使用されていません

bool

depthCheck;

深度テストを実行するかどうか

bool

depthWrite;

レンダリング時にディープ書き込みを行うかどうか

CompareFunctiondepthBufferFunc;

int32として保存される深度テスト方法

float

constantPolygonOffset;

多角形オフセット定数部分

float

slopeScalePolygonOffset;

多角形オフセットの深度傾斜角度係数部分

float

reserved;

使用されていません

boolblendAlpha;

Alpha混合を行うかどうか

String vertexProgram;

頂点シェーダーの名前

String fragmentProgram;

スライスメタシェーダーの名前

String geometryProgram;

幾何シェーダーの名前

String shadowCasterVertexProgram;

シャドー投射頂点シェーダーの名前

String shadowReceiverVertexProgram;

シャドー受取頂点シェーダーの名前

String shadowReceiverFragmentProgram;

シャドー受取メタシェーダーの名前

int32 numTextureUnitState;

テクスチャユニットの数

TextureUnitStatetextureUnitState[numTextureUnitState];//関連するテクスチャユニット
int32textureZType[numTextureUnitState];//各テクスチャZチャネル}
EnumPolygonMode{//レンダリングエンジンで使用されるポリゴン表示モード

PM_POINTS=1、//ポイントのみを表示します
PM_WIREFRAME=
PM_SOLID=3

2、//ワイヤフレームのみを表示します//表示実体}EnumCullingMode{
CULL_NONE=1,//レンダリングエンジンで使用されるクリッピングモード
クリップは行わない

44

CULL_CLOCKWISE=2,

時計回りにクリップされます

CULL_ANTICLOCKWISE=3

反時計回りにクリップされます}
EnumSmoothHintMode{

画像描画のアンチエイリアスモード

SHM_NONE=0,

アンチエイリアシングは使用されません

SHM_DONT_CARE=1,

ポイント/ラインのスムーズ効果を達成するには、OpenGLが決定します

SHM_FASTEST=2,

最も速く走る

SHM_NICEST=3

表示が最適

}
EnumCompareFunction{

各種試験の比較方法

CMPF_ALWAYS_FAIL=0,

テストに合格しない

CMPF_ALWAYS_PASS=1,

常にテストに合格

CMPF_LESS=2,

参照値<バッファが値をマークした場合にのみ合
格
参照値<=バッファが値をマークした場合にのみ

CMPF_LESS_EQUAL=3,

通過
参照値=バッファーが値をマークした場合にのみ

CMPF_EQUAL=4,

通過
参照値!=バッファが値をマークした場合にのみ

CMPF_NOT_EQUAL=5,

通過
参照値>=バッファが値をマークした場合にのみ

CMPF_GREATER_EQUAL=6,

合格
参照値>バッファが値をマークした場合にのみ合

CMPF_GREATER=7}

格

TextureUnitState{
Stringname;

テクスチャユニットの状態名

StringtextureNameAlias;

テクスチャエイリアス

StringtextureName;

テクスチャユニットで使用されるテクスチャ名
キューブテクスチャ名StringcubicTextureName;
uint32

reserved;

TextureAddressingModemodeU;使用されていません
テクスチャ座標アドレッシングモードU方向、
int32として保存

45

テクスチャ座標アドレッシングモードV方向、

TextureAddressingModemodeV;

int32として保存
テクスチャ座標アドレッシングモードW方向、

TextureAddressingModemodeW;

int32として保存
FilterOptions

minFilter;

縮小時のフィルタリングタイプ、バイトint32として保存、FilterOptions

maxFilter;

拡大時のフィルタリングタイプ、バイトint32として保存

FilterOptions

mipFilter;

Mipmap時のフィルタリングタイプ、バイトint32
として保存

doubleUScale;テクスチャUのスケーリング

doubleVScale;テクスチャVのスケーリング

bool

EnvironmentMapEnabled;//環境リマッピング·を有効にするかどうか

int32

reserved; //未使用

Matrix4d texModMatrix;//テクスチャマトリックス}
EnumTextureAddressingMode{//テクスチャアドレッシングモード

TAM_WRAP//繰り返しテクスチャTAM_MIRROR//対称フリップ
TAM_CLAMP//周辺ピクセルは、1より大きいのテクスチャ座標をフィル
TAM_BORDER//[0,1]の範囲外のテクスチャ座標は、ユーザーが指定した周辺カラーを使用}
EnumFilterOptions{//テクスチャまたはミップマップのフィルタリングモード
FO_NONE=0,

フィルタリングなし

FO_POINT=1,

最近いサンプリ

FO_LINEAR=2,

線形サンプリ46

FO_TRILINEAR=3,

三線性サンプリ

FO_ANISOTROPIC=4

線形サンプリと同様に、テクスチャ角度、異方性、お}よび未使用は考慮されます

4.5.3.3 EntityTexture
EntityTexture{

Stringname;

テクスチャ名boolmipmap;

mipmapを持っているかどうか

int32level;

mipmapレベル

TextureDatatextureData;

テクスチャデータ}
TextureData{staticuint32compressType=14;//テクスチャ圧縮タイプ,uint32として保存

uint32width;//テクスチャ幅uint32height;//テクスチャの高さ
PixelFormat
uint32 size;

format; //テクスチャピクセル形式int32として保存//データストリームバイト長さint32 zipSize;. //zip圧縮後のサイズuchar data[zipSize]//zip圧縮後のデータ}
EnumPixelFormat{//テクスチャピクセル形式

PF_BYTE_RGB=11、//3バイトピクセル、各色が1バイトを占める

PF_BYTE_BGR= 10、//3バイトのピクセルで、各色は1バイトを占める
PF_BYTE_BGRA=

12、//4バイトのピクセル、各色とalphaが1バイトを占める

PF_BYTE_RGBA=

13、//4バイトピクセル、各色とalphaは1バイトを占める}

4.6 グリッドブロックストレージ
グリッドブロック(Block)保存は、圧縮コード方法に関連しています(表17を参照)。
BlockバイナリストリームサイズはデータテーブルのSmSizeフィールドに書き込み、BlockデータがSmBandに書き込まれます。表30を参照してください。
1)非圧縮コード
Blockは、実際の長さ、幅、ピクセル単位で値を保存し、行順。ピクセル値のタイプと保存方法を表18に示します。
2)DCT圧縮
jpeglibオープンソースライブラリ(バージョン番号6b)を使用して、元のBlockデータストリームを圧縮します
。
SGL圧縮

47

ブロックにはX方向に16ピクセル、Y方向に4ピクセルでTileを分割し、各Tileの内部でコードを実行します。
SGLBlock{
int16

numTiles;Tileの数

staticbyte

sizeX=16;

X方向のTileピクセル数

staticbyte

sizeY=4;

X方向のTileピクセル数

SGLTile[]tileData[numTiles];各Tile圧縮後のデータ}
SGLTile{int16 dataLength;//データストリームの長さ、バイト単位

byte

bitCountDiff;//コード値では、Diff値占用桁数

byte

byteCountMin;//Tileの最小値占用バイト数

byte[]

minValueByByte[byteCountMin];

ValuePack[]//Tileの最小値

valuePacks[];//ランレングスコード値}
ValuePack{
byte

tagCount;//値の数。値の最大ビットが1の場合、値なし、低4ビットは値なし、values値なし；値の3桁目が1の場合、valuesはユニークな値であり、数値は下2桁に丸められますbyte[]

values[bitCountDiff];//元の値と最小値の差は、占有されているバイト数で書き込まれます}
LZW圧縮は現在、zlibオープンソースライブラリ（バージョン番号1.2.2）を使用して、元のBlockデータスト
リームを圧縮します。
PNG圧縮は、libpngオープンソースライブラリ（バージョン番号1.2.6）を使用して、元のBlockデータスト
リームを圧縮します

4.7 その他のオブジェクト
4.7.1 座標系オブジェクト
座標系オブジェクトの保存構造は次のとおりです
ProjectInfo{
int32

prjCoordSysType;

投影座標系タイプ

int32

geoCoordSysType;

地理座標系のタイプ

int32

projectionType;

投影方法のタイプ

int32

datumType;

Datumタイプ48

spheroidType;楕円体タイプ

int32

primeMeridianType;

中央子午線タイプ

int32

reserved;

予約

int32

unit;

座標系単位

doublefalseEasting;

水平オフセット

doublefalseNorthing;

垂直オフセット

doublecentralMeridian;

中央経線

doublecentralParallel;

原点緯線

doublestandardParallel1;

標準緯線1

doublestandardParallel2;

標準緯線2

doublescaleFactor;

縮尺係数

doubleazimuth;方位角

doublefirstPointLongitude;

第一点経線

int32

doublesecondPointLongitude;//第二点経線

doubleaxis;

楕円体半長軸

doubleflatten;

楕円体の扁平率

doubleprimeMeridian;

中央子午線値

double[]reserved[2];予約

StringprjCoordSysName;

投影座標系名StringgeoCoordSysName;

地理座標系名StringspheroidName;

楕円体名

StringdatumName;

datum名uint32

epsgCode;

EPSG番号

doublerectifiedAngle;

修正角}関連する説明はOGDC、セクション5を参照してください。ここで、prjCoordSysType、geoCoordSysType、 projectionType 、 datumType 、 spheroidType 、 primeMeridianType の 列 挙 値 に 対 応 す る 意 味 は 、Projection/UGPjCon.hファイルを参照できます。単位値unitはBase/ogdcdefs.hを参照できます
4.7.2値域規則オブジェクト
値域規則オブジェクトは、範囲値域(DomainRangeInfos)と列挙値域(DomainCodeInfos)に分類されます。
DomainRangeInfos

{

int32

//範囲間隔の数

numRanges;

DomainRange[]

ranges[numRanges];

DomainRange{//各間隔オブジェクト}

DomainRangeType

rangeType;//間隔タイプ
49区間値タイプは、フィールドタイプによって決まります。
フィールドタイプInt16、Int32、variantはint32で対応
フィールドタイプInt64は、variantがint64で対応;//フィールド型タイプFloat、Doublは、variantがdouble
variant leftValue //区分左値variant rightValue;.

//区分右値}
EnumDomainRangeType
CloseClose{
左値閉区分受取、右値閉区分受取=1,
OpenClose

下限値に含む=2,
CloseOpen

上限値に含む=3,
OpenOpen

左開、右開

=4
}
DomainCodeInfos{
int32

numCodes;

列挙値の数

DomainCode[]

ranges[numCodes];

各列挙オブジ}ェクトDomainCode{

値タイプは、フィールドのタイプによって決まります：フィールドタイプBoolean、Byte、Int32、variantをint32に対応
フィールドタイプInt16、variantをint16に対応
フィールドタイプInt64、variantをint64に対応
フィールドタイプFloat、Double、variantをdoubleに対応
フィールドタイプText、NText、variantをStringに対応
Variant codeValue;
String//列挙値

codeDescription; //列挙値説明}

50