Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8916

ElectronでGeoPackageを使う

$
0
0

GeoPackageとは

界隈では長らくデファクトスタンダードのフォーマットであったESRI Shapefileを駆逐する可能性を秘めた新世代フォーマット。
OSSの代表的なGISソフトウェアであるQGISでは3系バージョンから標準サポートされている。
その他GDAL、GeoToolsなど標準ライブラリなどもサポート済み。

Shapefileの何が嫌か

1レイヤーを格納するのにファイルが多い

最低でも3つ、場合によってはそれ以上のファイルが必要となり、レイヤー数が増えると煩雑に…
以下ESRIのサイトより引用
image.png

ファイルサイズ、属性名のサイズの制限がきつい

ファイルサイズが2GBまでとか、属性名が日本語だと5文字までとか前時代的。
イマドキこんなサイズ制限に悩まされるなんて嫌だ。
image.png

GeoPackageの良さ

  • 複数のレイヤーを1つのファイルにまとめられる
    • ポータビリティに優れる
  • サイズ制限が実質ない
    • あるけどその上限に引っかかる前に他の要因がハードルになるレベルだと思う
  • 実体がSQLite

Electronとは

ざっくり言えばWebの技術を用いてクロスプラットフォームアプリケーションを構築できるフレームワーク。
開発者であればVS Code、SlackなどElectronで作られたアプリを使うケースも増えていると思う。

Electron with GeoPackage

ジオ系アプリの開発をしていると、オフライン環境でもデータを閲覧したい、編集したいという要件が出てくることがある。
その場合、インターネット接続が必須となるWebアプリケーションでは要件が満たせない。
単純な閲覧、編集ならQGISで良いのだけど、そこにビジネスロジックが絡んでくると途端にハードルが上がってしまう。

そこで開発が(自分がWebエンジニアなので)比較的容易であり、Webアプリもネイティブアプリも(ほぼ)同じコードベースで実現でき、ポータビリティにも優れるであろうこの組み合わせに興味が湧いたので試してみた。

結果

geopackage640.gif
データには国土数値情報から東京都のバス停をダウンロードし、GeoPackage化したものを使用している。

ソースコードはこちら

今後

現段階ではGeoPackageをロードして表示しだけなので基本的なユースケースを実装して試してみたい。

  • 複数レイヤーの対応
    • レイヤースイッチャーを用意する
    • レイヤー順序を入れ替える
  • 属性表示
    • 地物をクリックして属性表示
  • 検索
    • 対象地物を属性で検索
  • 空間演算 & 検索
    • 任意地点から半径1km以内の〇〇を探す、みたいなことをやってみたい
      • SpatiaLiteのエクステンションを入れればいけそう

Viewing all articles
Browse latest Browse all 8916

Trending Articles