マンションのデータを扱って行くために必要な基本的なスキルを身につけていきましょう。今回は前編です。今日は日本地図を使って、属性ごとに色分けをし、地図を作成するまでの流れを学びます。新聞などに載ってるレベルの地図が作れるようになりますので頑張りましょう。
1. データの準備
(1) まずデータをダウンロードしましょう。
(2) ダウンロードしたzip ファイルを解凍します。解凍できない場合は、7-ZipやLhasa32などのファイル圧縮・解凍ソフトウェアをインストールします。解凍したデータは演習1で作ったspatialanalysisというフォルダに格納します。
以下データ一覧です。
データ項目名 | データセット名 | データ形式 | ファイル名 | 備考 |
---|---|---|---|---|
都道府県界 | pref_bnd | shape形式 | pref_bnd.shp pref_bnd.dbf pref_bnd.shx pref_bnd.sbn pref_bnd.sbx | (出典) ESRI Japan |
全国市区町村界データ | japan | shape形式 | japan.shp japan.dbf japan.shx japan.sbn japan.sbx | (出典) ESRI Japan |
鉄道駅 | JR-Sta | shape形式 | JR-Sta.shp JR-Sta.dbf JR-Sta.shx JR-Sta.sbn JR-Sta.sbx | (出典) 国土数値情報 |
鉄道路線 | JR | shape形式 | JR.shp JR.dbf JR.shx JR.sbn JR.sbx | (出典) 国土数値情報 |
市区町村別統計 | csv形式 | A人口世帯.csv B自然環境.csv C経済基盤.csv D行政基盤.csv E教育.csv F労働.csv G文化スポーツ.csv H居住.csv I健康医療.csv J福祉社会保障.csv K安全.csv 市町村別人口時系列.csv | (出典) e-stat |
2. 地図データの表示
shape形式のデータはGISを用いることで表示できます。GISでは、地図データの表示に際して、レイヤモデルを採用しています。AdobeのIllustratorやCADを扱ったことがあれば少し実感できるかもしれません。ユーザーは複数のレイヤをGISに追加することで、色々な地図を作成することができます。ここではQGISを用いて、レイヤを追加し、表示する方法を学びます。
2.1. QGISで地図データの表示
(1) QGISを起動します。
(2) メニューバーの「プロジェクト」→「新規作成」もしくは起動画面から「新規プロジェクト」を選択すると、白い画面が表示されます。本演習では、この白い画面の上に複数の地図データを重ねて表示し、一枚の地図を作ることを目標にします。


(3) データソースマネージャーを開きます。開き方は下図を参照してください。

(4) 出てきた画面の中から演習1で作ったフォルダ(Japan.zipを解凍したものが置かれているはず)に移動しましょう。移動したら「Japan」→「data」と進み、「pref_bnd.shp」をダブルクリックしましょう。そうすると都道府県界が表示されたはずです。


(5) 同様に「japan.shp」も追加してみましょう。すると、pref_bndレイヤの上にjapanレイヤが重ねられ、都道府県界が市区町村界に変わります。左下のレイヤパネルには、追加されたレイヤがリストアップされています。

2.2 レイヤの操作
レイヤパネルのレイヤ名の左にあるチェックボックスをクリックすることで、レイヤの表示/非表示を切り替えることができます。
また画面上部にはデータソースマネージャーを開くためのアイコン以外にもいろいろあります。カーソルを合わせるとアイコンの機能が表示されます。確認してみましょう。
不要なレイヤはレイヤパネルから削除できます。本演習ではpref_bndレイヤは使用しないので、削除してみましょう。pref_bndレイヤを右クリックすると、次のようなメニューが表示されます。このうち「レイヤの削除(R)」をクリックすると、pref_bndレイヤは「レイヤパネル」から削除されます。「レイヤパネル」から削除しても、データファイルをパソコンから削除することにはなりません。

3. コロプレス図の表示
全てのGISデータには、属性値がまとめられた「属性テーブル」が存在します。では属性テーブルを見てみましょう。レイヤパネルの「japan」を右クリックし、「属性テーブルを開く(O)」をクリックします。
すると、真っ先に目に飛び込んでくるのは下図赤枠のような「文字化け」ではないでしょうか。そこで文字化けを直します。まず属性テーブルを閉じます。

そして、レイヤパネルの「japan」を右クリックしてプロパティを開きます。下図のように左のメニューから「ソース」を選びます。すると、エンコーディングの部分がUTF-8になっているのではないでしょうか。これはWindows⇄Mac間のやりとりで発生します。と言うのも、Windowsのデフォルト文字コードはShift-JISで、MacはUTF-8だからです。今回のデータはWindowsで作られていたようなので、Shift-JISを選んであげましょう。選び終わったら右下の「OK」をクリックします。

すると、このように文字化けがなくなったことがわかります。これが属性テーブルです。NULLとはデータが入ってないことを表しています。

