QGISで日本地図上にデータをマッピングしてみる

とある事情から、日本地図上にデータをマッピングしたいと考えた。 pkgsrcの中を探してみると、QGIS (pkgsrc/geography/qgis)と言うのが、 GISソフトウェアとして手軽なようだ。

だが、ソフトウェアは用意できても、日本地図データがどこで入手できるか分からなかったり、 QGISの細かい操作が分からなかったりしたので、 将来繰り返す時のために書いておく。

日本地図のデータを入手する

そもそもQGISで日本地図を描画するためには、どのようなデータが必要なのかと言う話から疑問は始まった。 結果としては、ESRI社の定義するシェープファイル形式のデータを入手すれば、QGIS上に地図を表示できるらしい。 Googleで検索すると、いろいろこだわっている人はいるようだが、私の用途としては、 国土数値情報ダウンロードサービス の「GML(JPGIS2.1)シェープファイル」から、「」2.政策区域」の「行政区域」という データを選択し、「全国」を選択し、平成28年分(ファイル名: N03-160101_GML.zip)を ダウンロードすることで、入手できるシェープファイルで良かった。 ライセンスとしては、「国土数値情報」が出典であり、加工した者の名前を表示するのであれば、申請等は必要なく、商用利用も含めできるとのことであった。 内容は以下のようである。


$ unzip -l N03-160101_GML.zip
Archive:  N03-160101_GML.zip
  Length     Date   Time    Name
 --------    ----   ----    ----
    16228  02-04-16 11:18   KS-META-N03-16_160101.xml
  8806010  01-12-17 09:22   N03-16_160101.dbf
      221  03-24-16 19:41   N03-16_160101.prj
 231339400  01-12-17 09:22   N03-16_160101.shp
   927028  01-12-17 09:22   N03-16_160101.shx
 520581808  01-12-17 11:13   N03-16_160101.xml
 --------                   -------
 761670695                   6 files
シェープファイルというのは、これらのファイルの集合体を言うようで、.shpファイルだけでは使えない。

これを、~/qgis/N03-2016ディレクトリーに展開しておく。

QGIS 2.18.3のインストール

以下のようにして、インストールしておく。今気付いたが、ここでインストールされる QGIS 2.18.3で「QGISについて」を選択すると、segfaultする。


$ cd /usr/pkgsrc/geography/qgis
$ make install

QGISで日本地図を表示させる

メニューまたアイコンより、「ベクタレイヤの追加」を選択し、 「ソースタイプ」は「ファイル」とし、エンコーディングは「Shift_JIS」にすると、 「ソース」として、N03-16_160101.shxを指定すると、 市区町村の境界線を持った、黒枠緑地の日本地図が描画される。 ここで、エンコーディングをShift_JIS (おそらくSJISでも良いと思われる)にしないと、 属性値が文字化けしてしまい、困ることになる。

日本地図上に緯度経度の情報を配置する

例として、県庁所在地の緯度経度の情報を配置してみる。 とりあえず、http://www.benricho.org/chimei/latlng_data.htmlでダウンロードできる 都道府県庁所在地緯度経度データのExcelファイルを加工して表示してみる。 加工後のファイルは、以下のようなイメージのCSV(カンマ区切りファイル)ファイルである。文字コードは、UTF-8にしておいた。改行コードは何でも良いだろうが、今回はLFである。


都道府県庁所在地,緯度,経度
北海道,43.06417,141.34694
(snip)

これを、「デリミティッドテキストレイヤの追加」のメニューまたはアイコンより 読み込めば良い。 「ファイル名」を指定した上で、ファイル形式として、 「CSV (コンマで区切られた値)」を選択し、「ジオメトリ定義」にて 「Xフィールド」で「緯度」を、Yフィールドで「緯度」を指定する。 「OK」をクリックした後に「空間参照システム」を選択するが、 標準で提案されている「EPSG:4019」にしておいた。

色があまり気持ち良くはないが、結果は下図のようになる。

都道府県単位で塗り分ける

もう一つやっておきたかったのは、都道府県毎の塗り分けである。 ここでは、 https://www.env.go.jp/recycle/waste/sanpai/statistics.phpで公開されている 都道府県・政令市別産業廃棄物処理業の許可件数を、都道府県毎に集計し直したデータ のうち、「特別管理産業廃棄物処理業」のうち、 「中間処理のみ」と「中間処理・最終処分」を合計した値で色を変化させて塗り分け をしてみる。 使ったデータは以下のようである。


都道府県,中間処理あり
愛知県,49
愛媛県,15
茨城県,16
岡山県,18
沖縄県,7
岩手県,11
岐阜県,12
宮崎県,9
宮城県,18
熊本県,6
群馬県,15
広島県,32
香川県,9
高知県,3
佐賀県,4
埼玉県,32
三重県,12
山形県,10
山口県,10
山梨県,8
滋賀県,4
鹿児島県,8
秋田県,13
新潟県,23
青森県,24
静岡県,23
石川県,5
千葉県,20
大阪府,43
大分県,11
長崎県,3
長崎市,3
長野県,12
鳥取県,3
島根県,3
東京都,18
徳島県,3
栃木県,6
奈良県,1
富山県,8
兵庫県,33
北海道,30
和歌山県,7
神奈川県,35
福井県,8
福岡県,36
福島県,21
京都府,5

これをデリミティッドテキストデータとして読み込む。 この際に、「ジオメトリ定義」として、「ジオメトリなし(属性のみのテーブル)」を 選択する。

その上で、既に読み込んである国土数値情報のレイヤーに対して、 このデータを結合させる。 国土数値情報のレイヤーの「レイヤプロパティ」より、「結合」を選択し、 「結合フィールド」を「都道府県」に、 「ターゲットフィールド」を「N03_001」にする。 「属性テーブルを開く」より国土数値情報のレイヤーを見てみれば分かるが、 「N03_001」には都道府県名が格納されている。 これと、CSVファイルの都道府県名が一致すれば、CSVファイルのデータが 紐付けされるのである。 結合後の属性テーブルの状態は下図のようになる。

次に、これを都道府県の色の塗り分けの条件にしていく。 レイヤプロパティより、スタイルで「段階に分けられた」を選択するのだが、 これについては、下図のスクリーンショットを見た方が分かりやすいであろう。 注意点としては、「分類数」の部分であるが、モードを等間隔にして「分類」ボタン を押下すれば、自動的に作成されるので活用すべきと言う点くらいであろう。

最終的な結果は、下図のようである。

plgarc/wip/llama.cppでpkgsrcのBLASサポートを探る

この記事は、 NetBSD Advent Calendar 2024 の13日目の記事です。 llama.cppを使ってみる 以前に、 NetBSD/amd64でllama.cppを使ってみる という記事で llama.cpp を使ってみていました。 あれか...