メイン

OpenSource アーカイブ

2008年4月19日

オープンソースGISで作られた120年前の関東地図

 独立行政法人・農業環境技術研究所が、120年前の明治時代に作成された関東地方の地図をネットで閲覧できるようにするらしいです。

 これは最近の古地図ブームにのったものなのか?もしかして、「地理空間情報活用推進基本法」の流れなのか?このタイミングでの企画の真意はわかりませんが、技術的におもしろいポイントもいくつかあります。

 一つ目は、サイト上のビューワシステムで地図を閲覧できるだけでなく、WMS形式での配信も行っている点です。そのため、GoogleEarthや各種GISツールなどで読み込むことができます。もちろんGoogleMapsとマッシュアップすることも可能です。
 こういった古地図は眺めているだけでも楽しかったりすのですが、上に現代の地物を重ねることで意外な面白さを発見できたりするので侮れません。WMSサポートは地図系マッシュアップエンジニアにとって、大変な素晴らしいプレゼントであります。

 もう一つのポイントは、FOOS4Gと呼ばれるオープンソースのGISツールをふんだんに使用している点です。Internet Watchの記事によると、オープンソースソフトの「GeoServer」「GeoWebCache」「Open Layers」を利用しているとあります。
 「GeoServer」は上にも書きましたWMS形式の画像を生成するサーバアプリケーションです。Javaで書かれているようで、公式サイトをみるとOGCの規格をかなり意識しているように見受けられます。 国内ではオークニーさんのMapServerががんばっていたイメージがあり、まだGeoServerの使用例はほとんど聞いたことがないのですが、どの程度のパフォーマンスをみせてくれるのかとても楽しみです。
 Ajaxのフリースクロール地図部分には、OpenLayersが使われています。こちらはOpenStreetMapで採用されるなど、すでに一定の地位を確立してきたかのように思えます。(まだまだ不安定になってしまうこともあるのですが、、、)
 WMS(GeoServer)+OpenLayersによる構成はとてもシンプルでキレイなアーキテクチャではあるのですが、まともにやってしまうとまったくパフォーマンスがでなくなります。そこで普通はタイル画像をはくことになるのですが、これもまともにやろうとするとけっこうな手間だったりします。「GeoWebCache」というこちらもJavaなサーバシステムはWMSをバックエンドにし、クライアントとの間に入ってキャッシュ機能を提供してくれるようです。こちらも公式サイトをのぞいてい見ると、なにやらGoogleMapsやVirtualEarthのレイヤ形式をサポートしているような、、、ということは、いちいちWMSのハックとかしなくても、いきなりGTileLayerが使えるのかもしれません。

 つらつらと書いてきましたが、つまりはFOOS4Gを使ったお手本のようなサイトになっていそうということで、自前の地図アプリを作ろうとしている人にとっては、かなり参考になるのではないでしょうか。
 そういった意味も踏まえて、「実はサーバをケチっていた」→「サイト激重」→「オープンソース使えねえ」 みたいなことにだけはならないで欲しいものです。

2006年11月23日

PostLBSをWindowsで使ってみる

オークニーさんが出しているオープンソースのルーティングエンジンPostLBSを、Windows環境で構築してみました。
WindowsXPのSP2で試してみたところ、サンプルアプリを動かすところまでは上手くいきました。
以下はそのときのメモです。

PostLBSのセットアップ

まずはPostGISが動く環境を作ります。 PostgreSQL 8.1.4で動作確認しました。(8.1.5では上手くいきませんでした) PostGISはインストールオプションに付属のものでOKでした。

PostLBSのダウンロードページから、pgRouting(Windows binary)をダウンロードし、中身をPostgreSQLのインストール先フォルダへコピーします。

routingを使用するDBへ対して以下のSQLを実行します。


share\contrib\routing.sql
share\contrib\routing_postgis.sql

pgAdminⅢから実行すると上手くいくのですが、psqlで実行するとエラーになりました。
「\'を使わずに、''を使え」と言ってきたので、置換してから実行する上手くいきました。
これで、pgRoutingの各ファンクションが使えるようになります。


サンプルアプリを入れる


MS4Wをセットアップします。
バージョンは2.2.1で試しました。

「pgRouting Sample Application」をダウンロードして、MS4Wのappsフォルダへコピーします。
「httpd.d」フォルダへApacheの定義ファイルを追加して、routingjアプリケーションを使えるようにします。

「routing」というDBを作り、pgRoutingを使えるようにします。


createdb -U postgres routing
psql -U postgres -d routing -f "C:\Program Files\PostgreSQL\8.1\share\contrib\routing.sql"
psql -U postgres -d routing -f "C:\Program Files\PostgreSQL\8.1\share\contrib\routing_postgis.sql"

「data\kanagawa.shp」をroutingデータベースへインポートします。
インデックスも作っておくと処理速度が速くなります。


shp2pgsql -D -c kanagawa.shp kanagawa > kanagawa.sql
psql -U postgres -f kanagawa.sql routing
psql -U postgres -d routing -c "create index k1 on kanagawa using gist (the_geom GIST_GEOMETRY_OPS);"
psql -U postgres -d routing -c "create index k2 on kanagawa( source );"
psql -U postgres -d routing -c "create index k3 on kanagawa( target );"
psql -U postgres -d routing -c "vacuum full;"

サンプルファイルはLinux用?なので、以下の修正を行います。
phtmlsフォルダ内の各「.phtml」ファイルの中身を以下のように修正します。
「php_mapscript.so」→「php_mapscript_4.10.0.dll」

「maps/routing.map」ファイル内の、
「IMAGEPATH」定義をフルパスに代える。
各「LAYER」の「CONNECTION」へPostgreSQLへ接続するための情報を設定する

これで、とりあえずは上手く動作しました。

2006年10月13日

Flashで3Dを実現するオープンソースのAPI

-Sandy the best Flash 3D API

Flashには画像の変形処理を行うためのライブラリが用意されていますが、3×2のマトリックスにしか対応していないため、3次元のテクスチャ処理はとても大変な作業となります。

Sandyは、そういった3次元のレンダリング処理をラッピングしてくれるAPIです。JAVA3Dに基づいて設計されています。
ドキュメントもしっかりしています。
画像処理については、PixLibという外部ライブラリを参照しているようです。
上記以外にも、こちらのサイトにはたくさんのFlashプロジェクトが公開されています。

最近、Ajaxのサイトに紛れて、Flashを使ったRIAがかなり伸びてきているように思います。
リクルートがリリースしたスゴイ地図やMash up Awardでフロムエー特別賞を受賞したFind Funなどの(うねうねな)インタフェースは、Ajaxで簡単に真似出来るものではないでしょう。(がんばればできるかも?)
Googleのサービスも密かに?Flashで作られたものがいくつか紛れています。
Sandyのデモの中にこんなアプリがあるのですが、GoogleEarthのFlashバージョンも夢ではないかもしれません。

About OpenSource

ブログ「convivial-weblog」のカテゴリ「OpenSource」に投稿されたすべてのエントリーのアーカイブのページです。過去のものから新しいものへ順番に並んでいます。

次のカテゴリはweb mapです。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

プロフィール

  • Hirotoshi Maeda
Map
track feed