⛰️
RustでShapefileとGeoJSONを変換するライブラリを作ってみた
概要
ShapefileからGeoJSONに変換するcrateを作成した。
作成の動機
- Shapefileはバイナリなので軽い。しかし、複数ファイルに情報が分散されている点や格納可能なオブジェクトの種類が1種類までという制限があり取り回しにくかった。
- 近年、GeoJSONというJSONベースのGISファイルの規格がシェアを広げているが、未だに多くのGISデータはShapefileとして配布されている。
- QGIS以外で簡単に実行できる変換ソフトが見つからなかった。(あったらごめんなさい)
- 変換サイトもいくつか試したが、動いてくれなかった。(使い方が違ったらごめんなさい)
プログラム
技術選定
- 大量のGISデータを処理する予定であるため、軽量かつ高速なRustを採用。(最近、新しく勉強したので使いたかった。)
- 非同期処理にはtokioを採用。特に深い理由はない。
- その他のライブラリは必然的にそれしか選択肢がなかった。(他に代替候補があれば知りたい。)
作成期間
実際に作ってたのは3日くらいな気がする。
その他
ライブラリを公開するの初めてだったのでREADMEの書き方とか、ライセンスの登録を行うのに時間がかかった。また、READMEに使い方を例示したリポジトリも貼っておくことで、初見さんにもわかりやすくした。
今後の展望
- ファイル変換だけではなく、プログラムの中で使用できるようにしたい。
- さらなる高速化(手法は現在検討中)
- 公開をGitHub Actionで自動化したい。
- プログラムのテスト兼スピードテストみたいなCIを組みたい。
- OSSっぽい運用がしてみたい。(どうやるのかわからない。そもそもこんなニッチなライブラリに需要はあるのか?)
Discussion