2022-10-22
青森市で試験が進む IchigoJam x MixSoda で動くバスロケシステム。テストデータをお借りしてdeck-esで表示。GTFSリアルタイムはProtocol Buffersを使って読み込みます。
青森市営バスの位置情報、本運用が楽しみです!

大容量になり勝ちな地図データ、古い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
日進月歩で進む技術。異分野への応用で、未来のスタンダードを創るチャンス、誰にでも!

Tweet
クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS