OpenJUMPのグラフ表示機能

前回の記事ではOpenJUMP(以降、OJと略します)の最新版で追加された機能を紹介しましたが、QGISと比較したところ機能的にOJの惜負という結果でした。
今回は、OJにあってQGISにはない”グラフ表示機能”を紹介します。
”競ってどうする”という声も聞こえてきそうですが、よかったらお付き合いください。

OJのグラフ表示機能とは

正式には”Jump Chart”と呼ばれているOJのグラフ表示機能は、図形の数値属性値を円グラフや棒グラフにして地図上に表示する機能です。もともとプラグインとして開発されていたものがOJ本体(Coreモジュール)に組み込まれた経緯があるようです。
OJの公式ホームページにグラフ表示機能の説明はほとんどなく、下記URLにて短く触れられている程度です。
http://ojwiki.soldin.de/index.php?title=Plugins_for_OpenJUMP#Charts_.2F_Plots

先行きが少し心配になってきましたが、検証作業を進めましょう。

今回の検証

今回は、以下の手順で札幌市とその周辺市区町村(札幌圏)の人口に関する情報を地図にグラフ表示します。
1.国土数値情報の行政区域データ(シェープファイル)をダウンロードして読み込み
2.Dissolve機能にて同じ属性値の図形を結合
3.国勢調査の市区町村別人口統計データをOJ読み込み用に加工
4.行政区域データと人口データを結合
5.札幌圏の図形を抽出
6.棒グラフの表示
7.円グラフの表示
ちょっと長いですが、早速作業を進めましょう。

1.国土数値情報の行政区域データをダウンロードして読み込み

グラフ表示用の地図として行政区域データ(市区町村界データ)をダウンロードします。
ESRIジャパンの全国市区町村界データを利用したかったのですが、使用規定を確認すると”ArcGISシリーズのみ使用可能”と記載されていたためこのデータの利用は見送りました。

下記URLから国土数値情報の行政区域データ(シェープファイル)をダウンロードします。
http://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-N03-v2_3.html
地域に北海道を指定し最新版のデータをダウンロードます。

行政区域データの最新版(H31)をダウンロード

ダウンロードしたファイルには、GML、GeoJSON、シェープの3種類のデータが同梱されています。
ファイルを解凍しシェープファイル(N03-19_01_190101.shp)をOJに読み込みます。

2.Dissolve機能にて同じ属性値の図形を結合

国土数値情報の行政区域データ(以降、行政区域データ)は、1つの市区町村が複数の図形で構成されています。
この原因は、測量成果が防波堤などを正確に地図表現しているものの、マルチポリゴン化されていないためと考えられます。

14のポリゴンから構成されている網走市の例

以降に示す統計データとの結合のために、1市区町村を1つの図形にしておきたいので、Dissolve機能を使って図形と属性を集約します。
OJのメニューから[ツール]、[分析]、[Dissolve]を選択し、Dissolveダイアログを表示します。

Dissolve機能を選択

Dissolveダイアログでは、結合後に出力する属性を指定します。今回はすべての項目を指定します。

Dissolve後に出力する属性を指定

Dissolveが成功すると、図形数が9,587から194に減少します。
問題の網走も1つのフィーチャ(属性を持つ図形)にまとめられています。

1つのフィーチャとなった網走市の行政界面

3.国勢調査の市区町村別人口データをOJ読み込み用に加工

ダウンロードした行政界データの属性には市区町村名やコードが設定されているだけですので、人口統計情報を付加する必要があります。
政府の統計情報サイトe-Statに住民基本台帳ベースの人口統計情報がエクセルファイルとして公開されていますので、ダウンロードします。
https://www.e-stat.go.jp/stat-search/files?page=1&layout=datalist&toukei=00200521&tstat=000001049104&cycle=0&tclass1=000001049105

人口統計情報のエクセルファイルをダウンロード

ダウンロードしたエクセルファイルは以下のようになっています。

ダウンロードしたエクセルファイル

このファイルをOJに読み込ませるために、以下の加工を行います。
1.グラフ表示に必要な項目の選択
2.フィールド名(カラム名)の付与(最大10バイト)
3.タブ区切りテキストファイル化
4.数値区切りのカンマ字の除去
5.札幌市の区に札幌圏を示すフラグを付与(カラム名”sapporo”)

完成したファイル(人口統計.tsv)は以下のようになります。(加工作業の説明は省きますが、先頭行がカラム名で191行(北海道のみ)となりました。)

code sapporo name T22 S22-27 T T15d T15-64 T64- M M15d M15-64 M64- F F15d F15-64 F64- J A
01100 札幌 札幌市 1913545 38811 1952356 221013 1235516 483534 910614 112743 590111 201313 1041742 108270 645405 282221 1937785 8820
01101 札幌 札幌市 中央区 220189 17438 237627 23997 160339 50536 107756 12187 74227 19750 129871 11810 86112 30786 235280 1891
01102 札幌 札幌市 北区 278781 6540 285321 32916 178950 68960 134534 16722 86767 28866 150787 16194 92183 40094 281851 2023
01103 札幌 札幌市 東区 255873 6039 261912 30716 168302 61448 124649 15594 82491 25708 137263 15122 85811 35740 259619 1121

