2021年6月1日火曜日

都道府県ごとの人口をヒートマップで表示する

Oracle APEX 21.1の新機能であるマップ・リージョンを使って、都道府県の県庁所在地とそれぞれの都道府県の人口をヒートマップとして表示させてみます。

都道府県の県庁所在地の座標データはアマノ技研さんが公開しているデータを使用しています。

必要事項を入力し、ダウンロードをします。ダウンロードされたasti-datr0304po.zipというファイルに含まれるr0304puboffice_utf8.csvをデータベースに取り込みます。

では、マップを表示するまでの作業ログを記載します。都道府県ごとの人口の情報は、以前の記事で作成した表EGOV_POPULATIONを参照するため、そちらの作業を先に実施する必要があります。

データをロードするための表を作成します。SQLワークショップユーティリティよりクイックSQLを実行します。以下のモデルより表を作成します。

# prefix: amano
# semantics: default
municipality_location
jiscode num
name vc40
namekana vc80
building vc80
zipcode vc8
address vc160
tel vc20
source vc40
lat num
lon num
note vc80

モデルの入力を行い、SQLの生成SQLスクリプトを保存レビューおよび実行を順次実施します。

CREATE文をレビューし、実行をクリックします。確認画面が表示されるので、そこで即時実行をクリックします。

表が作成されたら、アプリケーションの作成を開始します。こちらも確認画面が表示されるので、アプリケーションの作成を再度クリックします。

アプリケーションの名前都道府県人口とし、アプリケーションの作成を行います。

アプリケーションが作成されたら、地方公共団体の位置データを読み込むために、データ・ロード定義を作成します。共有コンポーネントデータ・ロード定義を開きます。


データ・ロード定義の一覧画面より、作成を実行します。


データ・ロードの作成として最初からを選択し、へ進みます。


名前としてMUNICIPALITY_LOCATIONを指定し、ターゲット・タイプ表名として先程作成したAMANO_MUNICIPALITY_LOCATIONを選択します。へ進みます。


サンプル・ファイルとしてアマノ技研さんよりダウンロードしたファイルr0304puboffice_utf8.csvを指定します。へ進みます。


表AMANO_MUNICIPALITY_LOCATIONの列名はCSVのヘッダーと一致するように作成しているため、マップ先はすべて自動的に割り当たります。ファイル・エンコーディングとしてUnicode(UTF-8)ソース列のJISCODE(Number)主キーチェックを入れます。ページの作成および追加を実行します。


ページの名前データのロードとします。へ進みます。


ナビゲーションのプリファレンスとして、新規ナビゲーション・メニュー・エントリの作成を選びます。に進みます。


デフォルトで指定される値は変更不要なので、そのまま作成を実行します。


作成されたページを実行して、データのロードを行います。


ファイルの選択をクリックして、r0304puboffice_utf8.csvを選択します。

プレビューを確認し、データのロードをクリックします。


データ・ロード終了:1963行が処理されました。と表示され、データのロードが完了します。


ホーム・ページにマップ・リージョンを作成します。ページ・デザイナでページ番号のホーム・ページを開きます。ページ・ナビゲーションのリージョンを削除します。


新規にリージョンの作成を行い、識別タイトル都道府県人口とします。タイプマップを選択し、ソース位置ローカル・データベースタイプSQL問合せとします。

SQL問合せには以下を記述します。

select
l.name, l.address, l.lat, l.lon,
p.total
from egov_population p join amano_municipality_location l
on p.prefecture_name = l.name
where p.city_name is null and p.gender = 'T'


新規と表示されているレイヤーを選択し、識別名前人口レイヤー・タイプヒート・マップを選択します。ソース位置リージョン・ソースを選択します。列のマッピングとして、ジオメトリ列のデータ型経度/緯度経度列LON緯度列LATを選択します。外観値列TOTALを選択します。


新規にレイヤーの作成を行い、識別の名前を都道府県とし、レイヤー・タイプにポイントを選択します。ソース位置リージョン・ソースです。列のマッピングとして、ジオメトリ列のデータ型経度/緯度経度列LON緯度列LATを選択します。


加えて、ツールチップ拡張フォーマットONに変更し、HTML式に以下を記載します。

&NAME.
<br/>
住所: &ADDRESS.
<br/>
人口: &TOTAL.


以上でアプリケーションの完成です。アプリケーションを実行すると、各都道府県の県庁所在地とその場所を中心とした人口のヒートマップが表示されます。


今回作成したアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/pref-pop-heat-map.sql

Oracle APEXのアプリケーション作成の参考になれば幸いです。