ヘッダーをスキップ
Oracle® Fusion Middleware Oracle MapViewerユーザーズ・ガイド
11gリリース1(11.1.1)
B61387-01
  ドキュメント・ライブラリへ
ライブラリ
製品リストへ
製品
目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

6 MapViewer PL/SQL API


使用不可機能: MapViewer PL/SQL API:

MapViewer PL/SQL APIライブラリは使用不可になり、今後のドキュメントのリリースには含まれません。

かわりに、(A)サポートされているMapViewer APIのいずれか、(B)MapViewer JavaScript APIを持つOracle Application Express(APEX)のどちらかを使用することを推奨します。


この章では、MapViewerに対するPL/SQL Application Program Interface(API)について解説します。このAPIを構成しているPL/SQLパッケージSDO_MVCLIENTは、Oracleデータベースの内部からMapViewerサービスにアクセスするOracle Databaseユーザーを対象としたものです。このパッケージは、MapViewerのほとんどの機能を公開しており、中間層で動作する実際のMapViewerサーバーとの通信を、マップ・リクエストを発行するユーザーにかわってすべて処理します。

6.1 SDO_MVCLIENTパッケージのインストール

SDO_MVCLIENTパッケージは現在、デフォルトではインストールされません。このパッケージは、MapViewerで提供されるsdomvclh.sqlおよびsdomvclb.sqlという2つのSQLスクリプトを実行してインストールする必要があります。

インストールを実行するには、$MAPVIEWER_HOMEディレクトリの下にあるsqlディレクトリに移動してSQL*Plusを起動し、DBAロール(SYSTEMなど)を所持するユーザーとして接続した後、次のコマンドを入力します。

@sdomvclh
@sdomvclb

この2つのスクリプトを実行したら、SQL*Plusを終了して$MAPVIEWER_HOME/web/WEB-INF/libディレクトリに移動し、シェル・コマンドloadjavaを使用してmvclient.jarファイルをMDSYSスキーマにロードします。例を次に示します(パスワード・マネージャを利用したSYSTEMアカウントの使用を想定)。

loadjava -force -schema mdsys -grant PUBLIC -user system mvclient.jar
Password: password

これで、データベース・ユーザーがSDO_MVCLIENT PL/SQLパッケージを使用できるようになります(使用方法については6.2項を参照)。

6.2 SDO_MVCLIENTパッケージの使用方法

SDO_MVCLIENT PL/SQLパッケージは、HTTPプロトコルを介してMapViewerのリモート・サービスと通信します。データベース・セッションごとに、MapViewerクライアントのグローバル・ハンドル、および現行のマップ・リクエスト・オブジェクトとマップ・レスポンス・オブジェクトを維持します。

SDO_MVCLIENTパッケージの使用モデルはほとんど、MapViewer JavaBeanベースAPI(第4章を参照)と同じです。このPL/SQLパッケージでは、MapViewer JavaBeanベースAPI(oracle.lbs.mapclient.MapViewer)に実装されているほとんどのメソッドを利用でき、JavaBeanベースAPIで使用されるのと同じメソッド名およびパラメータを使用します。特定の関数またはプロシージャの使用方法および参照情報については、関連するJavaBeanベースAPIのメソッドおよびインタフェースに関する解説(第4章)を参照してください。

このPL/SQLパッケージを介してMapViewerのサービスにアクセスする場合の基本的なワークフローは、一部の初期設定を除き、JavaクライアントAPIの場合とほとんど同じです。主要な手順について次の各項で説明します。

  1. ネットワーク・アクセス権の付与(6.2.1項を参照)

  2. MapViewerクライアント・ハンドルの作成(6.2.2項を参照)

  3. マップ・リクエストの準備(6.2.3項を参照)

  4. MapViewerサービスに対するリクエストの送信(6.2.4項を参照)

  5. マップ・リクエストからの情報の抽出(オプション)(6.2.5項を参照)

6.2.1 ネットワーク・アクセス権の付与

SDO_MVCLIENTパッケージを使用する各データベース・ユーザーに、ネットワーク・アクセス権を付与します。たとえば、SCOTTというデータベース・ユーザーがこのパッケージを使用する必要がある場合、DBA権限を持つユーザーとして接続しているときに次の一般書式で文を入力します。

call dbms_java.grant_permission('SCOTT', 'SYS:java.net.SocketPermission',
                                'www.mycorp.com',
                                'connect, resolve' );

