Comments
Description
Transcript
Oracle Application Server MapViewer入門
Oracle Application Server MapViewer 入門 Oracle ホワイト・ペーパー 2009 年 3 月 Oracle Application Server MapViewer 入門 はじめに ........................................................................................................................3 MapViewer とは ............................................................................................................3 Oracle Maps とは...........................................................................................................4 MapViewer 環境の設定.................................................................................................4 Oracle Spatial へのデータのロード .......................................................................5 MapViewer のインストール ...................................................................................5 MapViewer メタデータの作成 ...............................................................................6 永続データソースの作成 ...............................................................................10 動的データソースの作成 ............................................................................... 11 MapViewer メタデータ............................................................................................... 11 スタイル................................................................................................................. 11 テーマ.....................................................................................................................12 テーマの作成 ...................................................................................................13 ベース・マップ.....................................................................................................14 タイル・レイヤー.................................................................................................15 マップ・リクエストの発行と MapViewer とのやり取り ......................................15 付録 A:Oracle Locator および Oracle Spatial 入門 .................................................16 Oracle Application Server MapViewer 入門 2 Oracle Corporation 発行「Oracle Fusion Middleware MapViewer Primer」の翻訳版です。 Oracle Application Server MapViewer 入門 はじめに Oracle MapViewer は、インターネッ トおよび Java 標準ベースの開発者向 けツールキットとして Oracle Application Server に付属しており、 バージョン 10.1.3.3 は Oracle WebLogic Server 9 以降で動作する ことが確認されています。 Oracle MapViewer は、Oracle Database に格納されている空間デー タとビジネス・データから地図を作成 するための強力な機能を備えた Oracle Fusion Middleware です。 Oracle Locator および Oracle Spatial と連携して動作します。 このホワイト・ペーパーでは、Oracle Fusion Middleware の MapViewer について説明 します。Oracle MapViewer は、Oracle Database に格納されている空間データとビジネ ス・データから地図を作成するための強力な機能を備えており、Oracle Locator およ び Oracle Spatial と連携して便利で充実したオンライン・マップを実現します。 MapViewer は Oracle Fusion Middleware のコンポーネントです。中間層ツールキット として、Oracle Container for J2EE(OC4J)およびそのほかの J2EE コンテナのインス タンス内でサービスとして動作します。また、MapViewer は Oracle Application Server に付属しており、バージョン 10.1.3.3 は Oracle WebLogic Server 9 以降で動作するこ とが確認されています。 MapViewer とは 初期の地理データ管理では、さまざまなファイル形式で格納された地理データから 地図を作成するデスクトップ GIS アプリケーションが主流でした。そして 1990 年代 半ば、地理空間データをデータベースにある標準的な表に格納して管理する、Oracle Spatial をオラクルがリリースしました。ここから、地理データ管理は新しい段階に 入り、エンタープライズ IT インフラストラクチャの一部を構成するようになります。 Oracle Locator および Oracle Spatial について知識のない読者は、付録 A の説明をご覧 ください。 Oracle Fusion Middleware の MapViewer は開発者向けのツールキットで、プログラミ ングが可能な Java コンポーネントです。Oracle Database に格納および管理されてい る地理アプリケーション・データから地図をレンダリングします。MapViewer は、 Oracle Locator および Oracle Spatial に対して地理空間データを透過的に問い合わせて、 問合せ結果として返された地図データをレンダリングします。上級ユーザー向けに カスタマイズできるオプションも用意されています。また、インターネットおよび Java 標準ベースのプラットフォーム上に配置され、地図と空間分析機能を Web アプ リケーションやスタンドアロン・アプリケーションに組み込みます。 Oracle MapViewer には、XML、Java、 JavaScript/AJAX の各 API が含まれ ています。これらの API はそれぞれ、 Web ページ、スタンドアロン・アプリ ケーション、Web アプリケーションに 地図を埋め込むために使用します。こ の MapViewer を使用すれば、距離内 のマップ問合せや、もっとも近傍の マップ問合せをインタラクティブに 実行することも可能です。 MapViewer には、3 つの API セットが含まれています。まず、Web ページに静的な マップを埋め込むための XML 要求/応答プロトコルと、アプリケーションにマップ を埋め込むための Java API があります。この 2 つの API では、目的エリア内および その近辺の存在物をマップへインタラクティブに問い合わせたり、拡大のレベルに 応じて存在物を適切なサイズにレンダリングしたりできます。もう 1 つは、 MapViewer のコンポーネントである Oracle Maps の JavaScript API です。この API で は、"滑らかさ"を加えることで上記の機能をさらに高度なものにします。具体的には、 パン操作、ズーム操作、地図イメージの任意の方向へのスライド操作が可能になり ます。 Oracle Application Server MapViewer 入門 3 Oracle Corporation 発行「Oracle Fusion Middleware MapViewer Primer」の翻訳版です。 Oracle Maps とは Oracle Maps は MapViewer のコン ポーネントです。Oracle Locator と Oracle Spatial によって提供される地 理空間データに対して、シームレスか つインタラクティブにパンやズーム を実行できる"滑らかな地図"を実現 します。 Oracle Maps は、JDeveloper ADF Faces の GeoMap データ仮想化コン ポーネント内にカプセル化されてい ます。 Oracle Maps は、MapViewer 10.1.3.1 以降のコンポーネントです。Oracle Maps では、 データベース・コンテンツと地図のマッシュアップ、および Oracle Locator と Oracle Spatial によって提供される地理空間データに対して、シームレスかつインタラクティ ブにパンやズームを実行できる"滑らかな地図"を実現します。具体的には、オンライ ンの地図サービスで表示できるように、地理空間データベースのデータをフェッチ、 変換、転送します。 Oracle Maps は、クライアント側で動作するインタラクティブな JavaScript および AJAX API、サーバー側で動作するファイル・システム・ベースのマップ・タイル用 イメージ・キャッシュ、および対象存在物(FoI)サーバーと呼ばれる非定型問合せ モジュールを備えています。Oracle Maps JavaScript API は、JDeveloper ADF Faces の GeoMap データ仮想化コンポーネントにもカプセル化されています。 Oracle Maps を使用するには、MapViewer 全般についての知識があり、スタイル、テー マ、ベース・マップなどの基本概念について理解していることが前提となります。 Oracle Maps は多くの独自の機能を備えています。詳細は、関連ドキュメント『Oracle Maps Primer』を参照してください。 MapViewer 環境の設定 この項では、MapViewer を使用して、地理空間アプリケーション・データをオンラ イン地図として公開するプロセスについて説明します。図 1 に、必要な 5 つの基本 手順を示します。 図 1 Spatial/MapViewer 環境の設定手順 1. Oracle Database にある表の列で、地理空間アプリケーション・データをロー ドまたは作成します。 Oracle Application Server MapViewer 入門 4 Oracle Corporation 発行「Oracle Fusion Middleware MapViewer Primer」の翻訳版です。 2. MapViewer を Oracle Application Server(またはスタンドアロンの OC4J)に インストールします。 3. 地理空間データのスタイルを指定し、MapViewer に必要なすべての地図メタ データを、MapViewer 付属のデスクトップ・オーサリング・ユーティリティ である Oracle Map Builder を使用して作成します。 4. MapViewer が地理空間アプリケーション・データと地図メタデータを含む データベース・スキーマに接続できるように、データソースを定義します。 5. 個々のマップ・リクエストを送信して地図を表示します。または、3 つの API のいずれかを使用して、MapViewer と相互に作用する Web 上の地図ア プリケーションを作成します。 以下、個々の手順について詳しく説明します。 Oracle Spatial へのデータのロード MapViewer のデータソースは、Oracle Locator または Oracle Spatial によって管理され MapViewer 付属の MVDEMO サンプ ル・データセットをデータベースにか ならずインポートしてください。 る Oracle Database 内に格納された地理空間データです。地理空間アプリケーション・ データを Oracle Database にロードするには、いくつか方法があります。Map Builder ユーティリティを使用すると、ESRI やそのほかのベンダーによってサポートされて いる形状ファイルを Oracle Database の表にインポートできます。Safe Software (www.safe.com)の FME や GIS ソフトウェア・ベンダーが提供しているツールなど、 サード・パーティ製のツールを使用して、独自形式の GIS データを Oracle Database にロードすることもできます。さらには、表を作成してから SQL を使用し、ジオコー ディングされたビジネス・データを含む新しいレコードを表に格納することも可能 です。Oracle Locator または Oracle Spatial にロードされたデータは、MapViewer やす べての地理空間アプリケーションにとって唯一のデータソースになります。 Oracle Technology Network にある MapViewer のページには、Oracle Database エクス ポート・ファイル形式の簡単なデモ用の地理空間データセットがあります。このデー タセットは、www.oracle.com/technology/products/mapviewer でダウンロードできます。 このデータセットには、米国の州、郡、主要都市、高速道路の簡略化されたデータ が含まれています。データセット名は"mvdemo"です。MapViewer に組み込まれてい るすべてのチュートリアルとデモではこのデータセットを使用しているため、ご使 用の Oracle Database にデータベース・ユーザーとして MVDEMO(または任意のユー ザー・スキーマ)を新規に作成し、このデータセットをインポートしておいてくだ さい。詳しい説明は、デモ用データセットに含まれています。 MapViewer のインストール MapViewer は、フル・インストールされた Oracle Application Server(リリース 10.1.3 以降必須)に配置することもできますが、MapViewer のインスタンスを実行するに は、MapViewer クイック・スタート・キットを使用するのが一番簡単です。このキッ トは、OTN にある次のページからダウンロードできます。 http://www.oracle.com/technology/software/products/mapviewer/index.html MapViewer クイック・スタート・キットには、MapViewer が事前配置されたスタン ドアロンの OC4J(Oracle Container for J2EE)が含まれています。OC4J は、Oracle Application Server の中核部分と考えてください。つまり、 Apache などの Web サーバー や、JSP とサーブレットを実行するための J2EE コンテナを、コンパクトな Java パッ Oracle Application Server MapViewer 入門 5 Oracle Corporation 発行「Oracle Fusion Middleware MapViewer Primer」の翻訳版です。 ケージとしてまとめたものです。MapViewer は、OC4J インスタンスの起動時に初期 化されるサーブレットのセットです。 Oracle WebLogic Server でもサポートされています。スタンドアロンの OC4J があれ ば、MapViewer のプロトタイプ作成に必要な機能をすべて、十分かつ簡単に管理で きます。 クイック・スタート・キットをダウンロードし、コンピュータ上のディレクトリに 解凍してください。ご使用のコンピュータに Java JDK 1.5 以降がインストールされて いることを確認してください。JDK 1.5 がインストールされていない場合は、Sun の Java Web サイトでダウンロードしてください。最新の MapViewer 10.1.3.1 以降を実行 するには、JDK 1.5 以降が必要です。 MapViewer は、OC4J を起動すると自動的に起動します。OC4J を起動するには、ク イック・スタート・キットに含まれているバッチ・ファイル start.bat を修正して実行 します。Windows 用のクイック・スタート・キットのバッチ・コマンド・ファイル には、次の行が含まれています。 cd C: ¥mv10131qs¥oc4j¥j2ee¥home "C:¥Program Files¥Java¥jdk1.5.0_08¥bin¥java" -server -Xmx512M -jar oc4j.jar 最初の行では、現在のディレクトリをクイック・スタート・キットの解凍先ディレ クトリに変更しています。2 行目では、Java コマンドを使用して OC4J を起動してい ます。赤字で示したディレクトリは、実際の解凍先と JDK の存在場所に変更する必 要があります。2 行目のコマンドに指定されている-Xmx512M オプションは、Java に 対して OC4J プロセスに最大 512MB のメモリを割り当てるように指示するものです。 この値は必要に応じて大きくしたり小さくしたりできます。どのくらいの値を設定 するかは、通常使用する地図の大きさと詳細度、および MapViewer に対して同時に 地図を要求するユーザーの数によって異なります。 上記のコマンドを最初に実行すると、パスワードを入力するよう求められます。こ こで入力したパスワードは、OC4J の管理者アカウント用のパスワードになります。 このパスワードは、MapViewer の管理ページにログインするときに必要となるため、 忘れないようにしてください。管理ユーザー名は常に oc4jadmin です。 OC4J の起動時には、コンソールに多数のメッセージが出力されます。最後に、 MapViewer のサーブレットからのメッセージが出力されます。このメッセージはか なり長いものになることがありますが、重要なものは次のとおりです。 INFO [oracle.lbs.mapserver.oms] *** Oracle MapViewer started. *** および INFO [oracle.lbs.mapcache.mcservlet] *** Oracle MapTileServer started. *** これらのメッセージが表示されたら、MapViewer が正しく起動されています。MapViewer ホームページにアクセスするには、ブラウザで http://localhost:8888/mapviewer を開いてく ださい。 MapViewer メタデータの作成 地理空間アプリケーション・データ表には、形状は格納されますが、ビジュアル情 報は格納されません。MapViewer は、マッピング・メタデータに基づいて高品質の Oracle Application Server MapViewer 入門 6 Oracle Corporation 発行「Oracle Fusion Middleware MapViewer Primer」の翻訳版です。 地図を生成します。MapViewer メタデータは、"スキン"、スタイル・ルール、デザイ ン、またはテンプレートを提供することで、地理空間アプリケーション・データを 縮尺やシナリオ(またはその両方)が異なるさまざまな地図としてレンダリングす る方法を MapViewer に指示します。メタデータは地理空間アプリケーション・デー タ表を識別し、データのスタイル設定とレンダリングをおこなって、目的のルック・ アンド・フィールをもつ地図を生成する方法を指定します。メタデータには通常、 地図記号として、(スタイル)、テーマ、ベース・マップの定義が含まれています。 MapViewer 付属のデスクトップ・オーサリング・ユーティリティである Map Builder は、すべての永続メタデータを作成および管理します。地図メタデータは、Oracle Database(通常、地理空間アプリケーション・データと同じスキーマ)に格納されま す。スタイルやテーマなどの特定タイプのメタデータは、プログラムで動的に作成 することもできます。作成したメタデータは、マップ・リクエストの一部として使 用できます。こうしたメタデータは一時的なものであり、永続的に格納されること はありません。Map Builder を使用すると、メタデータの作成中に、選択したスタイ ル、テーマ、ベース・マップを使用して、地理空間データをプレビュー表示できま す。Map Builder は MapViewer に依存せず、データベース・スキーマに直接接続しま す。そして、MapViewer と同じレンダリング・エンジンを組み込み、即座に信頼性 の高いプレビューを表示します。 詳細については、後述の MapViewer メタデータの項を参照してください。 以下に、動作中の Map Builder の画面を示します。Map Builder の詳細については、 『MapViewer ユーザーズ・ガイド』を参照してください。Map Builder は、これまで 使用されていた Map Definition ユーティリティを完全に置き換える機能を備えていま す。 Oracle Application Server MapViewer 入門 7 Oracle Corporation 発行「Oracle Fusion Middleware MapViewer Primer」の翻訳版です。 Oracle Application Server MapViewer 入門 8 Oracle Corporation 発行「Oracle Fusion Middleware MapViewer Primer」の翻訳版です。 MapViewer データソースの作成 すべての地理空間アプリケーション・データと対応する MapViewer メタデータは、 選択した 1 つまたは複数のデータベースに格納することができ、特定の MapViewer インスタンスに結合されることはありません。MapViewer 自身はシステム・スキー マをもたず、自身に関するプライベート情報も格納しません。 MapViewer のデータソースにはデータベース・スキーマが定義されており、必要な 地理空間アプリケーション・データとメタデータはこのスキーマ内に存在します。 MapViewer は、このデータソースに接続して地理空間アプリケーション・データお よび関連するメタデータを問い合わせ、スタイル、テーマ、レンダリングする必要 があるベース・マップを特定して、オンライン地図を描画します。 組織内(あるいは 1 台のコンピュータ上)に複数の MapViewer インスタンスを動作 させ、それらのインスタンスをすべて同じデータベースに接続して地図を描画でき ます。また、1 つの MapViewer インスタンスを複数のデータベースまたはスキーマ に接続して、複数のデータベースまたはスキーマにまたがって存在する地理空間ア プリケーション・データを 1 つの地図に集約することも可能です。次の図に示すと おり、MapViewer は柔軟な配置アーキテクチャを採用しています。 図 2 MapViewer の配置アーキテクチャ MapViewer とデータベース・インスタンス(スキーマ)をつなぐ唯一の接続点は、JDBC ベースのデータソースです。MapViewer 内のデータソースは、Web ベースの管理ペー ジで追加または変更できます。中間層クラスタに複数の MapViewer インスタンスを セットアップして、各インスタンスを 1 つ以上のデータベース、または Oracle Real Application Clusters として構成されたデータベースに接続することもできます。 マップ・リクエストおよび MapViewer とやり取りするアプリケーション・コード内 で、データソースは常に名前で参照されます。MapViewer が受け取るすべてのマッ プ・リクエストには、マスターまたはデフォルトのデータソースが含まれています。 MapViewer は、マッピング・メタデータの検索およびデータ表の問合せを実行する Oracle Application Server MapViewer 入門 9 Oracle Corporation 発行「Oracle Fusion Middleware MapViewer Primer」の翻訳版です。 とき、内部的にこのデータソースのスキーマをデフォルトで使用します。同じテー マ(およびその基盤となるデータ表)が複数のスキーマに格納されている場合は、 そのデータソースを定義して、そのテーマを含むマップ・リクエスト内で明示的に データソース名を指定する必要があります。マップ・リクエストでは、"データソー ス名、テーマ名"のペアを指定することで、複数のスキーマの地理空間アプリケーショ ン・データを 1 つの地図に集約できます(これ以外にも MapViewer 内でデータ集約 を実現する方法はありますが、これがもっとも簡単です)。 MapViewer インスタンスには、必要な分だけデータソースを作成できます。最初は、 (MVDEMO サンプル・データセットが格納された)前出の MVDEMO スキーマに接 続するデータソースを作成して、組み込まれているすべてのデモとチュートリアル を実行してみることを推奨します。 MapViewer のデータソースには、永続データソースと動的データソースの 2 種類が あります。永続データソースは、OC4J/MapViewer を再起動したあとでも、データベー ス自体がオフラインである場合を除き、常に使用可能です。ほとんどの場合、デー タソースは永続的にする必要があります。 永続データソースの作成 永続データソースは、MapViewer の構成ファイル内に定義します。MapViewer の構 成ファイルは XML ファイルとして、MapViewer の配置ディレクトリ内に格納されま す。この構成ファイルは、MapViewer の Web ページで編集および保存できます。 MapViewer の Web ペ ー ジ に ロ グ イ ン し た あ と 、 「 Manage MapViewer 」 → 「Configuration」に移動してください。テキスト領域に XML 構成ファイルが開きま す。ファイルの終わりまでスクロール・ダウンして、サンプルの MapViewer データ ソース定義を見つけてください。以下に、サンプル MVDEMO スキーマのデータソー スを示します。 <!<map_data_source name="mvdemo" jdbc_host="my.mapserver.com" jdbc_sid="oradb10gr2" jdbc_port="1521" jdbc_user="mvdemo" jdbc_password="!pwd4mvdemo" jdbc_mode="thin" number_of_mappers="6" allow_jdbc_theme_based_foi="true" /> --> コメントマークを外し(赤字の XML コメント・タグを削除し)、自分の MVDEMO スキーマに合わせてデータベース接続とログ情報(上記の太字のテキスト)を修正 します。これを MVDEMO のデータソースとして使用する場合、name 属性("mvdemo") を変更してはいけません。name 属性は、MapViewer のすべての標準のチュートリア ルおよびデモにハードコードされているデータソース名であるためです。また、ロ グイン・パスワードの前に感嘆符"!"をつけるのを忘れないようにしてください。次 回 MapViewer を再起動した際、このパスワードは自動的に不鮮明化して表示されま す。 テキスト領域の下にある「Save & Restart」ボタンをクリックします。MapViewer が 再起動し、修正した構成ファイルがリロードされて、データソース"mvdemo"が作成 されます(データベースとそのリスナーが両方とも起動していることを確認してく Oracle Application Server MapViewer 入門 10 Oracle Corporation 発行「Oracle Fusion Middleware MapViewer Primer」の翻訳版です。 ださい)。作成されたデータソースを確認するには、「ManageMapViewer」→ 「Datasources」に移動します。最上部のパネルに表示された一覧に、"mvdemo" データソースが含まれています。別のデータソースを追加する必要がある場合は、 上記の定義をコピーして同じ構成ファイル内に貼りつけ、同じ要領で修正し保存し てから、MapViewer を再起動してください。 動的データソースの作成 動的データソースは、現在の MapViewer セッション内に定義され、現在のセッショ ン内でのみ使用できます。したがって、MapViewer またはその OC4J コンテナを再起 動した場合は、再定義する必要があります。動的データソースは、テスト時、また はテーマに 1 回だけ接続する必要があるときに使用します。 動的データソースは、MapViewer のホームページから作成します。「Admin」ボタ ンをクリックし、oc4jadmin と最初に OC4J を起動したときに入力したパスワードを 使 用 し て ロ グ イ ン し ま す 。 ロ グ イ ン し た ら 、 「 ManageMapViewer 」 → 「Datasources」に移動します。既存のデータソースが一覧表示されます。一覧の 下にパネルがあり、ここに名前とデータベース接続情報を入力して新規のデータ ソースを定義します。 MapViewer メタデータ MapViewer のメタデータは、目的のルック・アンド・フィールを備えた地図を定義 するのに必要不可欠です。メタデータには、スタイル、テーマ、ベース・マップ、 マップ・タイル・レイヤーの 4 つのタイプがあります。 スタイル スタイルは、MapViewer が形状や点をレンダリングするときに適用される基本的な 注:Map Builder でスタイル、テーマ、 ベース・マップの定義を変更した場合 は、MapViewer のキャッシュされたメ タデータ定義を消去する必要があり ます。 それには、MapViewer の管理 ペ ー ジ に ア ク セ ス し て 、 Manage MapViewer タブの「Datasources」を クリックし、既存のデータソース一覧 から該当するデータソースを選択し て、「Purge cached metadata」ボタ ンをクリックします。 図形属性です。たとえば、湖に関する情報が格納された表がある場合、Map Builder を使用して、表内のすべてのポリゴン形状の内部を青で塗りつぶし、境界を黒で描 画する COLOR スタイルを定義できます。この COLOR スタイル定義はデータベース に格納され、USER_SDO_STYLES ビューからアクセスできます。このスタイルには 'Lake Color'というように(一意の)名前をつけて、テーマ定義内で参照できます。 スタイルは、特定のテーマに結合されることはありません(テーマについては次の 項で説明します)。スタイルは独立しており、データベースの USER_SDO_STYLES ビュー内の個々のレコードとして格納されます。テーマのレンダリング方法を変更 するには、別のスタイルを参照するか、現在割り当てられているスタイルの定義を 変更します。スタイルの定義を変更すると(たとえば、COLOR スタイルの塗りつぶ しや線の描画に使用する色を変更すると)、その特定のスタイルを使用しているす べてのテーマの外観が変更されます。 MapViewer では、主要なスタイルとして、COLOR、MARKER、LINE、AREA、TEXT、 ADVANCED の 6 つのタイプをサポートしています。TEXT スタイルはラベル・スタ イルとも呼ばれ、MapViewer に形状ラベルの付け方を指示します。TEXT スタイルで は、標準的なプロパティとして、フォント名、フォント・サイズ、フォント色を指 定し、実際のテキスト文字列をターゲット形状に固定する方法について規定します。 また、アプリケーション内で即座にスタイルを作成することもできます。こうした スタイルは、動的スタイルまたは一時スタイルと呼ばれます。動的スタイルにも名 前をつけることができます。この名前は通常、動的に作成されたテーマ内で参照さ れます。 Oracle Application Server MapViewer 入門 11 Oracle Corporation 発行「Oracle Fusion Middleware MapViewer Primer」の翻訳版です。 各タイプのスタイルに関する詳細は、『MapViewer ユーザーズ・ガイド』を参照し てください。 テーマ テーマは MapViewer の重要なメタデータです。テーマを使用すると、表内の表示対 象データおよびそのデータのレンダリング方法を指定できます。テーマはマップ・ レイヤーの 1 つと考えてください。地図は通常、複数のテーマを積み重ねることに よって構成されます。たとえば、州の境界を記述するテーマを最下部レイヤーとし て、その上に、湖、道路、郡などを記述したテーマを重ねてレンダリングするといっ た具合です。MapViewer から地図を要求する際、実際は MapViewer に対して、どの テーマをどんな順序でレンダリングするのかを指示しているのです。 テーマは、空間表に格納されたデータをレンダリングする方法について、MapViewer に指示します。たとえば、'Lakes Theme'というテーマを定義し、湖の形状を格納する 表へ、前に定義した COLOR スタイル'Lake Color'を含めたとします。MapViewer は、 この表内の湖の形状をレンダリングする際、データベースからスタイル定義を検索 します。そして、COLOR スタイル'Lake Color'のインスタンスを作成し、形状に適用 します。スタイルの定義とインスタンスは、データベースから最初に検索されたあ と、MapViewer のメモリ内にキャッシュされます。 テーマは、メタデータとして次の情報を MapViewer に伝えます。 • レンダリングの対象となる地理空間レコードが格納されたデータ表の名前 • 地理空間レコードをフィルタリングまたは制限するためのオプションの問 合せ条件 • 問合せ結果セット内の地理空間レコードをレンダリングする際に適用する スタイルの名前 • テーマがラベル付け(形状につけるテキストの注釈)を必要とする場合の ラベル(TEXT)スタイルの名前 この情報は、簡単な XML 形式のテキストとして取得され、データベース内のシステ ム・ビュー(USER_SDO_THEMES)に格納されます。これらのテーマは、定義が永 続的に存在するため、"事前定義テーマ"と呼ばれます。MapViewer は、このようなテー マを処理するため、テーマの定義に含まれるさまざまな情報を組み合わせて、その テーマ用の完全な SQL 問合せを実行時に作成します。 テーマは常に、1 つの表またはビューに関連づけられます。しかし、1 つの表または ビューには、複数のテーマを関連づけることができます。問合せ条件とスタイル名 の異なる組合せによって、さまざまなテーマを作成できます。 異なるスタイルで複数のテーマを作成すれば、同じ表内のデータに異なるルック・ アンド・フィールを与えることができます。たとえば、ある表に国内のすべてのホ テルに関する情報を格納するとします。すべてのホテルを特定のアイコン(MARKER スタイル)を用いて地図上に表示する"汎用的な"ホテル・テーマを定義することはで きますが、3 つ星以上のホテルだけを地図上に表示する場合は、同じデータ表に新規 のテーマを作成し、"star_ranking >= 3"という問合せ条件を指定します("star_ranking" 列はデータ表に定義されているものとします)。これで、この新規テーマが地図上 に描画するよう要求されると、作成されるテーマの問合せにこの問合せ条件が含め られるようになり、データベースからは 3 つ星以上のホテルだけが返されます。 Oracle Application Server MapViewer 入門 12 Oracle Corporation 発行「Oracle Fusion Middleware MapViewer Primer」の翻訳版です。 MapViewer は、各事前定義テーマの SQL 問合せ文字列を自動的に作成します。最終 注:MapViewer のテーマをレンダリ ングする際は、常に SQL 問合せが実 行されます。 的な問合せの特定部分を制御する方法も用意されています。たとえば、ユーザー独 自の問合せ条件や条件を指定するのも 1 つの方法です。問合せを完全に制御する必 要がある場合、つまり完全なカスタムの SQL 問合せによって返される地理空間アプ MapViewer は、常にテーマの問合せ に空間フィルタ条件を追加します(た だし、空間フィルタ条件を追加しない ように明示的に指示した場合を除き ます)。空間フィルタ(索引)は、現 在の地図表示ウィンドウに基づいて 作成されます。 リケーション・データのみをレンダリングするよう MapViewer に指示する場合は、 動的テーマを使用する必要があります。動的テーマは、MapViewer のドキュメント では JDBC テーマとも呼ばれています。動的テーマは、マップ・リクエスト内に完 全なカスタムの問合せ文字列、および関連するスタイル情報を指定することによっ て、アプリケーション内で動的に作成されます。動的テーマの定義は、ユーザーの メタデータ表には格納されません。 動的なテーマは、その場で動的に作成された問合せの結果に基づいて特定のマッ プ・レイヤーまたは存在物を表示する場合に使用します。 MapViewer のテーマ(事前定義または動的)は、常に SQL 問合せによって駆動しま す。 MapViewer は、テーマをレンダリングする要求を受け取ると、常にテーマに関連づ けられたデータ表に対して SQL 問合せを実行し、問合せ結果セットとして返された レコードのみをレンダリングします。 事前定義テーマの問合せには、ユーザー指定の問合せ条件だけでなく、デフォルト で自動的に空間フィルタが追加されることも覚えておく必要があります。この空間 フィルタは、Oracle Locator および Oracle Spatial が空間索引付けによってネイティブ でサポートしており、通常は、現在の地図表示ウィンドウに基づいて作成されます。 空間フィルタはテーマの問合せに欠かせない部分です。テーマ問合せによって、結 果セットが、現在の表示ウィンドウ内のレコード、または現在の表示ウィンドウと やり取りするレコードだけに絞り込まれるためです。空間フィルタリングをおこな うことで、基盤となるデータ表の総レコード数が膨大な数であったとしても、それ とは無関係に、比較的予測可能なパフォーマンスと応答時間を実現できます。同じ 空間フィルタは動的テーマのカスタム問合せにも追加される点に注意してください。 ただし、動的テーマへの空間フィルタの追加は無効にすることもできます。以下に、 MapViewer によって事前定義テーマ用に作成した SQL 問合せ文字列の例を示します。 太字の部分が空間フィルタ条件です。 SELECT ROWID, GEOMETRY, 'M.AIRPORT', name, 'T.AIRPORT NAME', 1, 'rule#0', name, AREA_ID FROM AIRPORT_POINT WHERE MDSYS.SDO_FILTER(GEOMETRY, MDSYS.SDO_GEOMETRY(2003, 8265, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,1003, 3), MDSYS.SDO_ORDINATE_ARRAY(:mvqboxxl, :mvqboxyl, :mvqboxxh, :mvqboxyh)), 'querytype=WINDOW') = 'TRUE' 条件内の:mvqbox で始まる 4 つのバインド変数が、現在の地図表示ウィンドウを表し ています。これらの変数の内容は、実行時に確定します。 テーマの作成 この手順は、地理空間アプリケーション・データを操作する場合に必要です。 MapViewer のチュートリアルとデモに含まれているテーマにアクセスするには、 mvdemo.dmp をインポートし、テーマを含むメタデータをロードする SQL スクリプ トを実行してください。MVDEMO データセットには、地理空間アプリケーション・ データ表と事前定義のテーマが含まれています。MapViewer のホームページに直接 アクセスして、チュートリアルとデモを自由に試してみてください。SQL Developer Oracle Application Server MapViewer 入門 13 Oracle Corporation 発行「Oracle Fusion Middleware MapViewer Primer」の翻訳版です。 や SQL*Plus など、好みの SQL 問合せツールを使用して MVDEMO スキーマにログ インし、データ表およびテーマの定義を確認することもできます。テーマはすべて、 USER_SDO_THEMES システム・ビューに格納されます。次に、CUSTOMERS テー マの xml 定義を示します。 SQL> connect mvdemo/pwd4mvdemo SQL> set long 4000 SQL> select styling_rules from USER_SDO_THEMES where name='CUSTOMERS'; STYLING_RULES -----------------------------------------------------<?xml version="1.0" standalone="yes"?> <styling_rules > <hidden_column> <field column="name" name="Name"/> <field column="city" name="City"/> <field column="sales" name="Sales" /> </hidden_column> <rule > <features style="M.SMALL CIRCLE"> </features> <label column="NAME" style="T.RED STREET"> 1 </label> </rule> </styling_rules> 自分ですでに地理アプリケーション・データ表を作成している場合は、それらの表 に格納されているデータにスタイルを設定し、テーマを作成してレンダリングする ために必要な情報を MapViewer に提供する必要があります。この作業は、Map Builder を使用して簡単に実行できます。基本的な手順は以下のとおりです。 • Map Builder を起動します(詳細な手順については、ユーザーズ・ガイドを 参照)。 • 地理空間アプリケーション・データ表を含むデータベース・スキーマに接 続します。 • ナビゲーション・パネルで「Themes」ノードを右クリックし、「Create Geometry Theme」を選択します。 • ウィザードを使用して、ベース表の名前の指定、特定のレンダリング・ス タイルの選択などの手順を実行します。 • テーマ・エディタを使用して、必要に応じて新規テーマをカスタマイズし たり、テーマをプレビュー表示したりします。 ベース・マップ ベース・マップの概念はよく知られている場合がほとんどです。ベース・マップと は背景として使用されるマップであり、地図の対象存在物のコンテキスト情報を 各テーマが表示される際の地図の縮 尺しきい値または範囲を定義するこ とは重要です。これはベース・マップ 内に定義します。 ビューアに提示します。MapViewer におけるベース・マップは、単純に事前定義テー マの順序付けされたコレクションを指します。 ベース・マップ定義における重要な手順として、個々のテーマの地図縮尺に応じた 可視性を定義する手順があります。たとえば、地図が特定の縮尺でズームされたと きだけ特定テーマ(詳細な通りなど)を表示する必要がある場合は、縮尺の範囲と しきい値をそれらのテーマに割り当てます。こうした縮尺範囲情報は、ベース・マッ プ定義の一部として格納されます。 Oracle Application Server MapViewer 入門 14 Oracle Corporation 発行「Oracle Fusion Middleware MapViewer Primer」の翻訳版です。 新規のベース・マップを作成するには、Map Builder ユーティリティを起動し、Base Map ウィザードを使用してベース・マップに含めるテーマの一覧を選択および編集 して、テーマごとに縮尺範囲やそのほかのプロパティを変更します。 注:MapViewer のベース・マップは、Oracle Maps コンポーネントが使用する(ファ イル・システム・キャッシュに格納される)マップ・タイル・レイヤーの基盤にも なります。 タイル・レイヤー 注:マップ・タイル・レイヤーに関連 づけられたベース・マップを定義する 際に使用したテーマとスタイルを一 部でも変更した場合は、そのタイル・ レイヤーの作成時に指定したディス ク上の場所から既存のマップ・タイ ル・ファイルを削除し、ブラウザの キャッシュ・ファイルを消去する必要 があります。 4 つ目のタイプの地図メタデータは、マップ・タイル・レイヤー・メタデータです。 タイル・レイヤー・メタデータは、おもに Oracle Maps JavaScript API によって使用さ れます。具体的には、ドラッグ可能なマップ・タイル・レイヤーの情報(地理的境 界、座標系、ズーム・レベルの数、各ズーム・レベルでの個々のマップ・タイルの サイズとフォーマットなど)を、JavaScript API に提供します。 マップ・タイル・レイヤーは、通常 MapViewer のベース・マップと関連づけられま す。このタイプのマップ・タイル・レイヤーは"内部マップ・タイル・レイヤー"と呼 ばれることがよくあります。新規の内部マップ・タイル・レイヤーを作成するには、 MapViewer の管理ページにログインして、「Manage Map Tile Layers」タブを開きま す。タイル・レイヤーの作成ウィザードが開始します。ウィザードに従って作成作 業を進めることができます。 マップ・タイル・レイヤーに関連づけられたベース・マップを定義するために使用 したテーマとスタイルを一部でも変更した場合は、そのタイル・レイヤーの作成時 に指定したディスク上の場所から既存のマップ・タイル・ファイルを削除し、ブラ ウザのキャッシュ・ファイルを消去する必要があります。 サード・パーティの Web マッピング・サービスなどの外部ソースからマップ・タイ ルを取得するマップ・タイル・レイヤーを作成することもできます。たとえば、サー ド・パーティのマップ・サーバーに対して、OGC WMS リクエストを発行してすべ てのマップ・タイルを取得するマップ・タイル・レイヤーを作成できます。詳細は、 『MapViewer ユーザーズ・ガイド』を参照してください。 現在のリリースの Map Builder では、マップ・タイル・レイヤーを作成することはで きません。マップ・タイル・レイヤーを作成するには、MapViewer の Web Admin ペー ジを使用する必要があります。マップ・タイル・レイヤーの作成機能は、Map Builder の今後のバージョンでサポートされる予定です。 マップ・リクエストの発行と MapViewer とのやり取り MapViewer を起動したあとでデータソースが作成されると、MapViewer はマップ・ リクエストの送信をリスンします。また、Web サービスとして動作します。MapViewer が J2EE プラットフォーム上で動作していることを、アプリケーションとエンドユー ザーが認識することはありません。 アプリケーションとユーザーは、提供されている API の 1 つを使用して MapViewer にアクセスします。MapViewer は、ネイティブの低レベル API として、XML 要求/ 応答 API を提供しています。アプリケーションは、完全な XML マップ・リクエスト・ ドキュメントを作成し、リスン中の MapViewer サーバーに HTTP を介して送信して、 生 成 さ れ た 地 図 を 含 む 応 答 が 返 さ れ る の を 待 ち ま す 。 こ の API の 詳 細 は 、 『MapViewer ユーザーズ・ガイド』を参照してください。MapViewer ホームページで 「Requests」タブをクリックすると、テキスト領域にサンプルの XML マップ・リク Oracle Application Server MapViewer 入門 15 Oracle Corporation 発行「Oracle Fusion Middleware MapViewer Primer」の翻訳版です。 エストが表示されます。このリクエストの内容をデータソース、ベース・マップ、 テーマ定義に合わせて修正し、このページからサンプル XML リクエストを送信して ください。このページは、各種設定が正しくおこなわれているかどうかを迅速にテ ストするのに便利です。 ほとんどのアプリケーション、とくに Web 2.0 を使用したサービス・アプリケーショ ンでは、さらに高度でインタラクティブな API が必要になります。そうした場合に 適しているのが、Oracle Maps JavaScript API です。Oracle Maps JavaScript API は、Web ページ内に地図を埋め込むために使用する AJAX ベースのインタラクティブなマッ ピング API です。MapViewer には、Oracle Maps JavaScript API の使用方法を説明した 50 以上のチュートリアルが付属しています。これらのチュートリアルは、MapViewer ホームページの"Oracle Maps Tutorials"というリンクをクリックすると表示されます。 Java Swing ベースのアプリケーションを開発している場合は、MapViewer Java API を 使用します。MapViewer Java API も要求/応答モデルに基づく API です。詳細は、 『MapViewer ユーザーズ・ガイド』の Java Bean ベースの API の項を参照してくださ い。 MapViewer には、基本的な表示ツールとして使用できるデモがいくつか用意されて います。これらのデモは、すべて MapViewer ホームページの Demos タブに置いてあ ります。最初のデモ"Jview"では、ジオメトリ列を含む SQL 問合せを入力して、結果 をビジュアル表示できます。このデモを使用するには、データソース(問合せの対 象となるスキーマ)を選択し、SQL 問合せを最大 3 つまで入力します。問合せの結 果として表示される地図では、ズーム/パン機能を使用できます。別のデモ"Omaps" では、マップ・タイル・レイヤーを迅速にテストできます。このデモは JavaScript API を用いて書かれています。"mapclient"や"mapinit"など、Java API を使用した JSP ベー スのデモもあります。これらのデモを使用すると、マップ・リクエストを作成およ び送信できます。これらのデモのソースコードを自由に表示および変更してみてく ださい。また、これらのデモを使用することで、自サイトの環境を迅速に確認する こともできます。 付録 A:Oracle Locator および Oracle Spatial 入門 この項では、Oracle Locator と Oracle Spatial の基礎について簡単に説明します。詳細 は、『Oracle Spatial 開発者ガイド』を参照してください。書籍『Pro Oracle Spatial』 も参考になります。 ほとんどすべてのビジネス・アプリケーションでは、Oracle Locator(Oracle Database のすべてのエディションに無償で含まれている機能)があれば、地理空間マッピン グ要件を十分に満たすことができます。Oracle Locator は、点、線、ポリゴンなどの 形状データに対して、格納、索引付け、基本的な空間解析を実行します。Oracle Database Enterprise Edition の Oracle Spatial オプションは、複雑なデータ・モデル(永 続トポロジ、完全な接続情報と 3 次元データを使用したネットワーク/グラフなど) の格納、索引付け、解析機能をサポートする、Oracle Locator を拡張したツールです。 Oracle Spatial は、画像、グリッド・データ、衛星/航空写真などのジオラスタ・デー タの管理機能も備えています。 Oracle LocatorとOracle Spatialの機能および両者の相違点の詳細は、『Oracle Spatial 開 発者ガイド』またはOracle Technology Networkの次のページを参照してください。 http://www.oracle.com/technology/global/jp/products/spatial/ 地理空間アプリケーション・データは、ほかのデータと同様に、Oracle Database 表に 追加された SQL 型 SDO_GEOMETRY の列(ネイティブの Oracle オブジェクト・タ Oracle Application Server MapViewer 入門 16 Oracle Corporation 発行「Oracle Fusion Middleware MapViewer Primer」の翻訳版です。 イプ)に格納されます。この列には、地理空間存在物の形状や境界を定義する座標 が格納されます。 OFFICE という名前の簡単な表で考えてみます。この表には、ある会社の OFFICE 表 のすべてのフィールドに関する情報が格納されています。この表は、次の SQL 文で 作成できます。 CREATE TABLE office (ID number primary key, Name varchar2(128), Manager varhcar2(128), NumEmployee number, Location MDSYS.SDO_GEOMETRY); この表には、各オフィスについて、一意な ID、名前、マネージャー名、従業員数を 格納できます。また、会社の場所を緯度と経度のペアとして格納できる形状オブジェ クトも定義されています。緯度と経度のペアの代わりに、Oracle Locator と Oracle Spatial がジオメトリ・オブジェクトについてサポートしている数百の空間参照シス テムのいずれかを使用することもできます。座標値とそれに対応する空間参照シス テム ID は、すべての SDO_GEOMETRY オブジェクト内に常に存在しています。 Oracle Database 10g からは、SQL 文に現れる空間データ型に接頭辞"MDSYS"(すべて の Oracle Spatial データ型をホストするシステム・スキーマ)をつける必要がなくな りました。 では、実際のオフィス・レコードを上記の表に挿入してみます。 INSERT INTO office VALUES (1001, 'San Francisco Branch', 'John Doe', 45, MDSYS. SDO_GEOMETRY(2001, 8307,MDSYS.SDO_POINT_TYPE(-79, 37, NULL), NULL, NULL)) ); 太字で示した部分が、sdo_goemetry 列に格納されるポイント型のジオメトリ・オブ ジェクトを作成するためのコンストラクタである点に注意してください。その座標 値は(-79,37)、WGS84 測地参照システムでは SRID 値 8307 です。つまり、この会 社は経度-79、緯度 37 の位置に存在しているということです。2001 という値は、2 次 元のポイント・オブジェクトであることを示します。 以上が、地理空間存在物を通常の Oracle Database 表に格納し、その表にレコードを 追加する方法です。地理空間データを格納したら、各表に対して空間(および非空 間)問合せを実行するために、ジオメトリ列に空間索引を作成します。1 つの SQL 問合せに空間条件と非空間条件の両方が含まれるように問合せ条件を混ぜ合わせる こともできます。たとえば、現在位置から 5 マイル以内にあるすべての中華料理レ ストランを検索するといった具合です。 オラクルおよびサード・パーティ製のツールを使用して、(さまざまなファイル形 式で格納された)既存の地理空間アプリケーション・データを Oracle Database 内に インポートすることもできます。Oracle Map Builder ユーティリティは、形状ファイ ルをデータベースにインポートするための組込みウィザードを備えています。オラ クルのパートナー企業によって、さまざまなツールおよび共通データセットが提供 されています。詳細は、OTN の次のページを参照してください。 http://www.oracle.com/technology/products/spatial/htdocs/spatial_partners_data.html 適切なスタイルを適用したあとで、このデータやそのほかのパブリック・ソースま たは商用のソースから取得したデータを Oracle Database にロードし、MapViewer を 使用してオンライン地図として表示できます。 Oracle Application Server MapViewer 入門 17 Oracle Corporation 発行「Oracle Fusion Middleware MapViewer Primer」の翻訳版です。 Oracle Application Server MapViewer 入門 2009 年 3 月 著者:Liujian Qian 共著者:Bill Beauregard Oracle Corporation World Headquarters 500 Oracle Parkway Redwood Shores, CA 94065 U.S.A. 海外からのお問い合わせ窓口: 電話:+1.650.506.7000 ファクシミリ:+1.650.506.7200 www.oracle.com Copyright © 2009, Oracle.All rights reserved. 本文書は情報提供のみを目的として提供されており、ここに記載 される内容は予告なく変更されることがあります。本文書は、そ の内容に誤りがないことを保証するものではなく、また、口頭に よる明示的保証や法律による黙示的保証を含め、商品性ないし特 定目的適合性に関する黙示的保証および条件などのいかなる保 証および条件も提供するものではありません。オラクルは本文書 に関するいかなる法的責任も明確に否認し、本文書によって直接 的または間接的に確立される契約義務はないものとします。本文 書はオラクル社の書面による許可を前もって得ることなく、いか なる目的のためにも、電子または印刷を含むいかなる形式や手段 によっても再作成または送信することはできません。 Oracle、JD Edwards、PeopleSoft、および Siebel は、米国 Oracle Corporation およびその子会社、関連会社の登録商標です。その ほかの名称はそれぞれの会社の商標です。