Technical Articles
HANA CloudのGeoSpatialデータをPythonを使って地図に投影する
はじめに
HANA DatabaseでGeoSpatialデータ(以後、地理空間データと記載します。)を取り扱うことができることは、このSAP Communityの様々なブログポストで紹介されています。それらの機能は、SAP HANA Cloud、さらにはHANA Cloudを内部で使用しているSAP Analytics Cloudや、SAP Data Warehouse Cloudにも受け継がれており、データの分析や可視化をする際のアドバンテージになっています。
今回、HANA Cloudに格納した地理空間データを、ローカルPC上にインストールしたPython環境上で地図上に投影させてみました。このブログポストでは、その方法を通じてHANA Cloudにおける地理空間データの取り扱い方法の一端をご紹介したいと思います。
鎌倉市のポリゴンデータをJupyterNotebookに投影
環境説明
今回は、以下の環境を使って作業を行いました。
- SAP HANA Cloud (Trial)
SAP HANA Cloud Trialは、SAP HANAを無料で試供できるサービスです。気軽にSAP HANA Cloudを触ってみることが可能です。 - Visual Studio Code
Pythonの統合開発環境として。今回はVisual Studio Code内でJupyterNotebookを使いました。 - Python 3.8
- 以下のPythonモジュールを使っています。
- hdbcli
HANAへ接続し、SQLを操作、データ取得をするためのモジュールです。 - ipyleaflet
Python上で地図、地理空間データを表示させるモジュールです。
- hdbcli
データの準備
仮に、施設の緯度、経度といったデータをすでに持っていれば、HANA Cloud上にテーブルを作成して、データを格納した後、緯度、経度の列からST_pointという地理空間のデータ型の列を追加、生成することができます。
ST‗Pointのような”点”のデータ型であれば、自身で簡単に作成することができますが、道路、河川といった”線形”のデータ型のST_LineStringや、市区町村や施設などの”空間”を表すために用いるデータ型のST_Polygonを一から作るのは容易ではありません。そのような場合、予め作成された地理空間データを使用することを検討します。
Import ESRI Shapefiles
一点注意が必要なことは、HANA Cloudで対応しているESRI Shapefileの文字エンコードには制限があるということです。
日本語のESRI Shapefileの多くはShift-JIS形式で記述されており、これらのファイルを直接HANA Cloudへインポートをしようとしても、エラーとなってしまいます。Shift-JISで作成された地理空間データを用いたい場合、別途ツールを使用してファイル内の文字コードを変換するなどの工夫が必要になります。
データ型とそのメソッドについて
メソッドを用いることで一つデータから異なる様式のデータを取り出せる
地理空間データのデータ型は階層構造をなしており、下位のデータ型(サブタイプ)は、上位のデータ型(スーパータイプ)を継承します。サブタイプはスーパータイプのメソッドを引き継いで使用できます。またサブタイプのデータ型は自動的にスーパータイプのデータ型に変換することが可能です。これらの階層構造と継承の関係性を理解しておくことも大切です。
Spatial type hierarchy
hdbcliの値の加工
一見stringの様だが、Resultrowというデータタイプで値を取得している
複数の拠点をポップアップ表示させ、特定拠点との間に線を引いた地図
終わりに
SAP HANA Cloudにおける地理空間データの取り扱いについて、簡単なデータを用いて、かいつまんでご紹介しましたが、いかがでしたでしょうか。
データの可視化というとグラフを思い浮かべがちですが、地図上にデータを描写させることで、可視化の方法を広げることができます。グラフだけでは気づかない新たなインサイトを得られたり、より分かり易い、印象的な見せ方をすることができるでしょう。
データ可視化における地理空間データの利用に興味を持っていただけると幸いです。
最後までお読みいただきありがとうございます。