MapAid+ご紹介
エンジニアリング事業部 空間情報部

服部 敏規

１． はじめに物件登録・修正
なお、背景に Google 地図等を利用する場合は、

MapAid+とは、 地図配信に必要なオープンソースソフトウェア（OSS）群と配信用の背景地図データ背景地図をバンドルしない提供形態もある。

をバンドルし、WebGIS アプリケーションを手軽にかつ、安価に導入するとこを可能にするパッケージ製品である。
OSS は基本的にライセンス料がかからず、商用ソフトウェアと比較して導入のための初期費用はほとんど無料であるが、それらを利用するには、高度な IT の知識が必要となる。
図1

技術者のスキルに大きく依存するのであるが、1

MapAid+の画面イメージ

つ 1 つの OSS をそれぞれが用意するドキュメントを参照しながら動作させるだけでも相当な工数(恐らく数人月)が必要となるだろう。
その手間をある程度吸収して一連の地図配信が出来るまでの仕組みをパッケージとして用意することは、開発コスト減少に寄与するものと考える。
MapAid+にはサンプルプログラムとして VB.NET
図 2 Google 地図を背景にした場合で作成した物件管理のプログラムが添付される。
サンプルプログラムは、以下の機能を実装してGoogle 地図を背景にする場合には、カスタマイいる。
登録済み物件検索
登録済み物件検索結果一覧表示

ズが必要となるが、そのための OpenLayers のクラスが用意されているため、比較的簡単なプログラミ

検索結果一覧の任意の物件に地図移動
地図上の物件をクリックすることで登録情報をポップアップ

ングにより実現できる。Google 地図を背景にすることにより背景地図を更新することなく、常に最新の－31－

地図を利用することできる。ただし、公開の形態にWMS（Web Map Service）

よっては Google 社と別途契約が必要となる。

WMS は簡単な HTTP のインターフェイスによって、１つあるいは複数の地図画像を生成

２． MapAid+で利用する技術

するサービスから地図画像を取得するプロトコルである。

世界中には多くの OSS コミュニティがある。
MapAid+では、その中から地図をインターネットで
配 信 す る の に 有 効 な 、 MapServer 、 PostGIS 、３． MapAid+の仕組み

OpenLayers、WMS を組み合わせて利用できるよう

MapAid+の仕組みを図 3 に示す。にパッケージ化した。
それぞれの概要は以下のとおりである。
MapServer
MapServer とはオープンソースの地理データ描画エンジンである。地理情報を考慮した地図イメージを生成する。その目的はインターネットを通じて地図を配信することである。
MapServer は OSGeo のプロジェクトの 1 つであり、世界中の多数の開発者によって維持されている。
PostGIS
PostGIS は，データベースに GIS(GeographicInformation Systems)オブジェクトを，格納できるようにした PostgtreSQL の拡張機能である。
OpenLayers
OpenLayers はある程度 Javascript に精通し、GIS の知識がありさえすれば、簡単に WEBページに地図を表示させることができるオー
プンソースの javascript である。地図の移動・拡縮、レイヤー操作など多くのクラスとメソッドが定義されており、クラスドキュメントを参照し、Examples と呼ばれる、サンプルプログラムのソースを読み解くことで学習できる。

図３ MapAid+の仕組み－32－

地図画像を表示させる一連の動きとしては、クライも扱える。この場合空間検索は出来ないが、表示

アントでは OpenLayers を用いて地図操作および、させるだけならば、既存のユーザの資産に何も手WMS プロトコルで MapServer に画像生成をリクエを加えることなく WEB 配信することが可能である。

ストする。MapServer では、リクエストに応じた地理

MAP
NAME
Tokyo
IMAGETYPE PNG
WEB
METADATA"WMS Demo Server""wms_title""wms_onlineresource""http://localhost/cgibin/mapserv-i18n.exe?""wms_srs""EPSG:900913"
END
END
PROJECTION"init=epsg:900913" # WGS84
END
UNITS meters
LAYER
NAME "ma_point"
CONNECTION"user=postgres
password=postgres
host=localhost dbname=testdb port=5432"
CONNECTIONTYPE postgis

