医療機関オープンデータでジオコーディングと空間分析

医療機関オープンデータでジオコーディングと空間分析 | Tableau-id Press -タブロイド-
prepper

こんにちは。藤です。

今回は国土数値情報のオープンデータに対するジオコーディング API と空間分析の活用事例をご紹介します。

きっかけ

先月(2022年4月)初旬に国土数値情報のオープンデータである医療機関データを加工して Prepper Open Data Bank での取り扱いを開始しました。

データ加工の過程において、ローデータ側の誤りと思われるデータを多数検出したため、国土数値情報の事務局に報告をしたのですが、そこでジオコーディング API と空間分析でデータの加工や異常値検出を行いました。

ジオコーディング API

ジオコーディング API には複数のサービスプロバイダが存在します。代表格である Google Maps などは利用規約での制限が多く、データ分析用途では使いづらいため、truestar では精度が高く、利活用の自由度が高いジオテクノロジーズ社のジオコーディング API を従来から愛用しています。

この API では住所データの正規化と緯度経度の取得が可能です。一般的なジオコーディング用途であればそれで十分ですね。

そこまでならば約一年前に Alteryx での活用方法を詳しくブログ化していますのでご興味のある方は下の投稿もご参照下さい。

今回はその先の話です。

国土数値情報 医療機関データ

令和2(2020)年度版がオープンデータとして国土交通省の国土数値情報から公開されています。

全国版を一括ダウンロード可能です。全国で18万1316施設あります。

実はこれ、なかなかプレップ甲斐のあるデータです。

元データはこんな感じのシェープファイルです。

都道府県や市区町村のカラムもありません。所在地(P04_003)またはPointデータから識別するか、都道府県ごとにファイルをダウンロードして都道府県を紐づけることもできますが47都道府県をポチポチして加工するのは非常に手間ですし、その形式だと市区町村名は紐づけられません。

また、この所在地データは正規化されておらず、全角半角が混在するのはもちろん、市区町村名もなく大字・字から始まるデータも多数あります。

例:レコード『32,910』:P04_003『鎌塚520-1』

ちなみに『鎌塚』は『埼玉県鴻巣市鎌塚』です。地元民でないとこの所在地から都道府県や市区町村を特定するのはなかなか厳しいですね…

Prepper Open Data Bank 医療機関データ

truestar が無料公開している Prepper Open Data Bank の医療機関データには、国土数値情報のローデータに対して、都道府県名と市区町村名が付与されています。

元データは全国で18万件以上ありますが、これによって必要な都道府県や市区町村に絞ったり、市区町村ごとに集計して分析に活用することが容易に可能になります。

加工方法を簡易に説明をすると、同じく Prepper Open Data Bank の町丁目ポリゴンと元データのポイントの空間マッチングを行い、元データに紐づいた都道府県名や市区町村名と、元データの所在地データを照合し、一致するものを適用しています。

Alteryx ならば『空間マッチ』ツールで簡単に紐づけられます。

なお、現実には照合できないデータが一部残ったので(350施設)、それらは手作業で調べ、全レコードに対して以下のように都道府県や市区町村が紐づいています。

この形ならば分析でも使いやすいですね。

もちろん元データに含まれる各種コードはマスタと紐づけてありますので、マスタテーブルと SQL で Join したり Excel で vlookup するプレップ作業を完全に省略できます。ご興味あれば是非ご活用ください。

ポイントデータの異常値

これは同じデータの別の課題です。

このローデータには緯度経度情報を持つポイントデータが含まれていますが、その中に怪しいレコードがいくつか存在していることをデータ加工の過程で発見しました。

以下は一例です。

住所は平塚市ですが、ポイントが鎌倉市に落ちています。

一方、同ビルの部屋番号違いの施設がたまたま並んでいますのでそのデータを見ると正しくプロットされていました。

やはり前者のデータが誤りのようです。

施設が大きい場合、点をどこに打つかによって場所はズレますので数十メートルは誤差範囲と言えますが、住所から推定される場所から数キロの単位でズレてくるとなると異常値の可能性が高いですね。

異常値チェック

では空間分析で異常値チェックをします。

今回は元データの所在地(P04_003)をジオコーディング API に通すことで、下の画像のように緯度経度などが取得可能です。

なお、API で取得可能なパラメータは他にも多数ありますが、詳しくは前述のブログを参照していただければと思います。

API で取得した緯度経度をもとにポイントデータを作成し、元データのポイントデータの距離を測定して異常値チェックをします。

元データの所在地の記載が粗いものも多く、最も細かい粒度となる『号レベル』でマッチしないものも出てきます。『番地(番)』レベルや『町域レベル』でのマッチングの場合、その代表点の緯度経度が付与されるため、本来あるべきポイントとはズレる可能性が高く距離も広がります。

API 出力の緯度経度から『ポイント作成』ツールでポイントを作ります。

作成したポイントデータと、元データのポイントデータを指定し、Alteryx の『距離』ツールで簡単に距離を測定できます。

先ほど異常値として取り上げたレコードは、所在地から推定される緯度経度と、元データが保持するポイントデータとの間に23kmもの距離があり、明らかな異常値であることが分かります。

ちなみに、初期の『空間マッチ』で正しく照合できないデータを中心に検証を進めたところ、27件のレコードで大きな差異(5km以上)が見つかりました。

これらは異常値の可能性が高く、国土数値情報の事務局にも報告済みです。事務局さんの対応はいつも非常に迅速なのですが、個々のデータは国交省及びその先の各自治体管轄なので、どのタイミングで修正されるかは不明ですが、次回の更新で是非改善して欲しいですね。

まとめ

今回、国土数値情報の医療機関データをもとに、ジオコーディング API や空間分析の利活用の事例をご紹介しました。

オープンデータは様々な機関から公開・共有がなされるようになりましたが、今回取り上げたような異常値を含め、整備不十分なデータも多く、分析に取り掛かるにはデータの取得、加工、クレンジング、集計などの下準備(データプレップ)が欠かせません。

truestar の Prepper POI (プレッパーポイ)は、住所データに紐づく一連のデータプレップ処理を肩代わりするサービスです。

今回取り上げたような空間分析を含め、複数のデータプロバイダーと連携しており、APIからのデータの取得から、ユーザー側のデータとの結合まで幅広くプレップ処理に対応しています。

年に数回しかない作業のために、APIの仕様書を読み込んだり、空間分析を行ったりする必要はもうありません。これらの作業は、いつもやっている truestar にとっては簡単ですが、そうでない分析ユーザーにとっては非常の高コストの作業です。

頑張れば分析者自身で十分できる作業領域ではあります。しかし…

時間をかけるべきはデータプレップですか?

データ分析者はもっと事業に近い領域でもやることが山積みだと予想されます。

データプレップはその道の職人である truestar にお任せするという選択肢はいかがでしょうか?

今回取り上げたジオコーディングは『Prepper POI ジオコーディング』でサービス提供しています。ジオテクノロジーズ社のAPIを活用しますが、その仕様を読み解いて API を叩く必要も、取得した JSON を分析用に分解する必要もありません。全てtruestarが行います。

各種空間分析に関しても『Prepper POI サブスクリプション』で月額定額対応可能です。

ご興味があれば是非下からお問い合わせ下さい!

それではまた!

補足

Prepper Open Data Bank の医療機関データに関する補足です。

元データの所在地が間違っているのかポイントが間違っているのかの判断は弊社側では特定できないため、Prepper Open Data Bank のデータ上も、所在地やポイントの修正は行っていません。

所在地から推定される都道府県や市区町村は正しく紐づいていますし、上述の大きな異常値も全体数の0.02%弱ですので、個々のレコードに厳密な精度を求めるような特殊な分析を行わない限り、分析結果に対して大勢に影響はないと想定されます。

データの精度が厳密に正しくないと使い物にならない、といった意見もしばしば見かけますが、何のためにどのような分析を行うかによってデータに求めるべき精度は変わってきます。

事業活動では常に意思決定が求められます。その際、厳密に正しいデータがないからデータ分析はできないと諦めて経験と勘と度胸で意思決定を行うのか、多少精度が粗くても手に入るデータをもとに分析を行い、判断材料を増やして意思決定の精度を高めるのか、どちらが良いかは明らかです。

Prepper Open Data Bank は無料で使える加工済みオープンデータですので、是非ご遠慮なくご活用ください。