青森市営バスの位置情報、本運用が楽しみです!
大容量になり勝ちな地図データ、古いSHAPEファイルに変わって、真の後継規格と紹介されていたFlatGeobufを発見。ひとまず勉強も兼ねて、使われているProtocol Buffersから派生したFlatBuffersをESモジュール化しました。
「Foss4G Japan 2021 シェープファイルの真の後継規格 FlatGeobufの普及啓蒙活動」
「flatbuffers-es/es at es · code4fukui/flatbuffers-es」forked from google/flatbuffers
FlatBuffersはスキーマ付きバイナリフォーマット。下記のようなスキーマファイルからTypeScriptなどのコードを生成、JavaScriptに変換して、ESモジュールで使える手順をまとめました。
namespace MyGame.Sample; enum Color:byte { Red = 0, Green, Blue = 2 } union Equipment { Weapon } // Optionally add more tables. struct Vec3 { x:float; y:float; z:float; } table Monster { pos:Vec3; mana:short = 150; hp:short = 100; name:string; friendly:bool = false (deprecated); inventory:[ubyte]; color:Color = Blue; weapons:[Weapon]; equipped:Equipment; path:[Vec3]; } table Weapon { name:string; damage:short; } root_type Monster;
スキーマの仕様はこちら。
「FlatBuffers: Writing a schema」
変換したファイルを使って、読み書き成功。ただ、そんなファイルサイズが小さくない?ざっくりJSONとCBORと比較してみた結果、CBORのほうが小さいという結果に。
196byte monster.bin 147byte monster.cbor 233byte monster.json
メモリ使用量に問題なければ、CBORでも良さそうですね。
・・・と、思ったら、もっと効率の良いファイルフォーマットが開発とのこと。
「GeoPandasをやるならFlatGeobufより10倍早いGeoParquetを使おう! - Qiita」
日進月歩で進む技術。異分野への応用で、未来のスタンダードを創るチャンス、誰にでも!