見出し画像

【実習編】非専門家のためのQGIS ~東京都全域のデータから23区内だけ取り出そう~

I. はじめに

ネットから入手できるGISデータが、自分が欲しい情報とぴったりマッチすることはほとんど無いということは、これまでのnoteの記事からも実感できつつあるのではないでしょうか。欲しい範囲に対し、ちょっと足りなかったり、逆に余分なものが入ってきたり・・・。

今回は、入手したGISデータから欲しいところだけを抽出する方法について紹介します。東京都全域のGISデータから東京23区内の範囲だけを取り出してGISに表示させてみましょう。


II. データの準備

今回必要となるGISデータは、行政区域データです。行政区域データの入手先として最も一般的なのは、国土数値情報ウェブサイトですね。ここから東京都の行政区域データを選択してダウンロードしましょう(※1)。

画像15

※1 全国データをダウンロード済みの場合は、それを用いても問題ありません。ただし、後に登場する属性検索で指定する検索条件が、記事のものと若干異なります(※4を参照)。


III. 東京都23区を抽出する

QGISを起動し、用意した東京都の行政区域データを表示させましょう。

1. 作業方針
GISデータから必要な範囲だけを抽出するには次の2つのステップを踏みます(※2)。

1. 必要な範囲を選択状態にする
2. 選択範囲をエクスポートする

2.の選択範囲のエクスポートは、難しいことは何もなく一瞬で終わります。このnoteのポイントとなるのは「1. 必要な範囲を選択状態にする」です。

※2 正確に言えば、ベクトルデータにおける抽出方法の手順です。ラスターデータの場合は、クリップやマスクと呼ばれる切り抜き操作によって必要な範囲を切り出します。また、フィルタ機能を利用して、表示するフィーチャを限定するという手法もあります。

---   ---   ---   ---   ---   ---   ---   ---

2. フィーチャ選択

フィーチャを選択する方法も2通りあります。

1. マウス操作による手動選択
2. 検索機能を用いた選択

マウス操作による操作は、ビューに表示された地図をドラッグやクリック等で選択していく方法です。作業内容が直感的で分かりやすいですね。選択する数が少ない場合はこの方法が楽ですが、数が多くなると大変になり、選択漏れ等のミスが生じる恐れが出てきます。

検索機能ついて、GISには属性検索空間検索という2つの検索手法がありますが、ここでは属性検索のみを扱います。属性検索は、その名の通り属性テーブルに含まれる情報を用いて検索をかけ、当てはまるものを選択する方法です。属性テーブルが整備されていることが前提となりますが、検索条件に対して忠実に結果が返ってくるのでミスを防止するためにも使いこなしたい方法です。

---   ---   ---   ---   ---   ---   ---   ---

3. 手動選択

それでは、マウス操作による手動選択から実際にやってみましょう。
フィーチャを手動選択する場合は、マウスカーソルを「地物の選択」に変更します。「地物選択」ボタンの ▼ をクリックすると、範囲選択用のカーソルも表示されますが、とりあえず、オーソドックスな「地物の選択」で操作します。

画像2

選択したいフィーチャをクリックすると、そのフィーチャが黄色で塗りつぶされます(※3)。

選択されたフィーチャをもう一度クリックするか、何もない場所でクリックすると選択が解除されます。

複数フィーチャを追加していく場合は[ Shift ]を押しながらクリックします。また、ドラッグで範囲選択もできます。ビュー画面上をポチポチとクリックし、下図のように選択できればOKです。

画像3

※3 デフォルト設定では選択フィーチャを表す色は黄色になっていますが、[ Ctrl ] + [ Shift ] + [ P ] でプロジェクトプロパティを開き、「一般情報」ページにある「選択色」から色を変更することができます。

---   ---   ---   ---   ---   ---   ---   ---

4. 属性選択

続いて、属性検索による選択方法を紹介します。まず、レイヤを右クリックし、「属性テーブルを開く」を選択して属性テーブルを開きます。
属性テーブルのメニューにある [ 式を使った地物 ] ボタンをクリックすると、属性検索のためのウィンドウが表示されます。

画像4

検索ウィンドウは3つのブロックに分かれており、左のブロックに検索の条件式を入力します。検索条件は手動でも入力できますが、すぐ上にある演算子ボタンや、真ん中のブロックから関数一覧をクリック/ダブルクリックしても入力できます。

画像5

今回は属性テーブルの情報に対して検索を掛けたいので、真ん中のブロックから「フィールドと属性」の三角マークをクリックし、中身を展開します。ここで表示されるものは、今開いているGISデータが持つフィールド情報です。したがって、データが異なると表示内容も異なることに注意してください。

画像6

国土数値情報の行政区域(東京都)では、「N03_004」フィールドに市区町村名が入っています。フィールドの中身は、フィールド名をクリックして右ブロックの [ 全てのユニーク ] [ 10個のサンプル ] をクリックすると確認できます。さらに、表示された個々のフィールド値をダブルクリックすると、左の条件式ブロックに入力されます。

画像7