この例のwww.mycorp.comは、MapViewerサービスが動作しているホストに変更してください。

Oracle Databaseのバージョンによっては、データベース・ユーザーMDSYS(SDO_MVCLIENTパッケージを所有)にネットワーク・アクセス権を付与する必要もあります。その場合は、DBA権限を持つユーザーとして接続しているときに、次の一般書式で文を入力します。

call dbms_java.grant_permission('MDSYS', 'SYS:java.net.SocketPermission',
                                'www.mycorp.com:8888',
                                'connect, resolve' );

この例のwww.mycorp.comは、MapViewerサービスが動作しているホストに変更してください。

dbms_java.grant_permissionに対するコールは、影響を受けるデータベース・ユーザーごとに一度のみの実行でかまいません。この権限は、該当ユーザーにおける以降のすべてのデータベース・セッションで有効なままとなります。

6.2.2 MapViewerクライアント・ハンドルの作成

SDO_MVCLIENTパッケージの関数またはプロシージャを使用する場合は、各データベース・セッションを開始する前に、MapViewerクライアント・ハンドルを作成する必要があります。次の例では、MapViewerクライアント・ハンドルを作成します。

connect scott
Enter password: password
call sdo_mvclient.createmapviewerclient(
     'http://www.mycorp.com:8888/mapviewer/omserver') ;

この例では、現行セッション内で、MapViewerサービスのURL http://www.mycorp.com:8888/mapviewer/omserverに対する一意なMapViewerクライアント・ハンドルを作成しています。この例を使用するには、www.mycorp.comを、MapViewerサービスが動作しているホストに変更してください。

MapViewerクライアント・ハンドルの作成が終わったら、次の問合せを実行してMapViewerが正しく動作しているかどうかをチェックできます。

select sdo_mvclient.getdatasources() datasources from dual;

SQL関数sdo_mvclient.getdatasources()は、MapViewer PL/SQLパッケージAPIに含まれています。この関数は、実行されると、リモートのMapViewerサーバーに接続し、認識されている全データソースのリストを取得します。インストールに成功し、MapViewerサーバーが動作中であると、先の例の結果として次のような出力が得られます。つまり、MapViewerサーバーで定義されている一連のデータソースの名前が含まれる文字列配列が得られます。

DATASOURCES
--------------------------------------------------------------------------------
SDO_1D_STRING_ARRAY('mvdemo', 'wms')

6.2.3 マップ・リクエストの準備

PL/SQLパッケージ内の様々なメソッドをコールして、マップ・リクエストを準備します。このマップ・リクエストは最終的にMapViewerサーバーに送信されて処理されます。作成するマップの基本特性を指定したり、現行マップ・リクエストに一時スタイルや複数のテーマを追加したりできます。

例6-1では、データソースなどのマップ特性を設定し、動的に定義される色スタイルをマップ・リクエストに追加して、テーマを操作しています。

例6-1 マップ・リクエストの準備

call sdo_mvclient.setDataSourceName('mvdemo');
call sdo_mvclient.setImageFormat('PNG_URL');
call sdo_mvclient.setAntiAliasing('true');
call sdo_mvclient.setBaseMapName('qa_map') ;
call sdo_mvclient.setBox(-122.3615, 37.4266, -121.1615, 37.6266);
call sdo_mvclient.setDevicesize(500,400);
 
call sdo_mvclient.addColorStyle('colorst', 'blue', 'yellow', 100,100);
 
select sdo_mvclient.addJDBCTheme('mvdemo', 'theme1',
       'select geom from states where state_abrv = ''CA''',
       'geom', '8307', 'C.RED', null, null, 'FALSE') from dual ;

6.2.4 MapViewerサービスへのリクエストの送信

リモートのMapViewerサーバーに対して処理する現行マップ・リクエストを効率よく送信する例を次に示します。この文はリクエストがサーバーで処理された後に返されます。

select sdo_mvclient.run() from dual;

また、sdo_mvclient.zoomIn()sdo_mvclient.zoomOut()などのメソッドを使用すると、ズーム処理されたマップを取得できます。

6.2.5 マップ・リクエストからの情報の抽出

生成されたマップ画像のURL文字列を抽出する例を次に示します。

select sdo_mvclient.getgeneratedMapImageURL() from dual;

マップ画像のURLを取得すると、データベース表に対する画像のフェッチや格納、その他の情報を持つマップのHTMLページへの表示など、様々な処理を実行できます。