【QGIS】レイヤの結合 part 2/2 〜大阪都構想住民投票を題材に〜

さて、前回の続きです。改めて目指しているゴールは以下のインフォグラフィックを作ることです。

f:id:demacassette:20150519231952p:plain

 

3.文字列扱いのデータを数値データに変換

 手順2で作成したエクセルデータをcsv形式で保存し、QGISにドロップします。すると、レイヤにテーブル形式っぽいアイコンのレイヤが追加されていきます。

f:id:demacassette:20150524223727p:plain

このテーブル形式らしきレイヤのプロパティを見てみると。。。

f:id:demacassette:20150524223756p:plain

あら?すべての列のタイプ名が"String(文字列)"ですよ!!Stringってのは文字列という意味です。市区町村名、区名、都構想特別区の3つは、確かに文字列なので問題ありません。しかし、投票数、賛成、反対は、数値を入れたはずなので、数値を示す"real(実数)"もしくは、"integer(整数)"であるべきですね。文字列扱いのまま大阪市レイヤと結合してしまうと、「段階的に分けられた」色分け表示ができません。というわけで、ここでは以下の手を打ちます。

■フィールド計算機で文字列を実数に変換

 これはおそらく、もっと良い別の方法があると思いますが、私はこの解決法で乗り切っています。手間がかかるので、別の手間いらずな方法を模索中です。テーブルレイヤの属性テーブルを開いて、以下のアイコンをクリックします。

f:id:demacassette:20150524224432p:plain

すると、こんな画面が。

f:id:demacassette:20150524224539p:plain

正直、最初にこの画面見ると面食らいます。そして、このフィールド計算機では、様々な演算が可能です。この機能だけ紹介するためにも膨大な紙面を要しますので、今回は必要な操作だけ示します。

f:id:demacassette:20150524224732p:plain

これで、"String(文字列)" 扱いだったフィールドを少数点以下が0の実数に変換することができます。

 

さらに、変換された賛成(賛成2)、反対(反対2)のフィールドを用いて賛成比率(賛成/投票数)を算出します。

f:id:demacassette:20150524224705p:plain

お気づきの通り、「精度=小数点以下の桁数」を示しています。

 

さて、これでやっとこさレイヤ結合の準備が整いました!

 

 

4.レイヤの結合

 ここまで来ると、実は楽勝です。データを扱って何かをするってのは、つくづくデータ整理がすべてであることを実感させられます。ここで、改めてテーブルレイヤの属性テーブルを確認します。

f:id:demacassette:20150524225339p:plain

よし、投票数2、賛成2、賛成比率2が小数点付きで追加されています。これを、大阪市のポリゴンレイヤに結合します。

単純に結合せよといっても、「どれをどれに合わせるの?」と言いたくなるでしょう。ここで、最初に追加していた「区名」という列が効いてきます。

結合機能は、情報を付加したいレイヤのプロパティで「結合」をクリックします。

f:id:demacassette:20150524225951p:plain

この画面の"+"ボタンを押すと、以下の画面が。

f:id:demacassette:20150524230148p:plain

お?これどう設定すればいいの?とはあまりならないかもしれません。単純に以下のように設定します。

f:id:demacassette:20150524225735p:plain

 そして、OKを押れば結合完了です。ここで、大阪市のポリゴンレイヤに大阪都構想投票率、賛成、賛成比率の数値データが区ごとに結合されたかが最も気になるところです。大阪市レイヤの属性テーブルを見てみます。

f:id:demacassette:20150524230559p:plain

はい、右の方に追加されてます!ふぅ、よかったよかった。これで、賛成比率を段階に分けて表示したのが、結果です。

f:id:demacassette:20150524231032p:plain

ちなみに、左下のロゴとか入れるのは、プリントコンポーザという機能で編集可能です。これは、また後ほど。

 

このデータやレイヤ結合の手法を元にした、大阪都構想に関する考察については、また後ほど(あまり遅くなると、ほとぼりさめちゃうけど)

 

では〜

 

 

QGIS カテゴリーの記事一覧 - Without Me

【QGIS】レイヤの結合 part1/2 〜大阪都構想住民投票を題材に〜

2015年5月17日(日)に、日本では類い稀な住民投票が行われましたね。

その投票結果なんかについては、別途記述するつもりでいます。

ここでは、社会的に注目度の高い投票結果を題材にして、QGISでのレイヤの結合方法をおさらいします。