カラムの構成は、以下の通りです。

#カラム名説明データ型設定例
1code住所コード、結合キー文字列01101
2sapporo札幌圏を示すフラグ文字列札幌
3name市区町村名文字列札幌市 中央区
4T22H22総人口数値220189
5S22-27H22とH27の総人口差数値17438
6T総人口数値237627
7T15d総人口(15歳未満)数値23997
8T15-64総人口(15-64歳)数値160339
9T64-総人口(64歳以上)数値50536
10M男人口数値107756
11M15d男人口(15歳未満)数値12187
12M15-64男人口(15-64歳)数値74227
13M64-男人口(64歳以上)数値19750
14F女人口数値129871
15F15d女人口(15歳未満)数値11810
16F15-64女人口(15-64歳)数値86112
17F64-女人口(64歳以上)数値30786
18J日本人人口数値235280
19A外国人人口数値1891

4.行政区域データと人口統計データを結合

では、行政区域データと人口統計データを結合しましょう。
OJのメニューから[ツール]、[編集 属性]、[テキストファイルとの結合…]を選択します。

テキストファイルとの結合を選択

表示されるダイアログからDissolveしたレイヤを指定します。

Dissolveしたレイヤを指定

次に、結合用のフィールドを指定します。行政区域レイヤは”N3_007”、人口統計データは”code”を指定します。

結合用のフィールドを指定

行政区域レイヤの属性データを表示して確認すると、うまく結合できているようです。

行政区域データの属性に追加された

ここで念のため属性結合した状態をシェープファイルに保存しておきましょう。
行政区域レイヤを右クリックして”選択データセットの上書き保存”を指定すると、現在の状態がシェープファイルに上書き保存されます。

データセットを上書き保存

5.札幌圏の図形を抽出

ここまでくればもう少しです。
属性データから札幌周辺(札幌圏)の市区町村を抽出しましょう。QGISの”属性抽出”と同じです。
メニューから[ツール]、[問い合わせ]、[属性検索…]を指定します。

属性検索を選択

表示される”属性検索”ダイアログにて以下を指定して”OK”ボタンを押下します。
・元レイヤ:Dissolve済みの行政区画レイヤ
・属性:sapporo
・Condition:=
・値:”札幌”

属性検索ダイアログにて抽出条件を指定

抽出に成功すると、以下のように属性値から札幌圏が抽出されます。

抽出された札幌圏の地図

6.棒グラフの表示

ここまでで準備完了しましたので、OJのグラフ表示機能を起動しましょう。
以下のどちらかの方法で起動します。
・メニューの[プラグイン]、[Jump Chart]を選択
・ツールバーの”Jump Chart”ボタンをクリック(下図の赤枠)

グラフ表示機能の選択

グラフ表示機能を選択すると、下記の”Chart Dialog”が表示されますので、札幌圏の男女別生産年齢人口を棒グラフで表示してみましょう。
”Chart Dialog”ダイアログを以下のように指定し”OK”ボタンを押下します。
・男性の生産年齢人口(M15-64)をチェック
・女性の生産年齢人口(M15-64)をチェック
・Chart Type:”Bar”を選択
・Size:”Variable”に指定(Uniformだと縦が均一サイズになります)

棒グラフの表示条件を指定

結果、以下のような地図が表示されます。(札幌市内の区は、別の設定でピンク色表示しています)

男女別生産人口の棒グラフ表示

上記地図からは以下のことがいえそうです。
・札幌市への人口集中が激しい
・生産年齢人口は全般的に女性が若干多い
・札幌市の分区していない区(中央区、北区、東区)の人口が多い

7.円グラフの表示

次に、円グラフを表示してみましょう。
札幌圏の15歳未満と64歳以上の人口を円グラフで表示してみましょう。
”Chart Dialog”ダイアログから以下のように指定し”OK”ボタンを押下します。
・15歳未満の総人口(T15d)をチェック
・64歳以上の総人口(T64-)をチェック
・Chart Type:”Pie-North”を選択(北がゼロの円グラフになります)
・Size:”Variable”に指定(円の大きさでデータ量を表現します)

円グラフの表示条件を指定

結果、以下のような地図が表示されます。円の大きさで人口の数を表現しています。

上記地図からは以下のことがいえそうです。
・札幌市の人口割合は南区を除き似た傾向(南区は相対的に交通の便が悪いことが影響?)
・千歳市は若年人口の割合が多い(札幌のベッドタウン化?)
・小樽市は15歳未満の人口割合が少ない(人口流入の鈍化と高齢化が進行?)

まとめ

今回は、OJのグラフ表示機能の紹介を通してOJの以下の機能を確認しました。

  • Dissolve(属性による融合)機能
  • 属性によるフィーチャ抽出
  • 属性結合
  • 棒グラフと円グラフの表示

今回は想事前のデータ加工作業が多くなりましたが、OJのいろいろな機能が使えて勉強になりました。
また、各機能をQGISと比較すると、少し見劣りすることも確認できたと思います。
ただ、グラフ表示はエンドユーザーには訴求力がありそうな機能ですので、みなさんも機会があれば使ってみてください。

前の記事

OpenJUMP1.15

次の記事

Pythonでログファイル集計