smellman's Broken Diary

クソみたいなもんです

spatialiteの現状の私的まとめ

この記事は2020年6月30日付でSpatialiteについて調べたものについて記述しています。なので、情報が古いなと思ったら適当に調べてください。

Spatialiteとはなにか?

SpatialiteとはSQLite3に地理空間情報のカラムや検索機能などを追加するソフトウェア及びSQLite3の拡張機能です。

www.gaia-gis.it

似たようなものではSQLite3に暗号化機能を追加するSQLCipherなどがあります。

Spatialiteの最後の安定版のリリースが2015年に出た4.3.0aで、現在は5.0に向けて開発が進められています。

各プラットフォームでの対応

ざっくりと調べた状況をまとめました。

Windows

Spatialiteの最後の安定版のリリースが2015年ということがあり、公式サイトで配布されているバイナリだとdllが古くてハマることがあるそうです。詳しくはググってください。

Visual Studioを使う場合には以下の選択肢があります。

  1. mod_spatialite
  2. NetTopologySuite.IO.SpatiaLite

www.nuget.org

www.nuget.org

なお、NetTopologySuite.IO.SpatiaLiteはmod_spatialiteのラッパーとして実装されています。

Linux

今回調査の対象外だけどたぶん普通に使える。

macOS

homebrewで使えます。

Android

android-spatialiteが使えると思います。

github.com

iOS

Spatialiteの作者がCocoapods作っていたりしますが、バージョンが4.1.0と古いうえ、geosなどの依存関係があるのにconfigureでgeosなどを切ってるという問題があります。

また、libspatialite-iosというものがありましたが、これも中身のバージョンも依存してるライブラリも古いという問題があります。

そこで、libspatalite-iosをベースにCocoapodsを作れないかと試しています。

github.com

とりあえずmod_spatialite.aが作れるところまでやりました。

ReactNative

android-spatialiteを使ったAndroidのみ対応のものがあるが、Android Xに対応してないバージョンなので作り直したほうがよいかも。

調べてわかったことや感想

  • spatialite自体の開発がgitではなくfossilというものでやっていて、かつ開発者自体がgithubへ移行はしないと名言している
  • fossilでどこで4.3.0aのタグが打たれたのかわからなくて詰んだ
  • spatialite 4.3.0aだといくつかパッチを当てないとproj4 6系以上などが使えない。homebrewのパッチを使うと良さそう
  • 4.1.0あたりではCocoapodsが作られてたりiOS対応したりする人がいたりするのに、なぜかそこらへんが継続されていない
  • 全体的に対応がマチマチな感じがあるのでちゃんと取りまとめしたほうが良さそう
  • fossliきつい...
  • iOSやる気ない感じすごい