ここで言うレイヤの結合とは、例えば市区町村のポリゴンデータが格納されているシェープファイルに、各市区町村の年齢別人口データなどを追加することを言っています。そうすることで、既存のジオデータに社会的データを付加することができ、その社会データの結果をGIS上で表示することができます。これこそGISの醍醐味ではないでしょうか。

まずは、目指すべきゴールを示します。

f:id:demacassette:20150519231952p:plain

大阪市特別区設置住民投票結果(投票数は読売新聞から転記して編集)

大阪市特別区設置住民投票 - Wikipedia

まぁ、よくある図ではあります。GISとかやっている人ならクッソ簡単です。だから私も追いつくために手順書き残します。では、手順です。

 

1.大阪市のポリゴンだけ抽出

 これはGISソフトの基礎の基礎かもしれません。今回使用しているデータは、このブログ内で使用している日本全体の市区町村データです。復習はこちらから。

demacassette2.hateblo.jp

 今回は、大阪府大阪市のみの分析ですので、関西にぐっとフォーカスします。そこで、必要な地物(ここでは大阪市内のすべての区)を選択します。と、その前に一応QGISのレイヤの編集モード切り替えをご紹介

f:id:demacassette:20150519232756p:plain

編集したいレイヤに対して、この動作を行うと、レイヤの編集が可能になります。

(今回の大阪市抽出作業では、実はこの手順は不要なのですが。。。)

そして、以下の選択ツールをクリックして、必要な地物を選択していきます。

f:id:demacassette:20150519233211p:plain

矩形で選択、ポリゴンによる地物選択、フリーハンドによる地物選択とかありますが、ここでは基本機能の矩形で地物選択をしていきます。

f:id:demacassette:20150519232627p:plain

そして地道に一つずつ選択します。ctrl キーを押しながらで、連続選択できます。

f:id:demacassette:20150519232636p:plain

24区すべてを選択!(あ、鶴見区が抜けている。あとでちゃんと入れてます)

そして、選択した地物のみを別のシェープファイルに保存します。

レイヤのプロパティ→名前をつけて保存 で以下の画面が出ますので、以下の設定をして選択地物のみのレイヤを作成します。

f:id:demacassette:20150519233500p:plain

 

すると、自動的に選択された地物のみのシェープファイルがマップに追加されます。

f:id:demacassette:20150519233637p:plain

以上で、第一の下準備は完了です。part1はここまでにしようかな。。。と弱気になりつつ、もう一つ先までいきましょう。 

 

2.結合用データの準備

今度は、QGIS上の作業ではなく、エクセルなどの表計算ソフトの登場です。今回の目的は、地図データに社会的データを乗っけて表示することですので、表示したい社会データを作っておく必要があります。今回の住民投票では、開票後に区別の賛成票、反対票の結果が新聞各紙に掲載されていましたので、それを拝借しました。

f:id:demacassette:20150519234255p:plain

こんな感じで、行列を作っておきましょう。ここで重要になってくるのは、あえて区名のみの列を作っていることです。この列を結合ポイントとしてGISレイヤデータに結合していきます。これがずれるとうまく結合できませんので少し慎重に。

 

ちょっと、part1はここまでにさせてください。

part2では、以下の手順で最終形まで完成させます。

 

3.文字列扱いのデータを数値データに変換

4.レイヤの結合

 

 

QGIS カテゴリーの記事一覧 - Without Me

 

 

 

 

【QGIS】ポリゴン重心をポイントデータに変換する

結論から言えば。。。

ベクタ→ジオメトリツール→ポリゴンの重心

でOK。

f:id:demacassette:20150430234749p:plain

この画面では簡単に見えるが、仕事で使っているwin機では日本語対応ができておらず、英語表記のため見つけるのに時間がかかったわけです。(英語力がないだけ)

ちなみに英語だと。。。

Vector → Geometory Tools → Polygon Centroids...

だったと思います。間違ってたら修正します。

設定画面はいたってシンプル。

f:id:demacassette:20150430235058p:plain

重心点を表示したいポリゴンレイヤを指定します。

結果がこれ。

f:id:demacassette:20150430235129p:plain

今回は、市区町村ポリゴンデータの重心を表示しています。

この状態から何を分析するかは難しいですので、重心点を出すことで何か得られそうなポリゴンデータに出くわしたときに有効活用したい機能です。

 

いつかケーススタディを示せれば幸いです。

 

では。

 

QGIS記事一覧

 

【QGIS】ジオメトリカラムを追加する1(基本操作編)

