OpenJUMPからのSpatiaLite接続

前回までの記事では、SpatiaLiteを導入しPythonプログラムからの検索までを検証しました。
今回は、OpenJUMPからSpatiaLiteデータベースを利用します。

DB Queryからの検索

OpenJUMPからSpatiaLiteデータベースの検索は、オラクルやPostGIS同様、”DB Query”プラグインから可能です。
DB Queryの起動は、OpenJUMPのメニュー[ファイル]、[DB Query]にて行います。DB QueryにSQLを入力し、画面下部のJDBC接続先にファイル名のフルパスを指定して(例:”jdbc:sqlite:d:\data\test.sqlite”)、”Run Query”ボタンを押下すると検索が実行され地図が表示されます。

OpenJUMPのDB QueryからSpatiaLiteの地図を表示

DB Queryの使い方は、以下を参考にしてください。

DB Queryの問題点

便利なDB Queryですが課題もあり、前回の記事でも扱った空間演算を含むSQLはエラーとなります。

select b.P11_001 from area a ,busstop b where a.s_name = ‘丸の内1丁目’ and Contains(a.Geometry ,b.Geometry);

DB Queryから上記SQLを発行すると、以下のエラーとなります。(日本語は文字化けしていますが、正しく認識されています。)

SQLに空間関数を含めるとエラーとなる

これは、DB QueryにSpatiaLiteの空間拡張モジュールが読み込まれていないことが原因です。では、空間拡張モジュールを読み込ませるとどうなるでしょうか?

DB Queryに空間拡張モジュールを読み込ませるとエラーとなる

今度は、不許可エラー(not authorized)となりました。
この現象は、OpenJUMP(DB Query)から、拡張モジュールの読み込みを許可するAPIが発行されていないことが原因と思われます。
例えば、Pythonの場合は、以下のAPIにて拡張モジュールの読み込み許可設定を行います。
con.enable_load_extension(True) ※conは、データベース接続オブジェクト

SpatiaLiteプラグインの導入

DB Queryは、ここまでが限界のようなので、OpenJUMPのプラグインを調べていくと、”SpatiaLite Plugin”がありました。
このプラグインを使えば、SpatiaLiteデータベースに空間演算を含むSQLを発行してOpenJUMPに地図表示できるようです。早速導入しましょう。

物件のダウンロード

物件のダウンロードはこちらのサイトから行います。
アクセスすると以下の画面が表示されます。

SpatiaLiteプラグインのダウンロード画面

画面の”1.4”フォルダの下にある以下のファイルをダウンロードします。
・spatialite-plugin-1.4_Win32.zip
 ※64ビット環境でも上記ファイルです。

物件の配置

ファイルのダウンロードが完了したら、以下のように物件を配置します。
1.必要な物件(2つのjarファイル)
・spatialiteplugin-1.4.jar
・sqlite-jdbc-3.30.1.jar
2.配置先
$OJ_HOME\lib\ext
$OJ_HOMEは、OpenJUMPのホームディレクトリです。

物件を配置したら、OpenJUMPを起動します。
起動後に”レイヤ”メニューを選択すると、最下部に”Import Spatial Layer…”が追加されます。

”Import Spatial Layer…”が追加れる

”Import Spatial Layer…”を選択するとプラグインの画面が表示されます。
画面から”Open Spatial DB”アイコンをクリックしてSpatiaLiteデータベースファイルを指定し、画面左の”Tables”ツリーにテーブルが表示されたら導入は成功です。

”Tables”ツリーにテーブルが表示される

SpatiaLiteプラグインの動作確認

SQLの入力方法

このプラグインは、下記2つの方法でSQLを入力することができます。
・キーボードからの直接入力
・画面左のSQLや空間関数などをの指定入力

SQLを入力後、アイコン”Execute SQL query”を押下すると、SQLが実行され結果がリスト表示されます。

SQLの実行結果がリスト表示される
SQLの実行と地図表示

ジオメトリを含む検索結果が表示された状態で、アイコン”Add Layer”を押下すると、OpenJUMPにレイヤが追加され地図が表示されます。

検索結果が地図に表示された
プラグインを使って気づいた点

SpatiaLiteプラグインを使って気づいた点を以下に示します。

  • 画面左にSQLや関数の一覧が表示されており空間拡張関数の学習に役立つ
  • SQLをキーボード入力できるが、コピペには未対応
  • モーダルダイアログのためプラグイン表示中はOpenJUMPを操作できない
  • プラグインの画面を開くごとにデータベースへの接続が必要

まとめ

今回は、以下を学習しました。

  • DB QueryからのSpatiaLiteデータベースへの接続
  • SpatiaLiteプラグインの導入とデータベースへの接続

SpatiaLiteプラグインは、機能的に大変よくできていて、かなり堅牢な作りのように感じました。ただ、SQLがコピペできない点はかなり残念でした。
このプラグイン、もしかしたら教育を目的に作られたものかなと感じました。