このような属性値を分類し、フィーチャーを塗り分けた地図をコロプレス図と呼びます。ここでは、コロプレス図の作成方法を学びます。コロプレス図は、人口などの属性値の地理的分布を概観することができる地図です。ここでは国内における人口の地理的分布をみることにしましょう。
(1) レイヤパネルの「japan」を右クリックし、プロパティを開く。
(2) 左のメニューから「シンボロジ」を選択し、「単一定義(single)」となっている部分を「連続値による定義(graduated)」にします。


(3) 次に値の部分に人口「P_NUM」を入れてみましょう。他の選択肢が何を表わしているかは、行政界データ詳細.txtを参照してください。

(4) 値を設定したら、下図で赤枠で囲った「分類」をクリックします。そうすると「分類数」の設定に合わせて、分類した結果がウインドウに表示されます。「OK」をクリックして、レイヤプロパティを閉じます。

以上の操作によって、市区町村の人口の地理的分布が概観することはできたでしょうか?

実はこのような表現では問題が生じてしまいます。例えば、この地図の中で栃木県宇都宮市(約52万人)と東京都杉並区(約54万人)は、同じ階級に分類され、同じ色で表示されています。つまり宇都宮市と杉並区には、同程度に人口が集中していると言えます。果たしてこれは実情を反映しているでしょうか。
これはコロプレス図の抱えるジレンマです。実際には、杉並区の方に人口が集中しているはずです。このような結果が導かれたのは、人口とその集計単位である市区町村の大きさの関係を無視したためです。このように本演習で扱っているような空間データを扱う際には、変数と空間集約単位の関係に注意しなければなりません。
その対処方法として変数を空間集約単位の大きさで割り算する方法があります。ここではどのようにそれを行なうか、練習してみましょう。
(5) 値の右にある、下図で赤枠で囲ったアイコンをクリックすると「式ダイアログ」が開きます。

(6) 式ダイアログにP_NUMと入力されているはずです。また、行政界データ詳細.txtによれば、「AREA」に各市区町村の面積が格納されています。そこでP_NUM / AREAと入力します。これによって、分類の対象が人口密度になりました。入力が終わったら右下のOKをクリックしましょう。

(7) もう一度レイヤプロパティに戻り、先程と同じく「分類」をクリックします。そうすると、分類の値が変化します。新たな分類になっていることを確認したら、右下のOKを押して、レイヤプロパティを閉じます。

(8) 新しい地図では、三大都市圏が赤くなっていることがわかります。

ここまできたら「プロジェクト」→「名前をつけて保存」から、演習1で作ったフォルダの直下にno2という名前で保存しておきましょう。
4. 属性テーブルの結合
これまでは、japanレイヤに初めから含まれている属性値を用いて、地図上で表現してきました。しかしながら、他のデータが用意されているにもかかわらず、地図上で表現しないのは、勿体無いことです。QGISのテーブル結合機能を用いることで、既存のデータベースをGISで用いることができるようになります。本演習では、総務省によって定められた全国地方公共団体コード(通称:市区町村コード)を用いて、地図データと他のデータベースを関連付けて、地図上で表示させることを目標とします。
まず、テーブル結合とは何か、図をみながら理解してみましょう。テーブル結合とは、2つのテーブルの列に着目したとき、一致する値があればその値をキーとして2つのテーブルをくっつける操作のことです。QGISでは、
- 「GISデータの属性テーブル」と「GISデータの属性テーブル」
- 「GISデータの属性テーブル」と「Excelやcsvなどのテーブル」
- 「Excelやcsvなどのテーブル」と「Excelやcsvなどのテーブル」
の結合ができます。

では、実際にテーブル結合を行いましょう。
(1) データソースマネージャーを開きます。左側で「csvテキスト」を選び、ファイル名の右にある「…」から「Japan」→「統計」→「市町村別人口時系列.csv」 を追加してください。この時、もしサンプルデータとして見えているプレビューが文字化けしていたら、エンコーディングで「Shift_JIS」を選んでください。

(2) ついで、ジメメトリ定義を開き、「ジオメトリなし(属性のみのテーブル)」を選択します。ジオメトリなしとは、地理的な情報が含まれていないことを表しています。ここで言う地理的な情報とは、座標を指しており、札幌市や室蘭市など自治体名のことではありません。ここまできたら右下の「追加(A)」をクリックし、この画面を閉じます。

(3) テーブル結合は、結合先となるレイヤのレイヤプロパティから設定します。今回の例では、結合先である「japan」に先ほど読み込んだ「市町村別人口時系列.csv」を結合するので、「japan」を右クリックしてプロパティを開きます。
(4) 左側のメニューからテーブル結合を選択し、左下にある[+]ボタンをクリックします。そうすると「ベクタ結合の追加」というポップアップが表示されるはずです。結合レイヤが「市区町村別人口時系列」になっていることを確認したら、統合基準の属性とターゲット属性を入力します。結合基準とはcsv側(市区町村別人口時系列.csv)のことで、ターゲットとはshp側(japan)のことです。それぞれキーとなる属性を入力しましょう。さらに「結合する属性の接頭辞」にチェックを入れ、「市区町村別人口時系列_」といった文字が出てきますが、これを消し、「OK」をクリックします。

