FlatGeobuf本当にすごい！

# FlatGeobuf本当にすごい！

この記事は、FOSS4G Advent Calendar 2022、６日目の記事です！
過ぎていますが、小ネタで埋めましたw

や、ネタは小ネタですが、自分自身としては、すごい発見！

## 復習 FlatGeobufとは？

復習といいつつ、他人の記事をおすすめして終わりです（汗
いや必読なので，是非！
- [GeoJSONをバイナリ化して圧縮するFlatGeobuf](https://gunmagisgeek.com/blog/data/7222)
- [FOSS4G Japan 2021 シェープファイルの真の後継規格 FlatGeobufの普及啓蒙活動](https://docs.google.com/presentation/d/1vL-gNWlyM8W_jdG7AiUf1bsebZlvC8Nn9AXMzLs4Qoc/edit)

## なぜ追加で書くの？
事の発端はFOSS4G Advent Calendar 2022、３日目の記事、[Cloud Optimized GeoTIFFを置いてみました](https://zenn.dev/boiledorange73/articles/0057-using-cog)。こちらの記事で、こともなげに、[COGファイルをQGISで開いていました](https://zenn.dev/boiledorange73/articles/0057-using-cog#qgis%E3%81%A7%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86)。
あれ、だったらWebサーバに置いてあるFlatGeobufも開けるんじゃね？、と思ったわけです。

## やってみよう。
ということで、試してみます。サンプルは、[こちら](https://github.com/wata909/fudepoly47/blob/main/docs/fude_tsukuba.fgb)で公開されているつくば市の筆ポリゴンデータ。OSはWin10 64bit、QGISは、3.22です。
COGの時と同様に、レイヤ→レイヤの追加→ベクタレイヤの追加として、ソースタイプをプロトコル、URIに`https://wata909.github.io/fudepoly47/fude_tsukuba.fgb`を指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39797/f56452b6-af54-f53b-bae7-fec9b9c88619.png)

これで追加を押すと・・・・。あっけないほど簡単に、筆ポリゴンが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39797/82d2156b-1745-4d98-854e-aaff86e2b3ab.png)

なんだこれ？こんなに簡単でいいのか？

## 試してみよう
### 凡例は，色分けできる？
普通にできます。乗算表示も可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39797/8af425f6-6b02-2c9b-c943-80abb347b31e.png)

### 演算はできるの？
Clipしか試してませんが、普通にできました。多分、普通に色々できるんじゃないかと。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39797/941db422-c84d-ab52-ecb5-19fa16bbb62a.png)

### 速度はどうなの？
ネットのファイルを持ってくるんだから、当然速度は接続速度に依存します。なお、我が家の接続速度は，こんな感じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39797/4cf784ab-941c-5091-43bd-c76e64410624.png)


まぁ、遅くはないでしょう。
これでつくば市の筆ポリゴン（約30MB）を表示するのに、約7.4秒。同じく[つくば市のGeoJSON](https://wata909.github.io/fudepoly47/2022_082201.json)（約49MB）を表示するのに、大体71秒。時間は1/10ですｗ

### おけ、でっかいファイルはどうだ？
んじゃ、でっかいファイルは，どの程度のスピードで読み込んでくれるのか。例として、[北海道、約530M](https://habs.rad.naro.go.jp/spatial_data/fudepoly47/fude_2022_01.fgb)。

以下の範囲で、3:07。さすがに、軽快とはいいかねます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39797/1c518c8e-082b-cec2-6fd7-e4aaa8e3fd29.png)

ただし、ズームインすると、表示範囲だけ持ってくようなので、かなり軽快です。このくらいなら、十分実用可能な範囲。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39797/d90465e8-9c73-7917-4560-8a42284db90b.png)

[全国ファイル、約17GB](https://habs.rad.naro.go.jp/spatial_data/maff_fude2022/maff_fude2022.fgb)でも、表示半にを限定すれば，十分早いです！　というか、表示領域が狭ければそこの範囲のデータしかDLしてこない感じなので、元フィアルのサイズは、関係なさそう。

### ということで、おすすめの使い方は！？
いや、筆ポリゴンを使いたいという人がどれだけいるかはさておき、こんなかんじかな？
- ファイルは色々変えるのは面倒なので、全国のFlatGeobuf形式
- ただし小縮尺だとさすがに遅いので、表示縮尺を1:100,000ぐらいに設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39797/5fd19284-afc7-7d07-9a85-006ea2d71e08.png)

これであれば、新潟県の米所でも許容範囲内で表示されます。こんな感じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39797/caf4e15d-2642-950c-51f7-9b3009f5f520.png)

## 雑感
よく、QGISの画面のレイアウト画面をそのままWebで共有したいって話を聞くんだけど、それ、もしかするとFlatGeobufとか、COGとかを、上手く使えば、ある程度できるんじゃねーかと、思った。
もちろん、速度はWebGISに最適化されていた方が速いだろうし、QGISのメニューが煩雑すぎてという話はあるだろうけど、そういう使い方も、十分あるんじゃないかと思った。

となると、必用なのは低価格、高速、大容量のhttpサーバって話だなぁ･･･。