情報を PostGIS より取得し、地図画像を生成する。
生成した画像をクライアントのブラウザで表示させる。
ユーザレイヤーを任意に定義し、登録、修正を行なう仕組みについても実装が可能である。PostGISの図形関数を利用することで、ジオメトリ情報を操作し、SQL により Insert、Update 文を用いてベクトル情報を操作する。

MapAid+はサーバーサイドの処理を.NET を採用している。各画面はもちろんだが、ジオメトリ等の DBへの問い合わせ等については、Ajax と WEB サービスの仕組みを利用する。

DATA "the_geom from FROM work_point_tbl”
STATUS off

４． サーバー処理

SIZE 10END
END
END
END # End of Map

MapServer の設定ファイルはマップファイルと呼ばれる。MapAid+で利用する WMS 配信用の簡単なサンプル（図 4）を例に説明する。
マップファイルで重要な項目のひとつに、

図４ マップファイルのサンプル

PROJECTION タグがある。これは、どの投影法で５． クライアント処理投影するかを決定する。LAYER タグにおいては、描画するレイヤーを定義する。ここにもMapAid+では OpenLayers を利用することで、地PROJECTION タグがあり、それぞれの投影法が違図の描画(WMS など)、拡大・縮小・移動などの地う場合は、最初の投影法へ MapServer リアルタイ

図操作はもちろんのこと、フリーポリゴン、ライン、ムで変換を実行し画像を作成する。最後に STYLEポイントの描画にいたるまで、充実した機能を提供タグによって描画する色などのスタイルを定義する。

している。OpenLayers はサンプルコードが充実し

MapServer のベクトルデータは PostGIS だけでていて、使いたい機能はすぐに動作・確認することなく、広く一般的に使われているシェープファイルが出来る。

－33－

function init(){map = new OpenLayers.Map('map', {controls: [new OpenLayers.Control.PanZoomBar(),new OpenLayers.Control.MouseDefaults()]);
var layer = new OpenLayers.Layer.WMS("OpenLayers WMS",
http://demo.cubewerx.com/demo/cubeserv/cubeserv.
cgi?",{layers: 'Foundation.GTOPO30', version:'1.3.0'},{singleTile: true, yx: []});map.addLayer(layer);}

MapAid+は取り扱いの難しい OSS をパッケージにまとめることにより、導入までにかかる工数（費用）を大幅に削減することに大きく寄与するものと考える。
デジタルマッピングの要望は潜在しているものの、商用のアプリケーションを買うほどではないと考えているユーザにとって、MapAid+は有用な選択肢のひとつとなる。この機会に是非、MapAid+を利用した地図配信のシステム構築をご検討いただ
きたい。

＜参考アドレス＞
図５ JavaScript のサンプル

1. MapServer
http://mapserver.org/

実際には、JavaScript により、WMS にて画像の2. PostGISやりとりおよび、地図操作の実装が可能である。
html の body タグの onload のタイミングで上記のhttp://postgis.refractions.net/
3. OpenLayers

JavaScript を読込むことで簡単に WMS の表示、および移動・拡縮などの地図操作を行なえる。

http://openlayers.org/
4. Web Map Service
http://www.opengeospatial.org/standards/wms/

６． おわりに
MapAid+は、日々世界中の多数の開発者により改善され続けている OSS を組合せて、個々のアプリケーションの一連の動作を連携させた一つの地図配信アプリケーションである。OSS において一般的に注目される点の一つとしてソースそのものに対して対価が必要ないということがよく言われているが、実際に何か問題があった場合、世界中に点在するコミュニティに自ら問い合わせるか、自分で解決する必要がある。実はこのことが大きな工数増加ひいては経費増大の要因であることを忘れてはならない。

－34－