QGISでは、ジオメトリーツール(Geometry Tool)を使って、GISデータの中の地理的情報を追加することができます。実はこれ、いつも忘れてしまうのでいち早く記録したかった項目です。

ジオメトリカラムの追加でできることはデータの種類によって異なります。

  • ポリゴン:面積(AREA)、周長(PERIMETER)
  • ライン :長さ(LENGTH)
  • ポイント:x座標(XCOORD)、y座標(YCOORD)
そういえば、このブログではGISで扱う基本的なデータ種別や用語について全然触れていませんので、後々補足します。
 
では、ジオメトリカラムを追加する手順は、
ベクタ→ジオメトリーツール→ジオメトリカラムの出力/追加

f:id:demacassette:20150313031237p:plain

続いてこんな画面がでます。

f:id:demacassette:20150313031350p:plain

  • 入力ベクタレイヤ:ジオメトリカラムを追加したいレイヤを選択
  • 計算に利用する:ジオメトリを計算する座標系を選択

ここで、"計算に利用する"の選択肢は意外と重要です。ジオメトリ情報を計算する際のCRS(座標系)を指定する必要があります。デフォルトはレイヤCRSですが、これはレイヤのシェープファイルが元々持っている座標系を利用するという意味だと思います。

もし、異なる座標系を持っているシェープファイルを表示していたとすると、望まない結果が出てきます。例えば、世界座標系の日本地図に、日本座標系のポイントデータを重ねていた場合などが考えられます。この場合は、「プロジェクトCRS」を選択します。すると、QGIS上で設定されているCRSでジオメトリカラムを追加してくれるので、予想外の値が出るのを避けられます。

(筆者の経験では、ポイントデータのx,y座標を追加した際に、"6000,14000"なんていう想像を超えた座標が返ってきたときがあります。これをプロジェクトCRSとして再度実行すると、"139, 34"と緯度経度な感じになってほっとしました。)

これを実行したら、結果を確認します。結果は、新たにベクタレイヤが追加されているので、そのレイヤの属性テーブルを見てみます。

f:id:demacassette:20150313032449p:plain

すると、どうでしょう?右端の列に何か追加されています。今回、試行したのはポリゴンデータでしたので、面積と周長が追加されています。おー、これは便利だな。といった感じです。

しかし、ここで一つ疑問が残るのは、「この値が本当に正しいのかい?」ということです。これは研究者、科学者であれば鵜呑みにはしたくない値なので、次回はこの値が本当なのかを確かめる手段を紹介します。

ジャンルとしては、「計測ツールの使い方」になるかと思います。こんな感じで、必要になった内容を随時追記していきます。

 

では。

 

GISシリーズ記事一覧

 

 

QGISでの文字化け解消法

 前回「GISデータの編集(スタイルとラベル変更など)」でトラブルが発生した件です。QGISは生粋の日本製ではないため、日本語表示がうまく行かない場合があります。

 

 

とは言っても昔のバージョンに比べるととても改善されたように思います。ここでは、ラベル設定時に日本語が文字化けしてしまう現象を解決する方法を記録します。

まず、困った状態がこちら。

f:id:demacassette:20150210002512p:plain

困りましたね。なんか近畿圏を映し出しているくらいの情報しか入ってきません。文字化けの原因は、シェープファイルに格納されたデータのエンコードQGISで表示しているエンコードが合っていないからだと思われます。私が試した解決法は以下の2点です。

  1. 日本語エンコーダーが入っているプラグインをインストール
  2. レイヤのプロパティでデータエンコードを日本語(Shift_JIS)に指定

 

結論から言うと、方法2で解決できちゃいました。プラグインはインストールしてみましたが、今回はなくても解決できました。方法は以下の通り。

f:id:demacassette:20150210021848p:plain

レイヤのプロパティを開いて、"一般情報"の中の"データソースエンコーディング"をデータにマッチしたものに変更。(今回はShift_JIS)以上です。

ちなみに、プラグインをインストールする方法はこちらを参照。

また、シェープファイルを読み込むたびにいちいちエンコード変更するんが面倒なので、読み込み時に自動的にエンコードを判断してくれる機能がないかなぁとちょっと設定してみましたが、うまくいきませんでした。

それっぽいところで試した結果です。

メニュー"QGIS"→"preferences"→"データソース" の中の以下のチェックをはずしてみましたが、効果はありませんでしたね。

f:id:demacassette:20150210022534p:plain

 

以上、GISの本論というより、QGISの設定の内容でした。

 

では、Have a good sleep ♪

 

GISシリーズ一覧