WKB(Well-Known Binary)
2026年05月25日 14:06

GISBoxは、OSGB/GEOTIFF/RVTなどの複数のGISフォーマットでの編集をサポートし、3DTiles/Terrainへの変換や公開が可能なワンストップ3DGIS データ編集、変換、公開プラットフォームです。

概要

WKB(Well-Known Binary)は、Open Geospatial Consortium(OGC)によって定義された幾何オブジェクト表現用のバイナリエンコーディング標準です。ポイント、ライン、ポリゴンなどの空間要素をコンパクトなバイトストリーム形式で保存します。テキスト形式であるWKTと比較して、より高い保存効率と高速な転送・解析性能を持っています。その構造は通常、1バイトのバイトオーダ識別子(0x01 はリトルエンディアン)、4バイトのジオメトリタイプコード(例:Point=1、LineString=2)、および後続の座標データで構成されます。座標値は IEEE 754 倍精度浮動小数点数として順番に格納され、PostGIS や MySQL などの空間データベースにおいて、ジオメトリフィールドの基盤保存形式として広く利用されています。

1.jpg

データフォーマットの概要

WKB(Well-Known Binary)のファイル構造は OGC Simple Features 仕様に従っており、コンパクトなバイナリシーケンスで幾何オブジェクトをエンコードします。その構造を項目ごとに説明すると以下の通りです。

  • バイトオーダ識別子(1バイト):先頭1バイトは符号なし整数であり、0x00 はビッグエンディアン(Big-Endian)、0x01 はリトルエンディアン(Little-Endian)を表します。これにより後続のすべてのマルチバイトデータの解析順序が決定されます。
  • ジオメトリタイプコード(4バイト):バイトオーダの直後に続く4バイトの符号なし整数で、ジオメトリオブジェクトの種類を識別します。
  • SRID識別子(任意、4バイト):タイプコードの上位ビットに 0x20000000 が含まれる場合、タイプコードの後に4バイトの符号なし整数が続き、空間参照システム識別子(例:EPSG:4326)を示します。
  • 長さフィールド(4バイト、多要素構造のみ):MultiPoint、MultiLineString、MultiPolygon、GeometryCollection の場合、SRID(またはタイプコード)の直後に4バイト整数が続き、子要素数を表します。
  • 空ジオメトリ(EMPTY):タイプコードのみで識別され(例:1 は Point)、座標データや長さフィールド、SRID を含みません。構造は [バイトオーダ][タイプコード] のみで、合計5バイトです。

長所

  1. 高い保存効率:WKTテキスト形式と比較して、WKBは40%〜60%程度の保存冗長性を削減できます。IEEE 754 倍精度浮動小数点数によるコンパクトな座標エンコードにより、ディスクおよびメモリ使用量を大幅に削減します。
  2. 高速な転送・解析:バイナリ形式のため文字列解析が不要であり、高頻度な読み書きシナリオに適しています。そのため、PostGIS や MySQL などの空間データベースにおけるデフォルト保存形式として採用されています。
  3. 高いクロスプラットフォーム互換性:標準化されたバイトオーダ(0x00 / 0x01)により、異なるOSやCPUアーキテクチャ間でも曖昧さなく解析可能であり、主要なGISツールチェーンとのシームレスな統合を実現します。
  4. 複雑なジオメトリ構造をサポート:ポイント、ライン、ポリゴン、マルチパート構造、ジオメトリコレクションを完全にサポートしており、高位ビットフラグ(0x80000000、0x40000000)を利用することで3次元(Z)や測定値(M)の拡張にも対応しています。
  5. データベースでのネイティブサポート:PostgreSQL / PostGIS、MySQL、Kingbase などの主要空間データベースで直接サポートされており、追加変換なしで空間関数演算に利用できます。

短所

  1. 可読性がない:バイナリバイト列は人間が直接読むことができず、デバッグには ST_AsBinary()、hex() 関数、または GIS ソフトウェアによる可視化が必要です。
  2. デバッグや障害解析が困難:座標異常やバイトオーダの不一致などの問題が発生した場合、1バイトずつ解析する必要があり、開発・運用コストが増加します。
  3. メタデータ埋め込み機能が不足:座標系名称、単位、投影パラメータなどの説明情報を含まず、SRID は整数値(例:4326)のみで表現されるため、外部メタデータ管理に依存します。
  4. バージョン・拡張互換性のリスク:3Dや測定値拡張は高位ビットフラグに依存するため、システムごとに 0xC0000001 などの拡張型への対応が異なり、システム移行時に問題が発生する可能性があります。
  5. 相互運用時に明示的変換が必要:WKT や GeoJSON などのテキスト形式と連携する場合、ST_GeomFromWKB() や ST_AsText() などの関数呼び出しが必要となり、SQL の複雑化や性能コスト増加につながります。

応用シーン

WKB(Well-Known Binary)は、空間データベースの基盤保存形式および高効率なデータ交換形式として広く利用されています。PostGIS、MySQL、Kingbase などのシステムではデフォルトのジオメトリエンコーディング形式として採用されており、GIS におけるポイント、ライン、ポリゴンなどの空間要素の高速なシリアライズ・デシリアライズを実現しています。また、空間インデックス構築、近傍検索、トポロジー解析などの高頻度処理を支援し、分散型地理データ転送、地図タイル前処理、モバイルGISアプリケーションにおいても、そのコンパクトなバイナリ構造によりネットワーク帯域とメモリ消費を大幅に削減します。WKB は、空間データベース、GIS エンジン、フロントエンド描画モジュールを接続する重要な相互運用フォーマットとして機能しています。

1. 二次元ポイント Point(1 1) を例とした WKB 表現。

2.jpg  

ファイルの開き方

1. ジオメトリタイプと WKB コンバーターを定義。

3.jpg

関連 GIS ファイル

ASCAT

DRG

TopoJSON

WKT

参考

  1. https://zh.filedesc.com/file/wkb
  2. https://www.cnblogs.com/qdhotel/p/4887032.html
  3. https://juejin.cn/post/7381375087206432779