「ASP.NET Web API」を利用して、GeoJsonデータを取得する

引き続き、「ASP.NET」と「OpenLayers」を利用して、WebGISを開発中でして、
これまで、OpenLayersに表示する図形データは、「System.Web.UI.Page」クラスで行ていましたが、メソッド名が独自で定義できないPage_Load()のみだったので、「ASP.NET Web API」で実装することにしました。それにしても、「ASP.NET」は色んな技術があり、覚えるのが大変ですね。

「ASP.NET Web API」により、独自のメソッド名が定義できるため、クライアントからは使いやすくなると考えています。

各処理とファイルは以下の通りです。

  1. ルーティングの設定…WebApiConfig.cs
  2. APIコントローラー…ReportController.cs
  3. クライアント…map.js

WebApiConfig.cs

WebApiConfigでは、ルーティングの設定を行います。デフォルトの設定から少し変更しました。routeTemplateに設定された{controller}がクラスの先頭部分、{action}がメソッド名になります。URLとクラス名+メソッド名が紐づいているので、クライアントからは覚えやすいです。

あと、APIコントローラーでは、戻り値がデフォルトがxml形式で返却されるので、json形式で返却されるようHttpConfiguration.Formattersの内容を変更しています。

ReportController.cs

APIコントローラーでは、GetFeatures()という全図形を返却するメソッドを作成しました。
通常のAPIコントローラーでは、Listを返すと、フレームワークでJson形式に変換してクライアントに返却してもらえますが、今回は「OpenLayers」で図形データとして読み込む必要があるため、GeoJson形式で返却します。

APIコントローラーでは、自動でGeoJson形式に変換できないため、自前でGeoJson変換を行い、HttpResponseMessage形式に格納してクライアントに返します。GeoJson形式に変換は、空間演算ライブラリのNetTopologySuiteにある、GeoJsonWriterを利用します。

map.js

図形レイヤとして、APIコントローラーを呼びます。

以下、APIコントローラーから図形取得した画面です。

Print Friendly, PDF & Email

シェアする

  • このエントリーをはてなブックマークに追加

フォローする