この記事は、「SpatiaLiteを使ってSQLだけで面積按分」の準備編です。
SpatiaLite-GUIを利用して、データベースファイルを作成し、地域統計メッシュ(人口データ)をインポートする手順を説明します。
利用するソフトウェア
- SpatiaLite-GUI(2.0.0-devel)
- QGIS(地物を表示しないなら、なくてもよい)
手順
SpatiaLite-GUIの入手
- その他のバージョン等はトップページから。
- ファイルは7z圧縮されている(なぜ…)ので、「7-zip」等の7zアーカイブを展開できるツールで展開します。
- アーカイブにはspatialite_gui.exeというファイルが一つだけ入っているので、任意の場所に展開します。
データの入手
- 使用するデータは先人の記事と同じです。データのダウンロードはこちらを参照してください。
- ここでは、展開したデータ(shapeファイルと統計データtxtファイル)を C:\temp\data ディレクトリ内に保存しています。
SpatiaLiteデータベースの作成
- SpatiaLite-GUIを起動します。
- まず、新しいデータベースを作成します。
File -> Creating a New (empty) SQLite DB と選択
- 任意の場所にデータベースファイルを作成します。
(この記事では、C:\temp ディレクトリ内に db.sqlite という名前で作成します。)
- 作成したデータベースに接続した状態
データの読み込み
- Shapeファイル(MESH05339.shp)を読み込みます。
File -> Advanced -> Load Shapefile
- Shapeファイルの読み込み時には、
①SRID(空間参照システムのID)
②エンコーディング
の指定が必要です。ここでは、
①4612(JGD2000)
②CP932
を指定します。
- 無事に読み込まれると、それを知らせるメッセージが出ます。
- Shapeファイルが読み込まれた状態
- 続いて、統計データ(tblT000608S53390.txt)を読み込みます。
File -> Advanced -> Load CSV/TXT
- CSV/TXTファイルの読み込み時設定ウィンドウが表示されます。
ここでは、
①Column separator に Comma
②Charset Encoding に CP932
を指定します。
- データが読み込まれました。
メッシュへの統計データの結合
先のポストと同様に、QGISでテーブル結合を行っても良いのですが、せっかくなので結合もデータベース内でやってみます。
全部をテーブル結合してもよいですが、ここでは各メッシュの総人口データしか使いませんので、この一列(T000608001)だけを結合します。
- SQLを入力する部分に、以下を入力して実行します。
テーブルデータの結合
-- メッシュポリゴン(MESH05339)に新しい列(T000608001)を作成する。
ALTER TABLE MESH05339
ADD COLUMN T000608001 INTEGER
;
-- 元のテーブルからデータを結合して列を更新する。
UPDATE MESH05339
SET T000608001 = (
SELECT T000608001
FROM tblT000608S53390
WHERE tblT000608S53390.KEY_CODE = MESH05339.KEY_CODE
)
;
- メッシュのデータに列が追加されて、データが入力されているかをSQLで確認してみます。
更新結果の確認
SELECT *
FROM MESH05339
;
- 結果、新しい列に人口データが結合されています。