Google
WWW を検索 Terra を検索
 ホーム > サポート > 航海用電子海図概説 > 航海用電子海図のフォーマット
航海用電子海図のフォーマット


S-57 の規格を読んでも、航海用電子海図のフォーマットは簡単にはわかりません。ここでは、具体例をあげて、簡単に説明します。
航海用電子海図の交換セットには、CATALOG.031 (S-57 Edition 3.1 の場合) と複数の拡張子が ”000” のファイルが入っています。 どちらのファイルも ISO 8221 によってカプセル化されたファイルで、ヒューマンリーダブルな形にはなっていません。CATALOG.030 は、データセットのカタログです。これは、航海用電子海図製品仕様(準備中)のところで説明します。

拡張子が "000" のファイルは、データセットです。これが1つのセルに対応しています。 S-57 のデータ構造には、2つのフォーマットが規定されていて、ASCII型とBINARY型があります。航海用電子海図は、S-57 の航海用電子海図製品仕様の規定の中で、BINARY型にする事になっています。 ここでは、説明の都合上、BINARY型をASCII型にデータ変換したものを使って説明します。



上の図で左側の4文字が '0001' から '****' までの範囲をレコードと呼んでいます。 レコードには複数のフィールドが存在します。フィールドターミネーター(フィールドの終端文字)は本当は16進で'1E'ですが、わかりやすくするため、改行文字にしてあります。 よって、この画面では、1行がフィールドに対応します。フィールドは、さらにサブフィールドに分かれて、フィールドのタグ名に応じて、それぞれのサブフィールドが定義されています。
フィールドには、最初にフィールドを区別するタグ、次に、フィールドの文字長、以降が、フィールドそのものです。まず、タグを説明します。S-57 には、数多くのタグが定義されていますが、航海用電子海図で使用するのは、データセットが新規の場合は、以下の表に示したものだけが使用されます。

タグ名 意味 内容
DSID Dataset Identifier データセットを識別する ID です
DSSI Dataset Structure Information データセットの情報です
DSPM Dataset Parameter データセットのパラメーターです
VRID Vector Record Identifier ベクトルレコードを識別する ID です
ATTV Vector Record Attribute ベクトルレコードの属性です
VRPT Vector Record Pointer ベクトルレコードへのポインターです
SG2D 2-D Coordinate 2次元座標です
SG3D 3-D Coordinate 3次元座標です
FRID Feature Record Identifier フィーチャーレコードを識別する ID です
FOID Feature Object Identifier フィーチャーオブジェクトの ID です
ATTF Feature Record Attribute フィーチャーレコードの属性です
NATF National Feature Attribue フィーチャーの自国語の属性です
FFPT Feature Record to Feature
Object Pointer
フィーチャーからフィーチャーオブジェクト
へのポインターです
FSPT Feature Record to Spatial
Record Pointer
フィーチャーからベクトルレコードへの
ポインターです

これだけでは、何がなんだかわからないと思うので、簡単なデータを作ってみました。 下の図は、ENCDesignerで見た、セルの中に1つの水深区域(DEPARE)、1つの陸域(LNDARE)、 1つの自然海岸線(COALNE)があるケースです。この他に、データの存在区域を示すメタカバレッジ(M_COVR)も入れてあります。 あくまでもサンプルですので、航海用電子海図製品仕様(ENC Product Specification)を満たしている訳ではありません。



これを航海用電子海図のフォーマットにして、ASCII型にデータ変換すると、下のようになります。上の画面には、交点や線のIDを赤で入れました。少しは、対応が読めるでしょうか。



具体的に説明します。まず、座標の値の読み方です。S-57 では、空間的な座標値は必ず整数で表します。これをある値で割ると、実際の座標が求められます。 ある値は、下の図のDSPMの中のCOMF(Coordinate Multiplication Factor)に入っていて、この例では、10000000 です。文字が黒の四角で見えているのは、ユニットターミネーターと呼ばれていて、 サブフィールドが可変長の場合の区切り文字です。



では、座標は具体的にどのように表されているのでしょうか、下の図は、コネクティッドノード(交点、あるいは端点) VC0000000003 の座標読み方です。



これで、ENCDesigner の表示画面との対応が一部とれました。次は、エッジ(線)です。VE0000000004 を見てみましょう。



エッジは、必ずコネクティッドノードから始まり、コネクティッドノードで終わります。その間に、中間点(Vertex)を持ちます。上の図の例では、中間点は1つです。また、エッジには方向がある事に注意して下さい。 複数の中間点を持つエッジでは、SG2D で始まるフィールドに複数の経緯度が羅列されます。2点から成るエッジには、中間点はありません。 サンプルデータの例では、VE0000000005 が該当します。通常は始点と終点のノードは異なりますが、エッジが閉曲線になる場合、始点と終点のノードは一致しますので、VRPT に現れる2つのノードは同じ ID になります。

最後はフィーチャーです。



オブジェクトコード 42 番は、DEPARE(Depth Area、水深区域)です。アトリビュートコード 87 番は、DRVAL1 で浅い方の水深で、 単位は m です。アトリビュートコード 88 番は、DRVAL2 で深いほうの水深で、単位は m です。つまり、このフィーチャー は、水深 0m から 10m の水深表示区域です。
このフィーチャーは、FSPT によって、VE0000000004 と VE0000000005 を指しています。この時、それぞれのエッジの ID の直後の文字が、向きを表しています。 それぞれのエッジには向きがあり、VE0000000004 を正方向に、VE0000000005 を逆方向にして接続してあげれば、この面を囲む線は右回りになります。

大体どんなものか、ご理解頂けたでしょうか?頭の体操でした。




会社情報 サイトご利用にあたって