(4)’ 上図⑤の作業の意味について簡単に説明しましょう。結合されたテーブルのフィールド名(属性テーブルの列名のこと)は、デフォルトの設定で「ファイル名_ +元のフィールド名」となってしまいます。しかし、フィールド名の文字数には制限があります。そこでファイル名を元のフィールド名にくっつけないように、「フィールド名の接頭辞」にチェックを入れ、接頭辞にデフォルトで指定されている「ファイル名_」を削除したのです。
(5) 先ほど「ベクタ結合の追加」で「OK」をクリックしたら、レイヤプロパティに戻ってきたはずです。この画面では下図のように結合のルールが追加されたことが確認できます。確認できたら「OK」 をクリックしてレイヤプロパティを閉じます。「+」 ボタンから結合の設定を更に追加し、1つの対象レイヤに複数のテーブルを結合させることもできます。

(6) 属性テーブルを開いてみましょう。テーブルの右側に新しく結合されたデータが見えるはずです。ただし、一点注意があります。テーブル結合では、あくまでも臨時に二つのテーブルを繋げたに過ぎず、shpファイルにその情報は保存されていません。この結果を保存するには、新たなshpファイルとしてエクスポートしなければなりません。

(7) エクスポートするには「japan」を右クリックし、「エクスポート」→「地物の保存(新しいバージョンだと「新規ファイルに地物を保存」)」を選択します。

(8) 「ベクタレイヤを名前をつけて保存」が開かれたら、形式を「ESRI Shapefile」にし、「Japan」→「data」の下にjapan_v2という名前で保存しておきましょう。

5. レイアウトの作成
では、いよいよ最後の仕上げをしていきましょう。作成したコロプレスマップを書き出します。
5.1 地図の配置
(1) メニューバーから「プロジェクト」→「新規印刷レイアウト」を選択します。

(2) 次のような画面が表示されたら、「演習2」と入力し、OKをクリックします。

(3) 次のような画面が表示されればOKです。

(4) メニューバーから「アイテムを追加」→「地図を追加」を選択します。

(5) このような画面が表示されますので、「OK」をクリックします。

(6) 白いキャンバスの上にカーソルを合わせてクリックすると、地図がプロットされます。そのまま地図を拡大させて、キャンバスのサイズに合わせてみましょう。
(7) このように表示されましたか?

5.2 各種アイテムの配置
コロプレスマップに限らず、地図には凡例、方位記号、縮尺(スケールバー)が必要です。
(1) 先ほど同様、メニューバーから「アイテムを追加」に進み、「凡例を追加」を選択します。

(2) 地図を配置した時と同様「新規アイテムのプロパティ」が表示されますが、「OK」をクリックして、画面を閉じます。
(3) (1)と(2)と同じように、方位記号と縮尺(スケールバー)を追加してみましょう。追加したら、下図のようにそれぞれを配置してください。

(4) 凡例をみてください。「市区町村別人口時系列」「japan」と表示されています。皆さんは、この地図が市区町村別の人口密度を表していることを知っていますが、初めてみた人はわからないでしょう。ですので、凡例をいじっていきます。
(5) 地図上で凡例を選択し、右のウインドウ中央にある「アイテムプロパティ」をクリックします。そうすると下の方に「凡例アイテム」ウインドウが開きますので、「市町村別別人口時系列」をダブルクリックします。そうすると画面中央のように「凡例プロパティ」が開きますので、名前を「人口密度」に変えてみましょう。同様に「japan」も「市区町村別」に変更してみましょう。

5.2 書き出し
QGISでは、画像やPDFなどのファイル形式に地図をエクスポートすることが可能です。ここではPDFに書き出してみましょう。
(1) 下図のように画面上部のアイコンから「PDFとしてエクスポート(E)」を選びます。

(2) 保存先を演習1で作った「spatialanalysis」の下にし、「演習2」という名前で保存します。

(3) PDF出力のオプションを聞かれますが、基本的に設定を変更することなく「保存」をクリックして構いません。

(4) 保存したPDFを開いて、無事表示されていれば成功です。
5.3 QGISファイルの保存
折角ここまで作ってきたファイルです。保存しておきましょう。
(1)メニューバーから「プロジェクト」を選び、「名前をつけて保存」を選びましょう。次のような画面が出てくるはずです。

(2)ファイルの形式をQGISファイルにしたら、保存します。保存場所はspatialanalysisの直下にしましょう。
2020.9.25 QGIS版 初版(政策・メディア研究科 博士課程 1年 中山俊)