2016-02-29

FME Server とウェブアプリケーション

前回の「地理院タイルデータの取得 - 西之島付近噴火活動 正射画像の例」「地理院タイル」のデータを取得するカスタムトランスフォーマー JpGsiTileFetcher の使用例を紹介しました。それはそれで役に立つ場合もあると思いますが、地理院タイルの最も有効な活用法は、やはりウェブマッピングアプリケーションのベースマップとして、オンラインで利用することでしょう。

Leaflet (ウェブマッピングアプリケーション開発用のオープンソース JavaScript ライブラリ) を使うと、地理院タイルなどのウェブマップタイルをアプリケーションのベースマップとして簡単に利用することができます。また、Leaflet では GeoJSON データに基づいてレイヤを作成するメソッドも定義されているので、ベクターデータを GeoJSON 形式に変換する FME ワークスペースを作成し、それをアプリケーション側からリクエストがあったときに FME Server で実行することによって、動的にレイヤを追加することなども容易です。

ここでは、FME Server を使用した2つの簡単なアプリケーション例を掲げます。どちらも地理院タイルをベースマップとし、地図の表示や操作は Leaflet ライブラリを使って JavaScript で実装しました。アプリケーションと FME Server の間のコミュニケーションには JavaScript Library for FME Server を使用しています。

FME 2016.0.1.0 build 16174


例 1. Hi-net 自動処理震源リストの取得と表示

防災科学技術研究所 Hi-net に関しては、「HTML文書の取得と変換」で Hi-net 自動震源処理リストページ (HTML) からデータを取得、変換するワークスペース例を掲げ、「Google Earth ネットワークリンク」ではその応用として、変換結果を KML ネットワークリンクとして FME Server から配信するためのワークスペース例を紹介しました。

これらの記事で紹介したワークスペースのデータ取得部分を再利用すれば、Hi-net 自動震源処理リストページに掲載されているデータを取得して GeoJSON 形式で出力するワークスペースも作成できます。

FME ワークスペース例: Hi-net 自動処理震源リスト (HTML) -> ポイント -> GeoJSON

















Hi-netParser (カスタムトランスフォーマー): 「HTML文書の取得と変換」のワークスペース例と同じ処理を行う。
VertexCreator: 緯度 (Lat), 経度 (Long) に基づいてポイントを作成する。
[GEOJSON] ライター: GeoJSON 形式で出力する。

このワークスペースを FME Server にアップロードして Data Streaming Service として実行できるように設定すると、アプリケーション側ではそれを任意のタイミングで実行し、その時点で Hi-net から取得したデータに基づいて作成した震央ポイントフィーチャーを GeoJSON 形式で受け取ることができます。

次の図は、ウェブブラウザからアクセスされたとき、および「最新の情報に更新」ボタンがクリックされたときにこのワークスペースを FME Server で実行し、FME Server から返された GeoJSON データに基づいて震源の深さとマグニチュードに応じたスタイルの円 (Circle) を表示するアプリケーションの例です。

2016年2月28日14:40 頃に取得したデータの表示例 (左: ズームレベル 5, 右: ズームレベル 8)
円の色は深さ (赤: 浅い -> 青: 深い)、半径はマグニチュードの大小 (2 mag に比例) を示す。
ベースマップ: 地理院タイル 白地図 (データID = blank)
※ローカルサーバーでのテスト結果をキャプチャしたものであり、インターネット上では公開していません。























例 2. メッシュポリゴンの作成・ダウンロード

次のワークスペースは、任意の矩形領域の南西隅と北東隅の座標、メッシュの種類、出力先のファイルフォーマットをパラメーターとして受け取り、その矩形領域をカバーする範囲の地域メッシュ区画 (メッシュポリゴン) を作成します。

FME ワークスペース例: 矩形領域 -> メッシュポリゴン -> 指定されたフォーマットおよび GeoJSON

















Creator: フィーチャーを1個作成する。
2DBoxReplacer: パラメーターで指定された南西隅、北東隅の座標に基づいて矩形領域を作成する。
JpStdGridAccumulator (FME Store): 当該矩形領域をカバーする範囲のメッシュポリゴンを作成する。
SpatialFilter: 当該矩形領域と重なる範囲のメッシュポリゴンのみに絞り込む。
[GENERIC] ライター: 指定されたフォーマットのファイルに出力する。
[GEOJSON] ライター: GeoJSON 形式で出力する。

JpStdGridAccumulator は FME Store で公開しているカスタムトランスフォーマーで、入力フィーチャーのジオメトリをカバーする範囲のメッシュポリゴンを作成します。このトランスフォマーは、3次メッシュ~10分の1 細分メッシュのメッシュポリゴンを2次メッシュ区画の単位で作成するので、SpatialFilter によって指定された矩形領域と重なる範囲のメッシュポリゴンのみに絞り込んでいます。

次の事項は、ワークスペースの Published Parameters (公開パラメーター) として実行時に指定できるようしました。
・作成するメッシュポリゴンの種類 (1次, 2次, 3次, 2分の1細分, 4分の1細分, 8分の1細分, 10分の1細分)
・メッシュポリゴンを作成する範囲 (矩形領域の南西隅、北東隅の座標)
・GENERIC ライターの出力先ファイルフォーマット

GENERIC ライターの出力先ファイルフォーマットのパラメーター化については、「出力先フォーマットのパラメーター化 - 基盤地図情報DEMの例」を参照してください。

このワークスペースを FME Server にアップロードし、Data Download Service (GENERIC ライター使用) および Data Streaming Service (GEOJSON ライター使用) として実行できるように設定すると、アプリケーション側では、メッシュの種類と範囲を指定してメッシュポリゴンを描画したり、それらを格納したファイルをダウンロードしたりすることができるようになります。

下の図はこのワークスペースを利用したアプリケーションの例で、次の3つのタイミングで FME Server を使用します。

(1) ウェブブラウザからアクセスされたとき、FME Server から上記ワークスペースの公開パラメーターの定義を取得し、2つのドロップダウンリスト (メッシュの種類およびダウンロードファイルフォーマットの選択肢) を初期化する。

(2) 地図上で矩形領域 (赤) が描画されたとき、その南西隅と北東隅の座標、およびドロップダウンリストで選択されているメッシュの種類をパラメーターとして上記ワークスペースを Data Streaming Service によって実行し、FME Server から返された GeoJSON データに基づいて矩形領域をカバーする範囲のメッシュポリゴン (緑) を描画する。

(3) 「ダウンロード」ボタンがクリックされたとき、(2) と同じ座標とメッシュの種類、および、ドロップダウンリストで選択されているフォーマットをパラメーターとして上記ワークスペースを Data Download Service によって実行し、FME Server が作成したファイルのダウンロードを始める (Data Download Service によって出力されたファイルは、FME Server が自動的に zip 圧縮します)。

ベースマップ: 地理院タイル 淡色地図 (データID = pale)
※ローカルサーバーでのテスト結果をキャプチャしたものであり、インターネット上では公開していません。





















もちろん、上記例のようなウェブアプリケーションは FME を使わなくても開発することはできます。しかし、FME Server の利用を前提とすれば、システム設計においてユーザーインターフェースの部分と空間データ変換の部分を分割し、データ変換の部分は FME ワークスペースとして単独で実装することができます。それぞれ得意な技術者が分担することによって、高品質のアプリケーションを効率的に開発できるケースもあると思われます。

0 件のコメント:

コメントを投稿