試しに、 "N03_004" = '千代田区' と入力し、ウィンドウ右下の [ 地物の選択 ] ボタンをクリックしてみましょう。検索が実行され、地図上で千代田区のみが選択状態となって黄色で示されます。

画像8

今度は、先ほど入力した式に条件を追加し、
"N03_004" = '千代田区' OR "N03_004" = '中央区'
として検索を実行してみます。すると、マップ画面では千代田区と中央区が選択状態となります。

ORは条件式をつなげる演算子で、「または」を意味します。これにより「N03_004」が千代田区または「N03_004」が中央区であることが検索条件となり、当てはまるフィーチャが選択されました。

注意点として、ORでつなぐ条件式は、それぞれが単体で条件式として成立していなければなりません。すなわち、"N03_004" = '千代田区' OR '中央区' という書き方はできません。ORの左は「"N03_004" = '千代田区'」という条件式が成立していますが、ORの右は「'中央区'」だけであり、条件式になっていないからです。

画像9

さて、上の入力例を倣えば、23区を選択するには、"N03_004" = '千代田区' OR "N03_004" = '中央区' OR "N03_004" = '港区' OR ・・・ と23区分をつなげて書けば、選択できそうですね。そして、実際に入力したものが下図になります。非常に長い条件式となっていますね。

これでも23区を選択できますが、ちょっと入力が面倒臭いですね。検索式が長くなるとミスをしやすくなるだけでなくそのミスを見つけることも大変になるため、もっと簡単な条件式で求める検索結果が得られるように工夫したいところです。

画像10

ここで、東京23区には全て「区」という文字が入り、その他の行政名には「区」が含まれないことに注目して、次のような条件式を入力します(※4)。

"N03_004"  LIKE  '%区'

「LIKE」は、部分一致を条件とする演算子です。ウィンドウ真ん中のブロックの「演算子」の中にあります。そして、「%」はいわゆるワイルドカードと呼ばれる、0文字以上の何らかの文字列を意味する記号です(※5)。
つまり、この条件式は、○区や○○区のように、属性値の最後が区となるものを選択するように指定しています。この条件式で属性検索を実行すると、区名を1つずつ列挙したときと同様に23区が選択されたことを確認できます。

※4 全国行政界データを使用している場合は、入力する条件式が若干異なります。「区」の付く自治体を選択するだけでは東京都以外の区も選択されてしまうため、対象を東京都に限定した上で「区」を抽出します。すなわち条件式は「"N03_001" = '東京都' AND "N03_004" LIKE '%区'」となります。
※5 「%」はaをbで割ったときの余りを求める剰余算の算術演算子としても使われます。「%」がワイルドカードとなるのは、テキスト形式であることを意味する''で囲まれた中で用いられた時です。また、ワイルドカードには「%」の他にアンダーバー「 _ 」もあります。「%」0文字以上の文字列でしたが、「 _ 」は1文字だけという違いがあります。なお、QGISでは「 _ 」に入るのは半角英数字のみのようです。

画像11


IV. 選択範囲のエクスポート

東京23区のフィーチャを選択できたら、新規ファイルとしてエクスポートします。レイヤを右クリックし、「エクスポート」→「選択地物の保存」を選択します(※5)。形式や保存先、ファイル名等を指定し [ OK ] をクリックすれば、東京23区のみのGISデータが得られます。

※5 「エクスポート」→「地物の保存」としても次に開くウィンドウは同じで、「選択地物のみ保存する」にチェックを入れれば、選択範囲のみを新規ファイルとしてエクスポートできます。

画像12

画像13

東京23区を抽出したシェープファイルを表示。島や埋め立て地も1つのフィーチャとして独立しており、ラベルを表示させると各フィーチャに対してラベルが現れてしまうため、江東区や大田区のラベルがたくさん表示されてしまっています。修正するには、ディゾルブ機能で同じ属性値を持つフィーチャをまとめてしまったり、出力後にIllustrator等で手を加えたりして対応します。

V. おわりに

下の図は、地図で見る統計のシェープファイルをもとに、東京23区を抽出したものです。
国土数値情報の行政区域データは自治体単位のデータだったので、マウス操作による選択でも十分に対応できます。一方、地図で見る統計のシェープファイルは町丁・字単位のデータであり、これをマウス操作のみで対象の自治体を抽出するのは非常に大変です。
このようなフィーチャ数が大量にあるデータを扱う場合は、属性検索無しには作業を進めることはできません。

画像14

今回は使用しませんでしたが、「選択セットの反転」という選択フィーチャと非選択フィーチャを反転させる機能もあります。選択したいフィーチャの抽出条件が難しい場合は、不要なフィーチャを選択してから選択セットを反転させるという応用方法もあります。

画像15

欲しい情報を素早く抽出するには、「フィーチャの選択」をマスターすることが重要です。選択技術には論理の組み立てが求められますが、パズルだと思って取り組むと案外楽しいものです。また、抽出までの筋道は一通りではなく、スマートな方法もあれば泥臭い方法もあります。いろいろな選択方法を試していく中で、検索手順のレパートリーを増やしていくことが重要になります。

記事の内容でもそれ以外でも、地理やGISに関して疑問な点があれば、可能な限りお答えしたいと思います。