QGISによるデータ分析(7)

この記事は1年以上前に書かれました。
内容が古くなっている可能性がありますのでご注意下さい。


前回は、標高の値を持つラスタ地図を使用して横浜市北西部の緑区・都筑区・青葉区をカバーする地形図を作成しました。今回は、ラスタ地図とQGISによるデータ分析(4)で作成した人口メッシュのベクタ地図を使用して、3つの区の標高別人口を求めます。

はじめに、レイヤのCRSを揃えるために、バーチャルラスタレイヤをのCRSを平面直角座標系「JGD2000 / Japan Plane Rectangular CS IX」(EPSG:2451)に変更して別名で保存します。

次に、QGISによるデータ分析(4)で作成した、ポリゴンから重心点に変換した人口メッシュのベクタ地図を読み込みます。人口メッシュの重心のベクタ地図を作成する方法については、こちらのテキストで詳しく説明しています。
ラスタレイヤの上にベクタレイヤを重ねると以下のようになります。

ベクタレイヤの各点は、属性として人口を持っていますが、標高は持っていませんので、ラスタレイヤから標高を取得します。
そのために、「Point sampling tool」というプラグインを使用しますので、インストールします。

[プラグイン]メニューから、[Analyses]→[Point sampling tool]を選んでPoint sampling toolプラグインを起動します。

サンプリングする点を含むレイヤとして人口メッシュの重心のベクタレイヤを選択し、値を取得するフィールド/バンドを含むレイヤとして平面直角座標系に変換したラスタレイヤを選択します。出力するベクタレイヤの名前を指定して[OK]ボタンをクリックします。

新しいレイヤができますが、このレイヤは属性値として標高しか持っていません。そこで、このレイヤと、人口メッシュの重心のベクタレイヤを[ベクタ]メニューの[空間演算ツール]→[交差]で結合します。

これで人口と標高を属性に持つベクタレイヤができましたが、まだ行政区域の属性を持っていません。そこで、QGISによるデータ分析(4)で作成した、平面直角座標系による横浜市の行政区域のベクタ地図を読み込みます。横浜市の行政区域のベクタ地図を作成する方法については、こちらのテキストで詳しく説明しています。

最後に、[ベクタ]メニューの[空間演算ツール]→[交差]で人口と標高を属性に持つベクタレイヤと横浜市の行政区域のベクタレイヤを結合します。

こうして作成されたベクタレイヤは、横浜市に含まれ、人口と標高、行政区域の属性を持った点の集まりです。但し、標高のラスタレイヤは横浜市北西部しかカバーしていないため、それ以外の地域については標高の値が入っていません。

あとは属性の値を分析するだけですが、その前に、クエリビルダを使用して横浜市北西部の緑区・都筑区・青葉区だけを抽出します。

3区の抽出後に属性テーブルを開き、テーブルのすべてを選択してからクリップボードにコピーし、LibreOffice Calc等の表計算ソフトにペーストします。
ここからは、表計算ソフトでの作業になります。
まず、10m単位の「標高」列を追加します。ラスタレイヤから取得した標高の値はL列に入っているので、新しい列の2行目には「=FLOOR(L2,10)」と入力し、3行目以降、データの入った最後の行まで式をコピーします。
次に、全データを選択してから[データ]メニューの[ピボットテーブル]→[作成…]を選択します。
「ピボットテーブル」ダイアログボックスで、列フィールドには行政区名の入った「N03_004」、行フィールドには追加した「標高」列、データフィールドには総人口の「tblT000609」を指定します。

ピボットテーブルが作成されます。

テーブルから横棒積み上げグラフを作成し、タイトル等を設定すると以下のようになります。

グラフを見ると、青葉区では比較的標高の高い所に、都筑区では比較的低い所に多く住んでいることが分かります。緑区では、あまり大きなピークは見られず、10mから50mまでは比較的均一に人口が分布しています。

QGISによるデータ分析 123456789