2009年7月26日日曜日

東京都の人口データ(平成20年)の準備とテーブルの作成

東京都の人口データ(平成20年)の準備

住民基本台帳による世帯と人口
http://www.toukei.metro.tokyo.jp/juukim/jm-index.htm

平成20年6月のデータをダウンロードしました。
これを人口総数(A+B)、男、女、外国人登録人口に行政コードを追加した単純な表にします。

例えば、
0 OpenOffice.org Calc でダウンロードしたファイルを開く
1 データをコピーし、別のファイルに
編集->形式を選択して張り付け->「テキスト、数」だけチェックして「OK」
2 列のタイトルは1行にする
3 市区町村の行以外を削除する(空行や合計行など)
4 市区町村名、人口総数(A+B)、男、女、外国人登録人口以外の列を削除する
5 行政コードを追加する (行政コード、市区町村名、人口総数(A+B)、男、女、外国人登録人口の順にしました。)
6 タイトル行を削除する
7 CSVファイルとして出力

行政コードは、インターネットで探すか、次のようにマップデータから作成します。

Eclipseを起動して tokyo データベースに接続します。
データベース構造(Database Structure) ウィンドウの

public -> テーブル(table) -> gyoseikai

をクリックを右クリックし、 Selectステートメントの生成 をクリックします。
SQLエディタ に次のように入力して実行します。

select distinct con, cn2, aac from "public"."gyoseikai"

表示された結果を右クリックして、 エクスポート->export to .csv をクリックします。
include column header をチェックし、宛先 ボタンをクリックして保存先とファイル名を指定し、OK ボタンをクリックします。

csvファイルを開き aac で「並べ替え」した後、aac (行政コード)をコピーし、加工した人口データに貼り付けます。


*コマンドでCSVファイルに出力

user@debian:~$ psql -F ',' -A -t -c 'SELECT DISTINCT con, cn2, aac from gyoseikai' tokyo > gyosei_code.csv


参考

user@debian:~$ psql tokyo
Welcome to psql 8.1.11, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit

tokyo=> \o gyosei_aac.txt
tokyo=> SELECT DISTINCT con, cn2, aac from gyoseikai;
tokyo=> \!less gyosei_aac.txt
tokyo=> \o
tokyo=> \q

バージョン8.3なら次も可能

tokyo=> \COPY (SELECT DISTINCT con, cn2, aac from gyoseikai) TO 'aac2.csv' WITH DELIMITER ','

ファイルの内容

葛飾区,\N,13122
江戸川区,\N,13123
江東区,\N,13108
---


東京都の人口テーブルの作成

データベースtokyoに次のようにテーブルを作成します。

Eclipseの場合(2009.7.22現在、実行が完了してもテーブルが生成できないか、エラーが表示されました。)
データベース構造(Database Structure) ウィンドウの

public -> テーブル(table) -> gyoseikai

をクリックを右クリックし、 Create Table スクリプト をクリックします。
SQL エディタ を次のように修正して実行します。


CREATE TABLE "public"."population"(
aac varchar(5),
shikuchoso varchar(14),
total int4,
male int4,
female int4,
foreigner int4);


データベース構造(Database Structure) ウィンドウのテーブル(table)を右クリックし、更新 をクリックすると population テーブルが表示されます。

*コマンドで population テーブルを作成(2009.7.22現在、こちらでテーブルを作成しました。)

user@debian:~$ psql tokyo
Welcome to psql 8.3.7, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit

tokyo=> CREATE TABLE population (
tokyo(> aac varchar(5),
tokyo(> shikuchoso varchar(14),
tokyo(> total int4,
tokyo(> male int4,
tokyo(> female int4,
tokyo(> foreigner int4);
NOTICE: CREATE TABLE will create implicit sequence "population_aac_seq" for serial column "population.aac"
CREATE TABLE
tokyo=> \q

tokyo_population.csv の内容を population テーブルに追加します。
スーパユーザー(postgres)で

nob61@debian:~$ su - postgres
パスワード:
postgres@debian:~$ psql tokyo
Welcome to psql 8.3.7, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit

tokyo=# COPY population FROM '/home/nob61/download/tokyo_population/tokyo_population.csv' CSV;
COPY 62
tokyo=# \q

tokyo_pgis.mapの DATA の部分を次のように修正します。

DATA "the_geom from (
SELECT gyoseikai.gid AS gid,
gyoseikai.con AS con,
gyoseikai.cn2 AS cn2,
gyoseikai.aac AS aac,
gyoseikai.the_geom AS the_geom,
population.total AS total,
population.male AS male,
population.female AS female,
population.foreigner AS foreigner
FROM gyoseikai LEFT OUTER JOIN population ON gyoseikai.aac = population.aac
)
AS gyosei_pop USING UNIQUE gid USING SRID=-1"

0 件のコメント: