技術検証レポート

GeoDjango+PostGISによる地理情報の可視化

技術検証の成果

技術検証の成果は こちら

技術検証の目的

ハレソフトの山田です。 GeoDjangoとPostGISを用いて地理情報(オープンデータ)の可視化について技術検証を行いましたので、その成果を公開いたします。 2010年代にスマートフォンの普及が急速に進み、GoogleMapやOpenStreetMapなどの地図情報サービスが我々の日常に欠かせない存在となりました。 社会全体としても、2018年7月に内閣官房情報通信技術(IT)総合戦略室が発表した「IT新戦略の概要2」において、「データ利活用のルール整備」と「オープンデータの促進」が重要施策として位置づけられ、国や地方自治体が収集した地理情報の公開が進んでいます。 政府が提供するオンラインの災害予測地図や自治体が公開する商業施設MAP、福祉・介護施設MAPなど、多岐にわたるサービスで地図情報が活用されています。 このような状況の中で、地理情報を含むオープンデータの活用の利便性向上に対する関心が高まっており、それに伴いWEBサービスの普及も進んでいます。 本技術検証では、これらの主要技術に関する知見を深めることを目的としています。

システムの概要

当システムは、東京都豊島区内の医療施設および福祉施設を地図上にシンプルに表示する機能を提供しています。 地図上には各施設の位置を示すピンが描画され、クリックすると施設名などの付帯情報が表示されます。 また、地図左上にあるフィルターを使用することで、表示される施設情報を細かく絞り込むことができます。

注力ポイント

地理データの扱い

このプロジェクトでは、初めて地理情報に触れる機会でした。 サービスを構築しプログラムを実装する前に、地理情報を取り扱うための基礎知識を習得する必要がありました。 例えば、地理情報を扱う際には、そのデータがどの測地系に基づいているかを意識することが重要です。 測地系は空間情報を定義するシステムであり、異なる測地系のデータは基本的にずれが生じます。 また、地理データファイルの形式(Shape Fileやgeojson)についても理解を深める必要がありました。

このシステムでは、Shape File形式で提供された地理データをバッチ処理でデータベースに登録しています。 そして、アプリケーションが地理情報を処理し、その結果をgeojson形式で利用者の端末に返却するというデータ変換が行われています。 業務システムで扱うデータとは異なり、地理データは専門的な知識が必要であり、初学者にとって最初に立ち向かうべき壁です。

Webアプリケーションの開発言語

本システムのサーバーサイドのプログラムは、完全にPythonで開発されています。 Pythonは現在のAIブームにより急速に人気を集めており、ハレソフトでも主要な言語の1つとして位置付けています。 Linuxのディストリビューションに標準でバンドルされていたり、AIやIoTの分野で広く活用されています。また、Web開発においても、Django、Flask、Bottleなどの強力なWebフレームワークが存在しています。

Pythonは特にAIやデータサイエンスの分野での利用が目立ちますが、その柔軟性と多様な利用可能性から、さまざまなサービス開発にもポテンシャルを持っています。 このプロジェクトでは、地理空間データ用の標準モジュールを備えたDjangoをWebフレームワークとして採用しました。

改良への検討ポイント

今回は、地理情報に関する技術に対して知見を得ることを目的としたため、WEBサービスとしてみるとかなりシンプルものになっています。 そのため、機能の拡充が主な改良ポイントとなります。

その1:フロントデザインのレスポンシブ対応

地図をベースとしたサービスでは、ユーザーが歩行中や公共交通機関を利用している場合が多いです。 通常、移動中にウェブサービスを利用する場合、多くのユーザーはスマートフォンからアクセスします。 そのため、PCモニターの画面サイズに限らず、様々なデバイスで快適に利用できるよう対応する必要があります。

その2:地図に付与する情報の拡充と専門化

当システムでは、地図上に描画される施設情報は、施設の名称のみが付帯情報として表示されています。 一方、Google Mapsなどの既存サービスでは、位置情報に加えて写真や利用者の口コミ、周辺施設情報などが豊富に提供されています。 単独での地図サービスとしては既存のサービスには及びませんが、特定の分野に特化した情報提供を行うことで、例えば介護・医療分野向けに専門性の高い地図サービスとして差別化する方針が考えられます。

その3:GSP情報との連携

地図アプリの主な用途として、目的地への道案内があります。 当サービスは事前に用意した情報を提供する機能に特化していますが、利用シーンを考慮すると、端末からのGPS情報を利用してリアルタイムで情報を提供する機能も重要です。

主要技術

CentOS
Apache 2.4, PostgreSQL, PostGIS
Python 3.6, Django, GeoDjango, leaflet.js
OpenStreetMap

参考サイト、データ出典