準備編：SpatiaLite-GUIを使ってデータベースファイルを用意する

この記事は、「[SpatiaLiteを使ってSQLだけで面積按分](http://qiita.com/yoh_chan/items/a61f424f54b0686f608b)」の準備編です。
SpatiaLite-GUIを利用して、データベースファイルを作成し、地域統計メッシュ（人口データ）をインポートする手順を説明します。

# 利用するソフトウェア
- SpatiaLite-GUI(2.0.0-devel)
- QGIS（地物を表示しないなら、なくてもよい）

# 手順
## SpatiaLite-GUIの入手
- ここでは、Windows-64bit版を入手します。
- [こちら](http://www.gaia-gis.it/gaia-sins/windows-bin-amd64/)から**spatialite_gui-4.3.0a-win-amd64.7z**をダウンロードします。（Windows-32bit版は[こちら](http://www.gaia-gis.it/gaia-sins/windows-bin-x86/)）

![image](https://qiita-image-store.s3.amazonaws.com/0/101923/b884ec70-2b36-3eed-804e-0919ac966a85.png)

- その他のバージョン等は[トップページから](http://www.gaia-gis.it/gaia-sins/)。
- ファイルは7z圧縮されている（なぜ…）ので、「7-zip」等の7zアーカイブを展開できるツールで展開します。
- アーカイブには**spatialite_gui.exe**というファイルが一つだけ入っているので、任意の場所に展開します。

![image](https://qiita-image-store.s3.amazonaws.com/0/101923/2fe8ffdc-772f-d288-0f94-27585d3fe07b.png)


## データの入手
- 使用するデータは先人の記事と同じです。データのダウンロードは[こちら](http://qiita.com/takahi/items/9d44966b10d6257d8b2d)を参照してください。
- ここでは、展開したデータ（shapeファイルと統計データtxtファイル）を C:\temp\data ディレクトリ内に保存しています。

![003.png](https://qiita-image-store.s3.amazonaws.com/0/101923/7d2455dd-9ef4-536a-5230-e46c7b2a2e24.png)



## SpatiaLiteデータベースの作成
- SpatiaLite-GUIを起動します。
- まず、新しいデータベースを作成します。<br>
**File -> Creating a New (empty) SQLite DB** と選択

![001.png](https://qiita-image-store.s3.amazonaws.com/0/101923/894d1c0a-2268-3927-a3bd-ea91bcad84f8.png)

![002.png](https://qiita-image-store.s3.amazonaws.com/0/101923/178c7761-49a4-4702-9309-b14f1a500716.png)

- 任意の場所にデータベースファイルを作成します。<br>
（この記事では、C:\temp ディレクトリ内に db.sqlite という名前で作成します。）

![004.png](https://qiita-image-store.s3.amazonaws.com/0/101923/a2792ead-7224-8ddd-67e5-edcc24d1ca76.png)

- 作成したデータベースに接続した状態

![005.png](https://qiita-image-store.s3.amazonaws.com/0/101923/a439db67-5942-a2fd-b342-8510131cd910.png)


## データの読み込み
- Shapeファイル（MESH05339.shp）を読み込みます。<br>
**File -> Advanced -> Load Shapefile**

![006.png](https://qiita-image-store.s3.amazonaws.com/0/101923/342bb2f5-4267-43b5-cf60-d60c0406830d.png)
![007.png](https://qiita-image-store.s3.amazonaws.com/0/101923/92542e74-b105-65f9-8474-b1bf1921d2de.png)

- Shapeファイルの読み込み時には、<br>
　①SRID（空間参照システムのID）<br>
　②エンコーディング<br>
の指定が必要です。ここでは、<br>
　①4612（JGD2000）<br>
　②CP932<br>
を指定します。

![008.png](https://qiita-image-store.s3.amazonaws.com/0/101923/0e738046-a0d8-fc2e-c459-1fa37fcec760.png)

- 無事に読み込まれると、それを知らせるメッセージが出ます。

![009.png](https://qiita-image-store.s3.amazonaws.com/0/101923/7236557a-f901-9d99-53a0-b74c2157a5f0.png)

- Shapeファイルが読み込まれた状態

![010.png](https://qiita-image-store.s3.amazonaws.com/0/101923/ca3d6af7-2a0c-e029-323a-1f89b08893a5.png)


- 続いて、統計データ（tblT000608S53390.txt）を読み込みます。<br>
**File -> Advanced -> Load CSV/TXT**

![011.png](https://qiita-image-store.s3.amazonaws.com/0/101923/a88ae76a-2edd-791c-b5c5-79e899635557.png)
![012.png](https://qiita-image-store.s3.amazonaws.com/0/101923/414e70e8-9fc7-2ff0-2e13-afbedb1a5431.png)

- CSV/TXTファイルの読み込み時設定ウィンドウが表示されます。<br>
ここでは、<br>
　①Column separator に Comma<br>
　②Charset Encoding に CP932<br>
を指定します。

![013.png](https://qiita-image-store.s3.amazonaws.com/0/101923/6eeb0a6b-8901-85c5-88da-bec782b563c4.png)


- データが読み込まれました。

![014.png](https://qiita-image-store.s3.amazonaws.com/0/101923/a059bb4a-afd4-f0fe-3eee-edb64cf7bc9f.png)


## メッシュへの統計データの結合
[先のポスト](http://qiita.com/takahi/items/9d44966b10d6257d8b2d)と同様に、QGISでテーブル結合を行っても良いのですが、せっかくなので結合もデータベース内でやってみます。
全部をテーブル結合してもよいですが、ここでは各メッシュの総人口データしか使いませんので、この一列（T000608001）だけを結合します。

- SQLを入力する部分に、以下を入力して実行します。

```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
)
;
```

![image](https://qiita-image-store.s3.amazonaws.com/0/101923/dd51112b-e426-d81a-eef2-1dbdd6e0c816.png)


- メッシュのデータに列が追加されて、データが入力されているかをSQLで確認してみます。

```sql:更新結果の確認
SELECT *
FROM MESH05339
;
```

![image](https://qiita-image-store.s3.amazonaws.com/0/101923/f293cb4a-e243-c477-c224-797d019c6296.png)

- 結果、新しい列に人口データが結合されています。