ヘッダーをスキップ
Oracle Application Server MapViewerユーザーズ・ガイド
10g(10.1.3.1.0)
B40016-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

3 OracleAS MapViewerのmapリクエストXML API

この章では、XML形式のmapリクエストをOracleAS MapViewerに発行する方法と、mapリクエスト(入力)およびレスポンス(出力)に関するXML Document Type Definition(DTD)について説明します。XMLは、HTTPプロトコルを使用した構造化文書の送信に広く使用されています。HTTPリクエスト(GETまたはPOSTメソッド)が使用される場合、リクエストにxml_requestというパラメータがあり、この値がリクエスト用のXML文書を含む文字列であると想定されます。

(OracleAS MapViewer XML APIは、mapリクエストの他に、新規データソースの追加などの管理リクエストに使用できます。管理リクエストについては、第7章を参照してください。)

1.1.1項図1-1で示すように、OracleAS MapViewerの基本的なアクション・フローでは、クライアントがOracleAS MapViewerのリモート・インスタンスを検索して、このインスタンスに対してバインドし、mapリクエストを送信し、さらにOracleAS MapViewerインスタンスによって戻されたmapレスポンスを処理します。

OracleAS MapViewerサーブレットへのリクエストの書式は、次のとおりです。

http://hostname[:port]/MapViewer-servlet-path?xml_request=xml-request

この書式の意味は次のとおりです。

入力XMLは、すべてのリクエストに必須です。出力は、リクエストの内容によって異なります。レスポンスは、XML文書またはユーザーがリクエストした(生成画像)ファイルが含まれるバイナリ・オブジェクトのいずれかになります。

入力リクエストでは、データソースの指定は必須であり、次の1つ以上を指定できます。

Map Builderツール(第7章を参照)を使用して、ベース・マップ、テーマおよびスタイル(個々の記号表現)の定義を管理できます。

現在のリリースでは、OracleAS MapViewerはmapリクエストの位置を識別する座標ペアのみを使用できます。マップに対する直接入力として郵便の住所を使用することはできません。

この章ではまず、mapリクエストの例(3.1項を参照)をいくつか示した後、リクエストおよびその他の操作に関する次のXML DTDについて詳細に説明します。

3.1 mapリクエストの例

この項では、mapリクエストの例を示します。ここでは、概念、要素および属性(詳細は3.2項を参照)について述べています。次の例を示す項で構成されています。

3.1.1 単純なmapリクエスト

例3-1は、きわめて単純なmapリクエストです。このリクエストでは、mvdemoというデータソースのブランクの青い画像で構成され、最上部にHello Worldという文字列が示されたマップがリクエストされます。(この特定のmapリクエストによってデータソースからマップ・データが取得されない場合でも、mapリクエストにはdatasource属性が必要です。)

例3-1 単純なmapリクエスト("Hello World")

<?xml version="1.0" standalone="yes"?>
<map_request  title="Hello World" datasource = "mvdemo"/>

3.1.2 動的に定義されるテーマを含むmapリクエスト

例3-2は、動的に定義されるテーマが1つ含まれる単純なmapリクエストです。このリクエストでは、COUNTIES表からのすべてのOracle Spatialジオメトリのマップがリクエストされます。

例3-2 動的に定義されるテーマを含む単純なmapリクエスト

<?xml version="1.0" encoding="UTF-8" ?>
<map_request datasource="lbs_data">
  <themes>
    <theme name="t1">
      <jdbc_query spatial_column = "GEOM"
                  datasource = "lbs_data">
      SELECT geom FROM counties
      </jdbc_query>
    </theme>
  </themes>
</map_request>

3.1.3 ベース・マップ、中心および追加の事前定義済テーマを含むmapリクエスト

例3-3では、結果のマップについて指定された中心を含むマップをリクエストし、ベース・マップ(basemap="us_base")に含まれる事前定義済テーマに加えて、レンダリングされる事前定義済テーマ(poi_theme_us_restaurants)を指定しています。

例3-3 ベース・マップ、中心および追加の事前定義済テーマを含むmapリクエスト

<?xml version="1.0" encoding="UTF-8" ?>
<map_request datasource="lbs_data" title="LBS CUSTOMER MAP"
      basemap="us_base" width="500" height="375"
      bgcolor="#a6cae0" format="GIF_URL">
   <center size="1">
      <geoFeature typeName="mapcenter" label="Motel 1" text_style="T.MOTEL"
         render_style="M.MOTEL" radius="300">
         <geometricProperty>
            <Point>
              <coordinates>-122.2615, 37.5266</coordinates>
            </Point>
         </geometricProperty>
      </geoFeature>
   </center>
   <srs>SDO:8265</srs>
   <themes>
      <theme name="poi_theme_us_restaurants"/>
   </themes>
</map_request>

例3-3に関する注意は、次のとおりです。

  • basemapが指定されているため、OracleAS MapViewerは、指定されたテーマ(poi_theme_us_restaurants)を描画する前に、そのベース・マップのすべての事前定義済テーマを最初に描画します。

  • M.MOTELスタイルのマーカーおよびT.MOTELスタイルのラベルMotel 1によって中心が描画されます。

  • この中心を囲んで半径300mの円が描画されます。

3.1.4 中心、ベース・マップ、動的に定義されるテーマおよびその他の地物を含むmapリクエスト

例3-4では、指定された中心、theme_lbs_customersという事前定義済テーマ、sales_by_regionという動的に定義されるテーマ、およびベース・マップus_base_road内のすべてのベース・テーマに、売上高が最高の地域を表すポリゴンおよびポイントという2つの地物を追加したマップをリクエストしています。リクエストしたマップはOracleAS MapViewerホストに格納され、そのGIF画像に対するURL(format="GIF_URL")はリクエスタに戻されます。

例3-4 中心、ベース・マップ、動的に定義されるテーマおよびその他の地物を含むmapリクエスト

<?xml version="1.0" encoding="UTF-8" ?>
<map_request datasource="lbs_data2" title="LBS CUSTOMER MAP 2"
      width="400" height="300" format="GIF_URL" basemap="us_base_road">
   <center size="1.5">
      <geoFeature typeName="nil">
         <geometricProperty>
            <Point>
              <coordinates>-122.2615, 37.5266</coordinates>
            </Point>
         </geometricProperty>
      </geoFeature>
   </center>
   <themes>
      <theme name="theme_lbs_customers"/>
      <theme name="sales_by_region">
         <jdbc_query spatial_column ="region"
                           label_column="manager"
                           render_style="V.SALES COLOR"
                           label_style="T.SMALL TEXT"
                           jdbc_host="data.my_corp.com"
                           jdbc_sid="orcl"
                           jdbc_port="1521"
                           jdbc_user="scott"
                           jdbc_password="tiger"
                           jdbc_mode="thin"
            > select region, sales, manager from my_corp_sales_2001
         </jdbc_query>
      </theme>
   </themes>
   <geoFeature typeName="nil" label="TopSalesRegion"
         text_style="9988" render_style="2837">
      <geometricProperty>
         <Polygon srsName="SDO:8265">
            <outerBoundaryIs>
               <LinearRing>
                  <coordinates>42.9,71.1 43.2,72.3 39.2,73.0 39.0,
                  73.1 42.9,71.1</coordinates>
               </LinearRing>
            </outerBoundaryIs>
         </Polygon>
      </geometricProperty>
   </geoFeature>
   <geoFeature render_style="1397" text_style="9987">
      <geometricProperty>
         <Point>
            <coordinates>-122.5615, 37.3266</coordinates>
         </Point>
      </geometricProperty>
   </geoFeature>
</map_request>

例3-4では、sales_by_regionは動的に定義されるテーマです。動的に定義されるテーマについては、3.2.15項および3.2.9項を参照してください。

3.1.5 属性値および動的に定義される可変マーカー・スタイルを含むポイント地物のmapリクエスト

例3-5は、動的に定義される可変マーカー・スタイルを含むポイント地物をレンダリングするためのmapリクエストを示しています。attribute_values属性は、可変マーカー・スタイルに定義されているように、適切なバケット(値が分類される範囲用)を検索するために使用される値を定義します。

例3-5 属性値および動的に定義される可変マーカー・スタイルを含むポイント地物のmapリクエスト

<?xml version="1.0" standalone="yes"?>
<map_request
  title="Point Features with Variable Marker Style"
  datasource="mvdemo"
  srid="0"
  width="500"
  height="375"
  bgcolor="#a6caf0"
  antialiase="true"
  format="PNG_URL">
  <center size="19.2">
    <geoFeature>
      <geometricProperty typeName="center">
        <Point>
          <coordinates>-116.65,38.92</coordinates>
        </Point>
      </geometricProperty>
    </geoFeature>
  </center>
  <geoFeature
     render_style="varmarkerpf"
     attribute_values="50000.0">
    <geometricProperty>
      <Point>
        <coordinates>-112.0,43.0</coordinates>
      </Point>
    </geometricProperty>
  </geoFeature>
  <geoFeature
     render_style="varmarkerpf"
     attribute_values="125000.0">
    <geometricProperty>
      <Point>
        <coordinates>-123.0,40.0</coordinates>
      </Point>
    </geometricProperty>
  </geoFeature>
  <geoFeature
     render_style="varmarkerpf"
     attribute_values="200000.0">
    <geometricProperty>
      <Point>
        <coordinates>-116.64,38.92</coordinates>
      </Point>
    </geometricProperty>
  </geoFeature>
  <geoFeature
     render_style="varmarkerpf"
   attribute_values="300000.0">
    <geometricProperty>
      <Point>
        <coordinates>-112.0,35.0</coordinates>
      </Point>
    </geometricProperty>
  </geoFeature>
  <styles>
    <style name="varmarkerpf">
        <AdvancedStyle>
           <VariableMarkerStyle basemarker="mkcircle" startsize="10"
                                increment="5">
             <Buckets>
             <RangedBucket label="less than 100k" high="100000.0"/>
             <RangedBucket label="100k - 150k" low="100000.0" high="150000.0"/>
             <RangedBucket label="150k - 250k" low="150000.0" high="250000.0"/>
             <RangedBucket label="250k - 350k" low="250000.0" high="350000.0"/>
              </Buckets>
           </VariableMarkerStyle>
        </AdvancedStyle>
    </style>

    <style name="mkcircle">
      <svg>
        <g class="marker" style="stroke:blue;fill:red;">
          <circle r="20"/>
          </g>
        </svg>
    </style>

  </styles>
</map_request>

3.1.6 イメージ・テーマを含むmapリクエスト

例3-6では、他のすべての標準的なベクトル・データの下にイメージ・テーマが表示されるマップをリクエストしています。イメージ・テーマは、mapリクエスト内の<theme>要素の一部として、<jdbc_image_query>要素内に指定されています。(イメージ・テーマの詳細は、2.3.5項を参照してください。)

例3-6 イメージ・テーマを含むmapリクエスト

<?xml version="1.0" encoding="UTF-8" ?>
<map_request datasource="lbs_data" title="LBS Image MAP"
  basemap="us_roads" format="GIF_STREAM">
    <center size="1">
      <geoFeature>
        <geometricProperty>
          <Point>
            <coordinates>-122.2615, 37.5266</coordinates>
          </Point>
        </geometricProperty>
      </geoFeature>
    </center>
  <themes>
    <theme name="anImageTheme">
      <jdbc_image_query  image_format="ECW"
                          image_column="image"
                          image_mbr_column="img_extent"
                          jdbc_srid="33709"
                          datasource="lbs_data">
        SELECT image, img_extent, image_id FROM my_images
      </jdbc_image_query>
    </theme>
  </themes>
</map_request>

OracleAS MapViewerは、例3-6に示すリクエストを次のように処理します。

  1. OracleAS MapViewerは、現在のマップ・ウィンドウ・コンテキストでユーザー指定の問合せ(SELECT image, img_extent, image_id FROM my_images)を実行し、画像データを取得します。

  2. OracleAS MapViewerは、すべての登録済イメージ・レンダラの内部リストで、ECW形式(image_format="ECW")をサポートするレンダラがあるかどうかをチェックします。Oracleが提供するOracleAS MapViewerはECW形式をサポートしていないため、付録Cで説明するように、この形式をサポートするカスタム・イメージ・レンダラを実装し、登録する必要があります。

  3. OracleAS MapViewerはrenderImagesメソッドをコールし、ユーザー指定の問合せから取得された画像データが、パラメータの1つとしてこのメソッドに渡されます。

  4. OracleAS MapViewerは、リクエストされたベクトル・データを取得し、レンダリングされた画像の上にこのデータをレンダリングします。

3.1.7 map凡例の画像のみに関するmapリクエスト

例3-7では、map凡例の画像のみを含むマップをリクエストしますが、空間データはレンダリングしません。この例の凡例は、都市、州の境界線、州間高速道路および郡の人口密度の識別に使用する記号表現について説明しています。(map凡例については、3.2.11項を参照してください。)

例3-7 map凡例の画像のみに関するmapリクエスト

<?xml version="1.0" standalone="yes"?>
<map_request
             datasource = "mvdemo"
             format="PNG_URL">

  <legend bgstyle="fill:#ffffff;stroke:#ff0000" profile="MEDIUM" position="SOUTH_EAST">
          <column>
            <entry text="Map Legend" is_title="true"/>
            <entry style="M.STAR" text="center point"/>
            <entry style="M.CITY HALL 3" text="cities"/>
            <entry is_separator="true"/>
            <entry style="C.ROSY BROWN STROKE" text="state boundary"/>
            <entry style="L.PH" text="interstate highway"/>
            <entry text="County population:"/>
            <entry style="V.COUNTY_POP_DENSITY" tab="1"/>
          </column>
  </legend>

</map_request>

例3-7のように、map凡例画像のみを生成すると、格納されたmap凡例画像を実際の表示マップとは別にWebページに表示する場合に、処理時間を短縮できます。これによって、mapリクエストが発行されるたびに凡例を生成する必要がなくなります。

3.1.8 データSRIDと異なるSRIDを含むmapリクエスト

例3-8では、郡テーマのデータに関連付けられた座標系(経度/緯度に対するjdbc_srid="8265"、NAD 83)とは異なる座標系(米国のsrid="32775"、正積図法)で表示されるマップをリクエストしています。その結果、OracleAS MapViewerではレンダリング・プロセス中にデータSRIDのすべてのジオメトリをmapリクエストSRIDに変換します。

テーマ・データに関連付けられた座標系がない場合、OracleAS MapViewerではデータがmapリクエストの座標系に関連付けられていると想定されるため、変換は行われません。

例3-8 データSRIDと異なるSRIDを含むmapリクエスト

<?xml version="1.0" standalone="yes"?>
<map_request
  title="US Counties: Equal-Area Projection (SRID=32775)"
  datasource="mvdemo"
  srid="32775"
  width="500"
  height="375"
  bgcolor="#a6caf0"
  antialiase="true"
  format="PNG_URL">
  <center size="4000000.0">
    <geoFeature>
      <geometricProperty typeName="center">
        <Point>
          <coordinates>-218191.9643,1830357.1429</coordinates>
        </Point>
      </geometricProperty>
    </geoFeature>
  </center>
  <themes>
    <theme name="county_th" user_clickable="false">
       <jdbc_query
         spatial_column="geom"
         render_style="C.COUNTIES"
         jdbc_srid="8265"
         datasource="mvdemo"
         asis="false">select geom from counties</jdbc_query>
     </theme>
  </themes>
</map_request>

3.1.9 円グラフ・テーマを使用したmapリクエスト

この項では、円グラフ・テーマによるテーマ・マッピングの使用方法を示します。結果のマップでは、各郡に円グラフが表示され、各区分のサイズは、郡の指定された世帯収入レベル・カテゴリ(低、中または高)に属する人口の比率を反映したものになります。

基本的な手順は次のとおりです。

  1. 使用する円グラフの特性を定義する拡張スタイルを作成します。次の例では、V.PIECHART1という拡張スタイルを作成します。

    INSERT INTO user_sdo_styles VALUES (
    'V.PIECHART1', 'ADVANCED', null,
    '<?xml version="1.0" ?>
    <AdvancedStyle>
            <PieChartStyle pieradius="10">
                    <PieSlice name="low"   color="#ff0000"/>
                    <PieSlice name="medium"  color="#ffff00"/>
                    <PieSlice name="high" color="#00ff00"/>
            </PieChartStyle>
    </AdvancedStyle>',  null, null);
    
    

    この例で定義したスタイルが地理的地物に適用されると、3つの区分を持つ円グラフが作成されます。pieradius属性は、各円グラフのサイズをピクセル単位で指定します。各区分(<PieSlice>要素)には色が定義されています。各区分のname属性は、OracleAS MapViewerでは無視されます。

  2. 次の例のように、作成したスタイルを使用した新規テーマを作成します。

    INSERT INTO user_sdo_themes VALUES (
    'THEME_PIE_CHART', null, 'COUNTIES', 'GEOM',
    '<?xml version="1.0" standalone="yes"?>
    <styling_rules>
      <rule column="INC_LOW,INC_MED,INC_HIGH">
        <features style="C.US MAP YELLOW">  </features>
        <label  column="''dummy''" style="V.PIECHART1"> 1 </label>
      </rule>
    </styling_rules>');
    
    

    この例のテーマ定義では、スタイリング・ルールの<label>要素でstyle="V.PIECHART1"と指定しており、この円グラフ・スタイル(手順1で作成したスタイル)がマップに表示される各ジオメトリへのラベル付けに使用されることを示します。

    列属性(この例ではcolumn="''dummy''")は、結果のマップに影響しない場合にも必要です。column属性の値には、dummyまたはその他の文字列を使用でき、この値の前後を2つの一重引用符で囲む必要があります。

    V.PIECHART1スタイルには3つの区分が定義されているため、前述の例ではCOUNTIES表の3つの列の名前を指定する必要があり、これらの列は数値データ型である必要があります。列名はINC_LOW、INC_MEDおよびINC_HIGHです。これらの列は、円グラフの各区分のサイズの決定に使用される値を提供します。

  3. 作成したテーマを使用したmapリクエストを発行します。例3-9では、手順2で作成したTHEME_PIE_CHARTテーマを使用したマップをリクエストしています。

例3-9 円グラフ・テーマを使用したmapリクエスト

<?xml version="1.0" standalone="yes"?>
<map_request datasource = "mvdemo"
             format="PNG_STREAM">
  <themes>
    <theme name="THEME_PIE_CHART"/>
  </themes>
</map_request>

図3-1は、例3-9のmapリクエストから生成された表示の一部を示しています。

図3-1 円グラフ・テーマを使用したmap表示

図3-1の説明は図の下
「図3-1 円グラフ・テーマを使用したmap表示」の説明

mapリクエストを発行する際に、動的(JDBC)テーマに円グラフ・スタイルも使用できます。円グラフ・スタイルで必要とされる属性列を識別する必要があるため、mapリクエストではJDBCテーマに関するSQL全問合せを指定する必要があります。SDO_GEOMETRY列またはラベル列ではないSELECTリスト内の列は、拡張スタイルで使用できる属性列であるとみなされます。

例3-10は、円グラフ・スタイルを使用したJDBCテーマを含むリクエストのサンプルです。SQL問合せ(SELECT geom, 'dummy', sales, service, training FROM support_centers)は、テーマ定義に含まれます。

例3-10 円グラフ・スタイルを使用したJDBCテーマ

<?xml version="1.0" standalone="yes"?>
<map_request
             basemap="CA_MAP"
             datasource = "mvdemo"
             format="PNG_URL">
  <themes>
    <theme name="support_center">
     <jdbc_query spatial_column="geom" datasource="tilsmenv"
                                label_column="dummy",
                                label_style="V.PIECHART1">
                SELECT geom, 'dummy', sales, service, training
                FROM support_centers
        </jdbc_query>
    </theme>
  </themes>
</map_request>

3.1.10 比率スケールおよび複数テーマ・スケール・モードを使用したmapリクエスト

例3-11では、中心および比率スケールを指定してマップ領域を定義するマップをリクエストしています。使用しているテーマは2つであり、それらはTHEME_US_COUNTIES1という事前定義済テーマ(デフォルトの画面インチ・スケール・モードを使用)およびSTATES_THというJDBCテーマ名(比率モードを使用)です。

例3-11 比率スケールおよび複数テーマ・スケール・モードを使用したmapリクエスト

<?xml version="1.0" standalone="yes"?>
<map_request
title="States (ratio), counties (screen inch), center and scale"
datasource="tilsmenv"
width="500"
height="400"
bgcolor="#a6caf0"
antialiase="true"
format="PNG_URL"
>
<center scale="5000000">
  <geoFeature>
    <geometricProperty typeName="center">
      <Point>
        <coordinates>-90.0,32.0</coordinates>
      </Point>
    </geometricProperty>
  </geoFeature>
</center>
<themes>
  <theme name="STATES_TH" min_scale="5.0E7" max_scale="1.0E7" scale_mode="ratio">
     <jdbc_query
       label_column="STATE"
       spatial_column="geom"
       label_style="T.STATE NAME"
       render_style="C.COUNTIES"
       jdbc_srid="8265"
       datasource="tilsmenv"
       asis="false">select geom,state from states
     </jdbc_query>
   </theme>
  <theme name="THEME_US_COUNTIES1" min_scale="2.286" />
</themes>
</map_request>

3.1.11 OracleAS MapViewerを使用したJavaプログラム

例3-12では、OracleAS MapViewerにXMLリクエストを送信し、OracleAS MapViewerからレスポンスを受信するために、java.netパッケージを使用しています。(ただし、多くのプログラマにとっては、第4章で説明するJavaBeanベースのAPIまたは第5章で説明するJSPタグ・ライブラリを使用した方が便利です。)

例3-12 OracleAS MapViewerと対話するJavaプログラム

import java.net.*;
import java.io.*;

/**
 * A sample program that shows how to interact with OracleAS MapViewer
 */
public class MapViewerDemo
{
    private HttpURLConnection mapViewer = null;

    /**
     * Initializes this demo with the URL to the OracleAS MapViewer server.
     * The URL is typically http://my_corp.com:8888/mapviewer/omserver.
     */
    public MapViewerDemo(String mapViewerURLString)
    {
        URL url;

        try
        {
            url = new URL(mapViewerURLString);
            mapViewer = (HttpURLConnection) url.openConnection();
            mapViewer.setDoOutput(true);
            mapViewer.setDoInput(true);
            mapViewer.setUseCaches(false);
        }
        catch (Exception e)
        {
            e.printStackTrace(System.err);
            System.exit(1);
        }
    }

    /**
     * Submits an XML request to OracleAS MapViewer.
     * @param xmlreq   the XML document that is an OracleAS MapViewer request
     */
    public void submitRequest(String xmlreq)
    {
        try
        {
            mapViewer.setRequestMethod("POST");  //Use HTTP POST method.
            OutputStream os = mapViewer.getOutputStream();
            //OracleAS MapViewer expects to find the request as a parameter
            //named "xml_request".
            xmlreq = "xml_request="+URLEncoder.encode(xmlreq);
            os.write(xmlreq.getBytes());
            os.flush();
            os.close();
        }
        catch (Exception e)
        {
            e.printStackTrace(System.err);
            System.exit(1);
        }
    }

    /**
     * Receives an XML response from OracleAS MapViewer.
     */
    public String getResponse()
    {
        ByteArrayOutputStream content = new ByteArrayOutputStream();
        InputStream is = null;
        try
        {
            is = mapViewer.getInputStream();
            int c;
            while ((c = is.read()) != -1)
              content.write(c);
            is.close();
            content.flush();
            content.close();
            return content.toString();
        }
        catch (Exception e)
        {
            e.printStackTrace(System.err);
            return null;
        }
    }

    // A simple main program that sends a list_data_sources XML
    // request to OracleAS MapViewer through HTTP POST
    public static void main(String[] args)
    {
        if(args.length<1)
        {
          System.out.println("Usage: java  MapViewerDemo <mapviewer url>");
          System.out.println("Example: java MapViewerDemo http://my_corp.com/mapviewer/omserver");
          System.exit(1);
        }

        // A sample XML request for OracleAS MapViewer
        String
        listDataSources = "<?xml version=\"1.0\" standalone=\"yes\"?>" +
                          "  <non_map_request>" +
                          "    <list_data_sources/>" +
                          "  </non_map_request>";

        MapViewerDemo tester = null;
        tester = new MapViewerDemo(args[0]);
        System.out.println("submitting request:\n"+listDataSources);
        tester.submitRequest(listDataSources);
        String response = tester.getResponse();
        System.out.println("response from MapViewer: \n" + response);
    }
}

3.1.12 OracleAS MapViewerを使用したPL/SQLプログラム

例3-13は、XMLリクエストをOracleAS MapViewerサーバーに送信するサンプルPL/SQLプログラムです。この例は、Oracle9iリリース1(9.0.1)以上でのみ有効です。

例3-13 OracleAS MapViewerと対話するPL/SQLプログラム

set serverout on size 1000000;

--
--  Author: Clarke Colombo
--
declare

    l_http_req   utl_http.req;
    l_http_resp  utl_http.resp;
    l_url        varchar2(4000):=  'http://my_corp.com:8888/mapviewer/omserver';


    l_value      varchar2(4000);
    img_url      varchar2(4000);
    response     sys.xmltype;

    output       varchar2(255);

    map_req      varchar2(4000);

begin

  utl_http.set_persistent_conn_support(TRUE);

  map_req := '<?xml version="1.0" standalone="yes"?>
  <map_request  title="MapViewer Demonstration"
                datasource="mvdemo"
                basemap="course_map"
                width="500"
                height="375"
                bgcolor="#a6cae0"
                antialiasing="false"
                format="GIF_URL">
    <center size="5">
      <geoFeature>
        <geometricProperty>
          <Point>
            <coordinates>-122.2615, 37.5266</coordinates>
          </Point>
        </geometricProperty>
      </geoFeature>
    </center>
  </map_request>';

  l_http_req := utl_http.begin_request(l_url, 'POST', 'HTTP/1.0');

  --
  -- Sets up proper HTTP headers.
  --
  utl_http.set_header(l_http_req, 'Content-Type', 'application/x-www-form-urlencoded');
  utl_http.set_header(l_http_req, 'Content-Length', length('xml_request=' || map_req));
  utl_http.set_header(l_http_req, 'Host', 'my_corp.com');
  utl_http.set_header(l_http_req, 'Port', '8888');
  utl_http.write_text(l_http_req, 'xml_request=' || map_req);
  --
  l_http_resp := utl_http.get_response(l_http_req);

  utl_http.read_text(l_http_resp, l_value);

  response := sys.xmltype.createxml (l_value);

  utl_http.end_response(l_http_resp);

  img_url := response.extract('/map_response/map_image/map_content/@url').getstringval();

  dbms_output.put_line(img_url);

end;
/

3.2 mapリクエストのDTD

mapリクエストの完全なDTDを次に示します。各要素や属性を説明する参照項目が続きます。

<?xml version="1.0" encoding="UTF-8"?>
<!-- <box> is defined in OGC GML v1.0 -->
<!ELEMENT map_request ((box | center | bounding_themes)?, srs?, legend?, themes?,
  styles?, geoFeature*)>
<!ATTLIST map_request
  datasource    CDATA #REQUIRED
  srid          CDATA #IMPLIED
  basemap       CDATA #IMPLIED
  width         CDATA #IMPLIED
  height        CDATA #IMPLIED
  antialiasing  (TRUE|FALSE) "FALSE"
  imagescaling  (TRUE|FALSE) "TRUE"
  format        (GIF|GIF_URL|GIF_STREAM|JAVA_IMAGE|
                 PNG_STREAM|PNG_URL|PNG8_STREAM|PNG8_URL|
                 JPEG_STREAM|JPEG_URL|
                 SVG_STREAM|SVGZ_STREAM|SVGTINY_STREAM|
                 SVG_URL|SVGZ_URL|SVGTINY_URL) "GIF_URL"
  transparent   (TRUE|FALSE) "FALSE"
  title         CDATA #IMPLIED
  bgcolor       (CDATA) "#A6CAF0"
  bgimage       CDATA #IMPLIED
  zoomlevels    CDATA #IMPLIED
  zoomfactor    CDATA #IMPLIED
  zoomratio     CDATA #IMPLIED
  initscale     CDATA #IMPLIED
  navbar        (TRUE|FALSE) "TRUE"
  infoon        (TRUE|FALSE) "TRUE"
  onclick       CDATA #IMPLIED
  onmousemove   CDATA #IMPLIED
  rasterbasemap (TRUE|FALSE) "FALSE"
  onrectselect  CDATA #IMPLIED
  onpolyselect  CDATA #IMPLIED
  use_cached_basemap (TRUE|FALSE) "FALSE"
  snap_to_cache_scale (TRUE|FALSE) "FALSE"
 >
<!ELEMENT center (geoFeature)>
<!ATTLIST center
    size CDATA #REQUIRED
>
<!ELEMENT box (coordinates) >
<!ATTLIST box
    ID CDATA #IMPLIED
    srsName CDATA #REQUIRED
>
<!ELEMENT bounding_themes (#PCDATA) >
<!ATTLIST bounding_themes
    border_margin          CDATA  #IMPLIED
    preserve_aspect_ratio  CDATA  "TRUE"
    size_hint              CDATA  #IMPLIED
>
<!ELEMENT srs (#PCDATA) >

<!ELEMENT themes (theme+) >
<!ELEMENT theme (jdbc_query | jdbc_image_query | jdbc_georaster_query
                            | jdbc_network_query | jdbc_topology_query
                            | map_cache_theme
)? >
<!ATTLIST theme
    name                  CDATA #REQUIRED
    datasource            CDATA #IMPLIED
    max_scale             CDATA #IMPLIED
    min_scale             CDATA #IMPLIED
    label_always_on       (TRUE|FALSE) "FALSE"
    fast_unpickle         (TRUE|FALSE) "TRUE"
    mode                  CDATA #IMPLIED
    min_dist              CDATA #IMPLIED
    fixed_svglabel        (TRUE|FALSE) "FALSE"
    visible_in_svg        (TRUE|FALSE) "TRUE"
    selectable_in_svg     (TRUE|FALSE) "FALSE"
    part_of_basemap       (TRUE|FALSE) "FALSE"
    simplify_shapes       (TRUE|FALSE) "TRUE"
    onclick               CDATA #IMPLIED
    onmousemove           CDATA #IMPLIED
    onmouseover           CDATA #IMPLIED
    onmouseout            CDATA #IMPLIED
    workspace_name        CDATA #IMPLIED
    workspace_savepoint   CDATA #IMPLIED
    workspace_date        CDATA #IMPLIED
    workspace_date_format CDATA #IMPLIED
>
<!ELEMENT jdbc_query (#PCDATA, hidden_info?)>
<!ATTLIST jdbc_query
    asis               (TRUE|FALSE) "FALSE"
    spatial_column     CDATA #REQUIRED
    key_column         CDATA #IMPLIED
    label_column       CDATA #IMPLIED
    label_style        CDATA #IMPLIED
    render_style       CDATA #IMPLIED
    datasource         CDATA #IMPLIED
    jdbc_host          CDATA #IMPLIED
    jdbc_port          CDATA #IMPLIED
    jdbc_sid           CDATA #IMPLIED
    jdbc_user          CDATA #IMPLIED
    jdbc_password      CDATA #IMPLIED
    jdbc_srid          CDATA #IMPLIED
    jdbc_mode          (thin|oci8) "thin"
>
<!ELEMENT hidden_info (field+)>
<!ELEMENT field (#PCDATA)>
<!ATTLIST field
    column  CDATA #REQUIRED
    name    CDATA #IMPLIED
>
<!ELEMENT jdbc_image_query (#PCDATA) >
<!ATTLIST jdbc_image_query
    asis              (TRUE|FALSE) "FALSE"
    image_format      CDATA  #REQUIRED
    image_column      CDATA  #REQUIRED
    image_mbr_column  CDATA #REQUIRED
    image_resolution  CDATA #IMPLIED
    image_unit        CDATA #IMPLIED
    datasource        CDATA #IMPLIED
    jdbc_host         CDATA #IMPLIED
    jdbc_port         CDATA #IMPLIED
    jdbc_sid          CDATA #IMPLIED
    jdbc_user         CDATA #IMPLIED
    jdbc_password     CDATA #IMPLIED
    jdbc_srid         CDATA #IMPLIED
    jdbc_mode         (thin|oci8) "thin"
>
<!ELEMENT jdbc_georaster_query (#PCDATA) >
<!ATTLIST jdbc_georaster_query
    asis              (TRUE|FALSE) "FALSE"
    georaster_table   CDATA #REQUIRED
    georaster_column  CDATA #REQUIRED
    raster_id         CDATA #IMPLIED
    raster_table      CDATA #IMPLIED
    raster_pyramid    CDATA #IMPLIED
    raster_bands      CDATA #IMPLIED
    datasource        CDATA #IMPLIED
    polygon_mask      CDATA #IMPLIED
    jdbc_host         CDATA #IMPLIED
    jdbc_port         CDATA #IMPLIED
    jdbc_sid          CDATA #IMPLIED
    jdbc_user         CDATA #IMPLIED
    jdbc_password     CDATA #IMPLIED
    jdbc_srid         CDATA #IMPLIED
    jdbc_mode         (thin|oci8) "thin">
<!ELEMENT jdbc_network_query (#PCDATA) >
<!ATTLIST jdbc_network_query
    asis                    (TRUE|FALSE) "FALSE"
    network_name            CDATA #REQUIRED
    network_level           CDATA #IMPLIED
    link_style              CDATA #IMPLIED
    direction_style         CDATA #IMPLIED
    direction_position      CDATA #IMPLIED
    direction_markersize    CDATA #IMPLIED
    link_labelstyle         CDATA #IMPLIED
    link_labelcolumn        CDATA #IMPLIED
    node_style              CDATA #IMPLIED
    node_markersize         CDATA #IMPLIED
    node_labelstyle         CDATA #IMPLIED
    node_labelcolumn        CDATA #IMPLIED
    path_ids                CDATA #IMPLIED
    path_styles             CDATA #IMPLIED
    path_labelstyle         CDATA #IMPLIED
    path_labelcolumn        CDATA #IMPLIED
    analysis_algorithm      CDATA #IMPLIED
    shortestpath_style      CDATA #IMPLIED
    shortestpath_startnode  CDATA #IMPLIED
    shortestpath_endnode    CDATA #IMPLIED
    shortestpath_startstyle CDATA #IMPLIED
    shortestpath_endstyle   CDATA #IMPLIED
    withincost_startnode    CDATA #IMPLIED
    withincost_style        CDATA #IMPLIED
    withincost_cost         CDATA #IMPLIED
    withincost_startstyle   CDATA #IMPLIED
    datasource              CDATA #IMPLIED
    jdbc_host               CDATA #IMPLIED
    jdbc_port               CDATA #IMPLIED
    jdbc_sid                CDATA #IMPLIED
    jdbc_user               CDATA #IMPLIED
    jdbc_password           CDATA #IMPLIED
    jdbc_srid               CDATA #IMPLIED
    jdbc_mode               (thin|oci8) "thin"
>
<!ELEMENT jdbc_topology_query (#PCDATA)>
<!ATTLIST jdbc_topology_query
    asis               (TRUE|FALSE) "FALSE"
    topology_name      CDATA #REQUIRED
    feature_table      CDATA #REQUIRED
    spatial_column     CDATA #REQUIRED
    label_column       CDATA #IMPLIED
    label_style        CDATA #IMPLIED
    render_style       CDATA #IMPLIED
    datasource         CDATA #IMPLIED
    edge_style         CDATA #IMPLIED
    edge_marker_style  CDATA #IMPLIED
    edge_marker_size   CDATA #IMPLIED
    edge_label_style   CDATA #IMPLIED
    node_style         CDATA #IMPLIED
    node_label_style   CDATA #IMPLIED
    face_style         CDATA #IMPLIED
    face_label_style   CDATA #IMPLIED
    jdbc_host          CDATA #IMPLIED
    jdbc_port          CDATA #IMPLIED
    jdbc_sid           CDATA #IMPLIED
    jdbc_user          CDATA #IMPLIED
    jdbc_password      CDATA #IMPLIED
    jdbc_srid          CDATA #IMPLIED
    jdbc_mode          (thin|oci8) "thin"
>
<!ELEMENT map_cache_theme (#PCDATA)>
<!ATTLIST map_cache_theme
    map_cache_name       CDATA # REQUIRED
    snap_to_cache_scale  (TRUE|FALSE) "FALSE"
>
<!ELEMENT geoFeature (description?, property*,
 geometricProperty)>
<!ATTLIST geoFeature
   typeName          CDATA #IMPLIED
   id                CDATA #IMPLIED
   render_style      CDATA #IMPLIED
   text_style        CDATA #IMPLIED
   label             CDATA #IMPLIED
   label_always_on   (TRUE|FALSE) "FALSE"
   marker_size       CDATA #IMPLIED
   radius            CDATA #IMPLIED
   attribute_values  CDATA #IMPLIED
   orient_x          CDATA #IMPLIED
   orient_y          CDATA #IMPLIED
   orient_z          CDATA #IMPLIED
   selectable_in_svg (TRUE|FALSE) "FALSE"
   onclick           CDATA #IMPLIED
   hidden_info       CDATA #IMPLIED
>
<!ELEMENT legend column+ >
<!ATTLIST legend
    bgstyle    CDATA #implied
    font       CDATA #implied
    location_x CDATA #implied
    location_y CDATA #implied
    offset_x   CDATA #implied
    offset_y   CDATA #implied
    profile   (MEDIUM|SMALL|LARGE)  "MEDIUM"
    position  (SOUTH_WEST|SOUTH_EAST|SOUTH|NORTH|
              NORTH_WEST|NORTH_EAST|EAST|WEST|CENTER)  "SOUTH_WEST"
>
<!ELEMENT column entry+ >
<!ATTLIST entry
    is_title      (true|false) "false"
    is_separator  (true|false) "false"
    tab           CDATA  "0"
    style         CDATA  #implied
    text          CDATA  #implied
>
<!ELEMENT styles (style+) >
<!ELEMENT style (svg | AdvancedStyle)?>
<!ATTLIST style
    name  CDATA #REQUIRED
>

mapリクエストDTDの主な要素および属性については、次の各項で説明します。<map_request>要素については3.2.1項で説明しています。残りの関連要素については、この後の項で要素名のアルファベット順に説明しています。

3.2.1 map_request要素

<map_request>要素には、次の定義が含まれます。

<!ELEMENT map_request ((box | center | bounding_themes)?, srs?, legend?, themes?,
  styles?, geoFeature*)>

OracleAS MapViewerに対するmapリクエストのルート要素は、常にmap_requestという名前になります。

<map_request>には、<box>3.2.3項を参照)、<center>3.2.4項を参照)または<bounding_themes>3.2.2項を参照)のいずれかである子要素を含めることができます。この子要素は、マップに表示されるユーザー・データの範囲を指定します。いずれの子要素も指定されていない場合、結果のマップは、OracleAS MapViewerで使用できるすべてのデータを使用して描画されます。

オプションの子要素<srs>は、現行バージョンのOracleAS MapViewerでは無視されます。

オプションの<legend>要素(3.2.11項を参照)は、生成されたマップの上に凡例(マップ挿入図)を描画し、マップの視覚的な外観をユーザーにとってより意味のあるものにするために使用します。

オプションの<themes>要素(3.2.16項を参照)は、事前定義済テーマまたは動的に定義されるテーマを指定します。

オプションの<styles>要素(3.2.14項を参照)は、動的に定義されるスタイルを指定します。

<geoFeature>要素(3.2.5項を参照)は、任意の数の各ジオメトリとそのレンダリング属性の指定に使用できます。

OracleAS MapViewerでは、(ベース・マップがルート要素で属性として指定されている場合に)ベース・マップで定義されたテーマが最初に描画され、次にユーザー指定のテーマ、最後に任意のgeoFeature要素が描画されます。

3.2.1.1 map_request属性

ルート要素の<map_request>には多くの属性があり、その中の一部は必須属性で、その他はオプション属性です。これらの属性は次のように定義されます。

<!ATTLIST map_request
  datasource    CDATA #REQUIRED
  srid          CDATA #IMPLIED
  basemap       CDATA #IMPLIED
  width         CDATA #IMPLIED
  height        CDATA #IMPLIED
  antialiasing  (TRUE|FALSE) "FALSE"
  imagescaling  (TRUE|FALSE) "TRUE"
  format        (GIF|GIF_URL|GIF_STREAM|JAVA_IMAGE|
                 PNG_STREAM|PNG_URL|PNG8_STREAM|PNG8_URL|
                 JPEG_STREAM|JPEG_URL|
                 SVG_STREAM|SVGZ_STREAM|SVGTINY_STREAM|
                 SVG_URL|SVGZ_URL|SVGTINY_URL) "GIF_URL"
  transparent   (TRUE|FALSE) "FALSE"
  title         CDATA #IMPLIED
  bgcolor       (CDATA) "#A6CAF0"
  bgimage       CDATA #IMPLIED
  zoomlevels    CDATA #IMPLIED
  zoomfactor    CDATA #IMPLIED
  zoomratio     CDATA #IMPLIED
  initscale     CDATA #IMPLIED
  navbar        (TRUE|FALSE) "TRUE"
  infoon        (TRUE|FALSE) "TRUE"
  onclick       CDATA #IMPLIED
  onmousemove   CDATA #IMPLIED
  rasterbasemap (TRUE|FALSE) "FALSE"
  onrectselect  CDATA #IMPLIED
  onpolyselect  CDATA #IMPLIED
  keepthemesorder CDATE #IMPLIED
  use_cached_basemap  (TRUE|FALSE) "FALSE"
  snap_to_cache_scale (TRUE|FALSE) "FALSE"
>

datasourceは、データソースを指定する必須属性です。データソースはOracleAS MapViewerに対し、マップのレンダリングに必要なユーザー・データ(およびマッピング・メタデータ)をフェッチする場所に関する情報を提供します。

sridはオプション属性です。この属性が指定されている場合、mapリクエストの座標系(空間参照システム)のSRID値が指定されます。必要な場合は、テーマ・ジオメトリが、レンダリングされる前に指定した座標系に変換されます。ただし、座標系システムが定義されていないジオメトリは変換されません。この属性が指定されていない場合、OracleAS MapViewerでは、レンダリングされる最初のテーマの座標系をmapリクエストの座標系として使用します。

basemapはオプション属性です。この属性が指定されている場合、OracleAS MapViewerによって、このベース・マップに指定されたすべてのテーマがレンダリングされます。ベース・マップの定義は、ユーザーのUSER_SDO_MAPSビューに格納されます(2.8.1項を参照)。独自のテーマおよびジオメトリ地物を表示するバックグラウンド・マップが常に必要である場合は、この属性を使用します。

widthおよびheightはオプション属性で、この両方によって結果のマップの画像サイズ(デバイス単位)を指定します。このサイズは、ウィンドウに表示されるユーザーのソース・データの範囲である、center要素またはbox要素で指定されるサイズとは異なります。デフォルトの幅と高さの値は、それぞれ500ピクセルと375ピクセルです。

antialiasingはオプション属性です。この属性の値がTRUEの場合、OracleAS MapViewerではアンチエイリアシングを使用してmap画像がレンダリングされます。この場合、通常はグラフィック品質の高いマップが生成されますが、マップの生成に時間がかかる場合があります。マップ生成の速度を上げるため、デフォルト値はFALSEとなっています。(下位互換性を確保するため、antialiaseantialiasingのシノニムとなっていますが、antialiasingを使用することをお薦めします。)

imagescalingはオプション属性です。この属性の値がTRUE(デフォルト)の場合、OracleAS MapViewerでは、現在の問合せウィンドウと生成されるmap画像のサイズを合せるために、画像のスケール変更が試行されます。値がFALSEでイメージ・テーマが直接的または間接的(ベース・マップを介しているなど)に含まれる場合、イメージ・テーマの画像は元の解像度で表示されます。mapリクエストにイメージ・テーマが関係していない場合、この属性は影響しません。

formatは、戻されるmap画像のファイル形式を指定するオプション属性です。デフォルト値はGIF_URLで、これはOracleAS MapViewerホスト・システムに格納されたGIF画像に対するURLです。

  • GIFと指定した場合、生成されたGIF画像データはMapResponseオブジェクトに埋め込まれ、クライアントに戻されます。GIF_STREAMと指定した場合、生成された画像マップの内容は、HTTP MIMEタイプimage/gifによって直接クライアントに戻されます。

  • JAVA_IMAGEと指定した場合、色モデルがTYPE_INT_RGBであるJava 2D BufferedImageオブジェクトがMapResponseオブジェクトに埋め込まれ、クライアントに戻されます。

  • PNG_STREAMと指定した場合、索引なしのPNG形式の画像のストリームが直接戻されます。PNG_URLと指定した場合、OracleAS MapViewerホスト・システムに格納された索引なしのPNG画像に対するURLが戻されます。(PNG画像形式には、画像の高速エンコードおよびトゥルー・カラーのサポートなど、GIF形式と比べていくつかの利点があります。)

  • PNG8_STREAMと指定した場合、索引付きのPNG形式の画像のストリームが直接戻されます。PNG8_URLと指定した場合、OracleAS MapViewerホスト・システムに格納された索引付きのPNG画像に対するURLが戻されます。(PNG画像形式には、画像の高速エンコードおよびトゥルー・カラーのサポートなど、GIF形式と比べていくつかの利点があります。索引付きのPNG形式では、マップの表示に使用できるカラーの総数は256色に制限されます。)

  • JPEG_STREAMと指定した場合、PNG形式の画像のストリームが直接戻されます。PNG_URLと指定した場合、OracleAS MapViewerホスト・システムに格納されたPNG画像に対するURLが戻されます。

  • SVG_STREAMと指定した場合、SVG Basic(SVGB)形式の画像のストリームが直接戻されます。SVG_URLと指定した場合、OracleAS MapViewerホスト・システムに格納されたSVG Basic画像に対するURLが戻されます。

  • SVGZ_STREAMと指定した場合、SVG圧縮(SVGZ)形式の画像のストリームが直接戻されます。SVGZ_URLと指定した場合、OracleAS MapViewerホスト・システムに格納されたSVG圧縮画像に対するURLが戻されます。SVG圧縮形式は、SVGマップのサイズをSVG Basic形式に比べて40〜70パーセント効果的に縮小できるため、パフォーマンスが向上します。

  • SVGTINY_STREAMと指定した場合、SVG Tiny(SVGT)形式の画像のストリームが直接戻されます。SVGTINY_URLと指定した場合、OracleAS MapViewerホスト・システムに格納されたSVG Tiny画像に対するURLが戻されます。(SVG Tiny形式は、携帯電話など、表示能力が制限されるデバイス用に設計されています。)

transparentは、索引付きPNG(PNG8_STREAMまたはPNG8_URL)形式のみに適用されるオプション属性です。値がTRUEの場合、OracleAS MapViewerではマップのバックグラウンド・カラーが完全に透明になります。デフォルト値はFALSEです。

titleは、結果のmap画像の上に表示されるマップ・タイトルを指定するオプション属性です。

bgcolorは、結果のmap画像のバックグラウンド・カラーを指定するオプション属性です。デフォルトは水色です(RGB値はA6CAF0)。この値は16進数で指定する必要があります。

bgimageは、結果のmap画像のバックグラウンド・イメージ(GIFまたはJPEG形式のみ)を指定するオプション属性です。画像はmapリクエスト処理中の実行時に取得され、その他のマップ地物より前にレンダリングされますが、bgcolorの値はバックグラウンド・イメージの前にレンダリングされます。

zoomlevelsは、SVGマップのズーム・レベルを指定するオプション属性です。デフォルトは4です。

zoomfactorは、SVGマップのズーム係数を指定するオプション属性です。ズーム係数は、ズーム・レベルで整数値を1つ上げる(ズームイン操作)ごとに、現行のズーム比に掛ける数値です。zoomfactor値の逆数は、ズーム・レベルで整数値を1つ下げる(ズームアウト操作)ごとに使用されます。たとえば、zoomfactor値が2(デフォルト)の場合、ズーム・レベル4から5にズームインすると、2倍の大きさに拡大されます。たとえば、ズーム・レベル4でマップの1インチが10マイルを表す場合、ズーム・レベル5では5マイルを表します。ズーム比とはSVGマップの相対的なスケールのことで、元のサイズ(ズーム・レベル0)ではズーム比は1です。

zoomratioは、SVGマップが最初に表示されるときのズーム比を指定するオプション属性です。デフォルト値は1で、これが元のマップ・サイズ(ズーム・レベル0)です。ズーム比を大きくするとマップはズームイン表示され、値を小さくするとズームアウト表示されます。

initscaleは、SVGマップが最初に表示されるときの初期スケールを指定するオプション属性です。デフォルト値は1で、これが元のマップ・サイズ(ズーム・レベル0)です。値を大きくすると、SVGマップが最初に表示されたときにズームイン表示されます。

navbarは、SVGマップ上に組込みのナビゲーション・バーを表示するかどうかを指定するオプション属性です。値がTRUE(デフォルト)の場合、ナビゲーション・バーが表示され、FALSEに設定されている場合は表示されません。

infoonは、非表示情報が設定された地物の上にマウスを移動したときに、非表示情報を表示するかどうかを指定するオプション属性です。値がTRUE(デフォルト)の場合、マウスをそのような地物の上に移動すると非表示情報が表示されます。FALSEに設定すると、そのような地物の上にマウスを移動しても、非表示情報は表示されません。ただし、値に関係なく、SVGマップには非表示情報が常にレンダリングされます。この属性は、非表示情報を表示できるかどうかのみを制御します。(地物の非表示情報を指定するには、3.2.5項で説明しているように、<geoFeature>要素のhidden_info属性を使用します。)

onclickは、ユーザーがSVGマップをクリックしたときにコールされるJavaScript関数名を指定するオプション属性です。JavaScript関数は、SVG定義以外にHTML文書で定義する必要があります。この関数には、xおよびyの2つのパラメータが必要です。これらのパラメータは、クリックされたSVGウィンドウ内の座標を指定します。座標はローカルのSVGウィンドウ座標系で定義されます。この座標系は左上角の(0, 0)で始まり、右下角(幅, 高さ)で終わります。SVGマップでのJavaScript関数の使用の詳細は、付録Bを参照してください。

onmousemoveは、ユーザーがSVGマップ上にマウスを移動するとコールされる、JavaScript関数名を指定するオプション属性です。JavaScript関数は、SVG定義以外にHTML文書で定義する必要があります。この関数には、xおよびyの2つのパラメータが必要です。これらのパラメータは、移動が発生したSVGウィンドウ内の座標を指定します。座標はローカルのSVGウィンドウ座標系で定義されます。この座標系は左上角の(0, 0)で始まり、右下角(幅, 高さ)で終わります。SVGマップでのJavaScript関数の使用の詳細は、付録Bを参照してください。

rasterbasemapはオプション属性です。マップ形式がSVGで、この属性の値がTRUEの場合、OracleAS MapViewerではベース・マップをラスター画像としてレンダリングします。この場合、ベース・マップの画像がSVGマップのバックグラウンド・イメージとなり、その他すべてのベクトル地物がその上にレンダリングされます。

onrectselectは、ユーザーがSVGマップ上でマウスをクリックおよびドラッグして(対角線上で向かい合う2つの角を示して)、矩形の選択領域を描画する場合にコールされるJavaScript関数の名前を指定するオプション属性です。JavaScript関数は、SVG定義以外にHTML文書で定義する必要があります。この関数には任意のパラメータを指定できません。SVGマップでのJavaScript関数の使用の詳細は、付録Bを参照してください。

onpolyselectは、ユーザーがSVGマップ上でマウスをクリックおよびドラッグして(2つ以上の頂点を示して)、多角形の選択領域を描画する場合にコールされるJavaScript関数の名前を指定するオプション属性です。JavaScript関数は、SVG定義以外にHTML文書で定義する必要があります。この関数には任意のパラメータを指定できません。SVGマップでのJavaScript関数の使用の詳細は、付録Bを参照してください。

keepthemesorderはオプション属性です。マップ形式がSVG以外で、この属性の値がTRUEの場合、OracleAS MapViewerは常にmapリクエストで指定された順序に従って一連のテーマをレンダリングします。この属性の値がFALSEの場合は、ベクトル・テーマより前にラスター・テーマがレンダリングされます。

use_cached_basemapはオプション属性です。この属性の値がTRUEで、basemap属性によって指定されたのと同じベース・マップをマップ・キャッシュ・インスタンスがキャッシングする場合、MapViewerはマップ・キャッシュ・サーバーによってキャッシングされたmap画像を使用して、mapリクエストによって指定されたマップをレンダリングしようとします。マップ・キャッシュ・サーバーについては、8.2項を参照してください。

snap_to_cache_scaleは、use_cached_basemap属性の値がTRUEの場合にのみ有効なOPC属性です。この属性は、mapリクエストによって指定されたマップ・スケールが事前定義済のキャッシングされたズーム・レベルのいずれにも合致しない場合にのみ、MapViewerの動作に影響を与えます。この属性がFALSEの場合で、mapリクエストによって指定されたマップ・スケールが、キャッシングされた事前定義済ズーム・レベルのスケールに合致するときにのみ、MapViewerはキャッシングされたmap画像を使用してベース・マップをレンダリングします。この属性がTRUEの場合で、キャッシングされた事前定義済ズーム・レベルのいずれにもリクエストのマップ・スケールが合致しないとき、MapViewerは常にキャッシングされたmap画像を使用してベース・マップをレンダリングし、マップ・スケールを調整してキャッシングされた事前定義済ズーム・レベルのスケールに合せます。

3.2.2 bounding_themes要素

<bounding_themes>要素には、次の定義が含まれます。

<!ELEMENT bounding_themes (#PCDATA) >
<!ATTLIST bounding_themes
     border_margin          CDATA  #IMPLIED
     preserve_aspect_ratio  CDATA  "TRUE"
     size_hint              CDATA  #IMPLIED
>

マップのデータ・サイズを事前に決められない場合、1つ以上のテーマを枠テーマとして指定できます。たとえば、一定の基準を満たすデータ・ポイントをすべて選択する動的テーマが1つあり、選択したすべてのデータ・ポイントを囲むことのできる大きさのマップ上に、それらを表示するとします。このような場合、<bounding_themes>要素を使用してそのような動的テーマの名前を指定できます。OracleAS MapViewerでは、まず<bounding_themes>要素で指定されたテーマを処理し、枠テーマにより生成された地物に基づいて枠ボックスを生成してから、その新しい枠ボックスに応じてその他のテーマを準備します。

mapリクエストで<box>要素または<center>要素を指定した場合、<bounding_themes>要素は無視されます。

border_marginは、生成された枠ボックスの各マージンに追加する割合を指定するオプション属性です。たとえば、0.025の値を指定すると、生成された枠ボックスの左右のマージンに幅の2.5%が追加されます(その結果、x軸で幅が合計5%拡張されます)。同様に上下のマージンにも高さの2.5%が追加されます。デフォルト値は0.05で、各マージンに5%が追加されます。

preserve_aspect_ratioは、枠テーマの処理後に生成された枠ボックスを、map画像またはデバイスと同じ縦横比になるように、さらに変更するかどうかを示すオプション属性です。デフォルトはTRUEで、結果のmap画像の変形を防ぐため、縦横比を保つように枠ボックスを変更します。

size_hintは、境界制限を拡張するオプション属性です。これは、枠テーマにポイント地物が1つだけ含まれる場合に便利です。たとえば、ジオコーディング問合せから得られた1つのポイントのみが枠テーマの場合もあります。そのポイントをマップの中央に配置し、そのポイントから境界線を拡張する場合もあります。

要素自体には、カンマで区切られた枠テーマの名前のリストが含まれます。テーマ名は、mapリクエストまたはmapリクエストで使用されているベース・マップのテーマ名と完全に一致する必要があります。次の例では、theme1theme3という2つの枠テーマを含み、2つのテーマに関連付けられた地物の保持のために必要な最小限の枠ボックスの4つのマージンすべてに2%(border_margin="0.02")を追加するmapリクエストを示しています。

<?xml version="1.0" standalone="yes"?>
<map_request
             title="bounding themes"
             datasource = "tilsmenv"
             basemap="qa_map"
             width="400"
             height="400"
             bgcolor="#a6cae0"
             antialiase="false"
             mapfilename="tilsmq202"
             format="PNG_STREAM">

  <bounding_themes border_margin="0.02">theme1, theme3</bounding_themes>

  <themes>
    <theme name="theme1" min_scale="5.0E7" max_scale="0.0">
       <jdbc_query
         datasource="tilsmenv"
         jdbc_srid="8265"
         spatial_column="geom" label_column="STATE"
         render_style="myPattern" label_style="myText"
         >SELECT geom, state from states where state_abrv='IL'</jdbc_query>
     </theme>
    <theme name="theme3" min_scale="5.0E7" max_scale="0.0">
       <jdbc_query
         datasource="tilsmenv"
         jdbc_srid="8265"
         spatial_column="geom" label_column="STATE"
         render_style="myPattern" label_style="myText"
         >SELECT geom,state from states where state_abrv='IN'</jdbc_query>
     </theme>

  </themes>

  <styles>
   <style name="myPattern">
     <svg width="1in" height="1in">
     <desc></desc>
       <g class="area"
          style="stroke:#0000cc;fill:#3300ff;fill-opacity:128;line-style:L.DPH">
       </g>
     </svg>
   </style>
   <style name="myText">
     <svg width="1in" height="1in">
        <g class="text" float-width="3.0"
           style="font-style:bold;font-size:18pt;fill:#000000">
          Hello World!
        </g>
     </svg>
   </style>
  </styles>
</map_request>

前述の例では、2つの<theme>要素(どちらもmyPatternというレンダリング・スタイルを指定)での指定に従い、イリノイ州とインディアナ州を示すマップが表示されます。myTextスタイルでは、Map Builderツールなどのスタイル作成ツールでスタイルをプレビューする場合にのみ、「Hello World!」というテキストが表示されます。このスタイルをマップに適用すると、OracleAS MapViewerがテーマから取得する実際のテキスト・ラベルが提供されます。

図3-2は、前述の例の表示を示しています。

3.2.3 box要素

<box>要素には、次の定義が含まれます。

<!ELEMENT box (coordinates) >
<!ATTLIST box
   ID CDATA #IMPLIED
   srsName CDATA #REQUIRED
>

<box>要素は、結果のマップの枠ボックスの指定に使用します。この要素では、矩形の左下角と右上角を識別する2つの座標値ペアを指定するため、<coordinates>要素が使用されます。座標値は、ユーザー・データに置き換えて解釈されます。たとえば、ユーザーのデータが測地データであり、10進表記の経度/緯度で指定されている場合、-72.84, 41.67, -70.88, 42.70に指定された<coordinates>は、左下角が経度/緯度座標の(-72.84, 41.67)、右上角が座標の(-70.88, 42.70)にある枠ボックスを示します。これは米国のニューイングランド地方になります。ただし、測定単位をメートルとしてデータが投影されている場合、座標値はメートルで解釈されます。

3.2.4 center要素

<center>要素には、次の定義が含まれます。

<!ELEMENT center (geoFeature)>
<!ATTLIST center
   size CDATA #REQUIRED
>

<center>要素は、結果のマップの中心の指定に使用します。この要素にはsizeという必須属性が含まれます。これは、元のデータ単位でマップの垂直範囲を指定します。たとえば、ユーザーのデータが10進表記の度数で示されている場合、size属性は、10進表記の緯度を指定します。ユーザーのデータがメートル単位で投影されている場合、OracleAS MapViewerではサイズがメートルで解釈されます。

中心自体には、3.2.5項で指定される<geoFeature>要素が埋め込まれる必要があります。

3.2.5 geoFeature要素

<geoFeature>要素には、次の定義が含まれます。

<!ELEMENT geoFeature (description?, property*,
 geometricProperty)>
<!ATTLIST geoFeature
   typeName          CDATA #IMPLIED
   id                CDATA #IMPLIED
   render_style      CDATA #IMPLIED
   text_style        CDATA #IMPLIED
   label             CDATA #IMPLIED
   label_always_on   (TRUE|FALSE) "FALSE"
   marker_size       CDATA #IMPLIED
   radius            CDATA #IMPLIED
   attribute_values  CDATA #IMPLIED
   orient_x          CDATA #IMPLIED
   orient_y          CDATA #IMPLIED
   orient_z          CDATA #IMPLIED
   selectable_in_svg (TRUE|FALSE) "FALSE"
   onclick           CDATA #IMPLIED
   hidden_info       CDATA #IMPLIED
>

<geoFeature>要素は、マップにレンダリングする個々の地理空間エンティティを指定するために使用します。<geoFeature>要素の主要部分はジオメトリ(<geometricProperty>要素)であり、OGC GML v1.0のジオメトリDTD(3.6項を参照)に従って指定する必要があります。

typeNameは、現行リリースのOracleAS MapViewerでは無視されるオプション属性です。

idは、SVGマップ上のすべての地理空間地物から地物を一意に識別するために使用できるオプション属性です。(selectable_in_svg属性の説明を参照してください。)それ以外の場合、この属性は無視されます。

render_styleはオプション属性です。この属性を省略すると、geoFeatureはレンダリングされません。この属性を指定する場合、値にはユーザーのUSER_SDO_STYLESビューに格納されているスタイル名を指定する必要があります。

text_styleはオプション属性です。この属性を指定し、render_style属性およびlabel属性が存在していて有効な場合、地物のラベル付けに使用されるスタイルが識別されます。この属性を指定しない場合は、デフォルトのテキスト・スタイルが使用されます。

labelはオプション属性です。この属性を指定し、render_style属性およびlabel属性が存在していて有効な場合、地物のラベル付けに使用されるスタイルが識別されます。

label_always_onはオプション属性です。これをTRUEに設定した場合、テーマの表示の中で2つ以上のラベルが重なる場合でも、OracleAS MapViewerによって地物がラベル付けされます。(OracleAS MapViewerでは常にラベルが重ならないように試行されます。)label_always_onFALSEの場合、ラベルが重なることが避けられないときは、OracleAS MapViewerによって1つ以上のラベルの表示が無効化されるため、重なることはありません。label_always_on属性は、テーマに対して指定することもできます(theme要素については、3.2.15項を参照)。geoFeature要素を定義する際に地物のlabel_always_onTRUEとして指定すると、ラベルが表示される地物を制御できます。また、テーマのlabel_always_onFALSEとして指定すると、ラベルの重なりを避けるかどうかを制御できます。

marker_sizeはオプション属性です。ポイント地物でこの属性を指定し、マーカータイプのスタイルがrender_styleである場合、指定したサイズは、OracleAS MapViewerによってこの地物のレンダリングに使用されます。これにより、マーカー・スタイルに指定されたデフォルト値が上書きされます。

radiusはオプション属性です。この属性を指定した場合、数値または数値のカンマ区切りリストが指定されます。各数値は、この地物を中心として描画される円の半径を表します。測地データの場合、単位はメートルであり、非測地データの場合、単位はデータに関連付けられた測定単位です。

attribute_valuesはオプション属性です。この属性を指定した場合、拡張スタイルのバケット範囲で使用される値または値のカンマ区切りリストが指定されます(たとえば、円グラフの扇形部分の値や、可変マーカーのバケット値など)。

orient_xおよびorient_yは、指定ポイントのマーカー記号(高速道路を示す盾形記号など)やテキストを回転するための方位ベクトルを示す仮想終点をオプションで指定します。(orient_zは、Oracleでの将来の使用のために予約されています。)それぞれの値は-1〜1の値で指定します。方位の始点は(0,0)とみなされ、対応する物理ポイントの位置に変換されます。

図3-3は、orient_x="0.3" orient_y="0.2"を指定した結果となる約34度(x軸から左回り)の方位ベクトルを示しています。(方位を特定の角度により正確に一致させるには、三角法のテキストにある表のコタンジェント値またはタンジェント値を参照してください。)

図3-3 方位ベクトル

図3-3の説明は図の下
「図3-3 方位ベクトル」の説明

selectable_in_svgは、SVGマップ上で地物を選択できるかどうかを指定するオプション属性です。デフォルトはFALSEです。つまり、SVGマップ上で地物を選択できません。この属性がTRUEに設定されており、テーマ地物の選択が可能な場合、地物はクリックして選択できます。地物を選択すると、その色が変わり、IDが記録されます。SVGマップで定義されたJavaScript関数getSelectedIdList()をコールすると、選択したすべての地物のID値のリストを取得できます。(地物選択が正確に機能するようにするには、地物のid属性値を、SVGマップ上のすべての地理空間地物から地物を一意に識別する値に設定する必要があります。)SVGマップでのJavaScript関数の使用の詳細は、付録Bを参照してください。

onclickは、ユーザーが地物をクリックしたときにコールされる、JavaScript関数名を指定するオプション属性です。JavaScript関数は、SVG定義以外にHTML文書で定義する必要があります。この関数には、テーマ名、地物のキー、およびSVGマップ上でクリックされたポイントの座標(ピクセル単位)を指定するxおよびyの4つのパラメータしか指定できません。SVGマップでのJavaScript関数の使用の詳細は、付録Bを参照してください。

hidden_infoは、マウスを地物の上に動かしたときに表示される情報やヒントを指定するオプション属性です。複数の行を指定するには、行間に「\n」を使用します。たとえば、hidden_info="State park with\nhistorical attractions"は、2行のヒントを指定します。(マップで非表示情報の表示を有効にするには、3.2.1.1項で説明しているように、<map_request>要素でinfoon="true"を指定する必要があります。)

次の例は、経度/緯度座標の(-78.1234, 41.0346)にあるレストランに対する、<geoFeature>要素の指定を示しています。この場合、render_style属性およびtext_style属性が指定されていないため、地物は表示されません。

<geoFeature typeName="Customer" label="PizzaHut in Nashua">
   <geometricProperty>
      <Point srsName="SDO:8265">
         <coordinates>-78.1234,41.0346</coordinates>
      </Point>
   </geometricProperty>
</geoFeature>

次の例は、経度/緯度座標の(-122.2615, 37.5266)にある特定のポイントに対する<geoFeature>要素の指定を示しています。render_style属性が指定されているため、この地物は生成されたマップにレンダリングされます。この例では、ラベル・テキスト(A Place)およびラベル・テキストを描画するためのテキスト・スタイルを指定しています。また、この地物を中心とした、半径が1600mおよび4800mの2つの円を描画するようにOracleAS MapViewerに指示しています。(この場合、<Point>要素のsrsName属性が存在する必要があり、"SDO:<srid>"という書式を使用してOracle SpatialのSRID値を指定する必要があります。SRID値8265が測地座標系に関連付けられているため、半径の値は1600mおよび4800mと解釈されます。)

<geoFeature render_style="m.star"
            radius="1600,4800"
            label="A Place"
            text_style="T.Name">
    <geometricProperty>
        <Point srsName="SDO:8265">
            <coordinates>-122.2615, 37.5266</coordinates>
        </Point>
    </geometricProperty>
</geoFeature>

図3-4は、前述の例の<geoFeature>要素を使用して描画されたマップです。地物はA Placeというテキストでラベル付けされ、2つの同心円で囲まれた赤い星型マーカーで表されます。

図3-4 2つの同心円を示す<geoFeature>要素を含むマップ

図3-4の説明は図の下
「図3-4 2つの同心円を示す<geoFeature>要素を含むマップ」の説明

3.2.6 jdbc_georaster_query要素

GeoRasterテーマの定義に使用される<jdbc_georaster_query>要素には、次の定義が含まれます。

<!ELEMENT jdbc_georaster_query (#PCDATA) >
<!ATTLIST jdbc_georaster_query
    asis              (TRUE|FALSE) "FALSE"
    georaster_table   CDATA #REQUIRED
    georaster_column  CDATA #REQUIRED
    raster_id         CDATA #IMPLIED
    raster_table      CDATA #IMPLIED
    raster_pyramid    CDATA #IMPLIED
    raster_bands      CDATA #IMPLIED
    datasource        CDATA #IMPLIED
    polygon_mask      CDATA #IMPLIED
    jdbc_host         CDATA #IMPLIED
    jdbc_port         CDATA #IMPLIED
    jdbc_sid          CDATA #IMPLIED
    jdbc_user         CDATA #IMPLIED
    jdbc_password     CDATA #IMPLIED
    jdbc_srid         CDATA #IMPLIED
    jdbc_mode         (thin|oci8) "thin"
>

GeoRasterテーマの使用方法および参照情報の詳細は、2.3.6項を参照してください。

3.2.7 jdbc_image_query要素

イメージ・テーマ(2.3.5項を参照)の定義に使用される<jdbc_image_query>要素には、次の定義が含まれます。

<!ELEMENT jdbc_image_query (#PCDATA) >
<!ATTLIST jdbc_image_query
    asis              (TRUE|FALSE) "FALSE"
    image_format      CDATA #REQUIRED
    image_column      CDATA #REQUIRED
    image_mbr_column  CDATA #REQUIRED
    image_resolution  CDATA #IMPLIED
    image_unit        CDATA #IMPLIED
    datasource        CDATA #IMPLIED
    jdbc_host         CDATA #IMPLIED
    jdbc_port         CDATA #IMPLIED
    jdbc_sid          CDATA #IMPLIED
    jdbc_user         CDATA #IMPLIED
    jdbc_password     CDATA #IMPLIED
    jdbc_srid         CDATA #IMPLIED
    jdbc_mode         (thin|oci8) "thin"
>

テーマを動的に定義するには、<jdbc_image_query>要素の内容として有効なSQL問合せを指定する必要があります。イメージ・テーマのJDBC接続情報(datasource、またはjdbc_hostjdbc_portjdbc_sidjdbc_userおよびjdbc_passwordの組合せのいずれか)を指定する必要があります。

jdbc_sridは、レンダリングするデータの座標系(SDO_SRID値)を指定するオプション属性です。

jdbc_modeは、データベースへの接続に使用するOracle JDBCドライバ(thinまたはoci8)を識別します。

asisはオプション属性です。この属性をTRUEに設定すると、OracleAS MapViewerでは指定された問合せ文字列が変更されません。asisFALSE(デフォルト)の場合、OracleAS MapViewerによってSQL問合せが空間フィルタ問合せの副問合せとして埋め込まれます。たとえば、中心が(-122, 37)でサイズが1のマップを表示する場合、指定する問合せは次のようになります。

SELECT geometry, sales FROM crm_sales WHERE sales < 100000;

asisFALSEの場合、OracleAS MapViewerにより実行される実際の問合せは次のようになります。

SELECT * FROM
   (SELECT geometry, sales FROM crm_sales WHERE sales < 100000)
WHERE sdo_filter(geometry, sdo_geometry(. . . -122.5, 36.5, -123.5, 37.5 . . .) ='TRUE';

つまり、現在のマップ・ウィンドウの空間フィルタ問合せによって、元の問合せがさらに詳細化されます。ただし、asisTRUEの場合は、次のようにOracleAS MapViewerによって指定どおりに問合せが実行されます。

SELECT geometry, sales FROM crm_sales WHERE sales < 100000;

image_formatは、画像データの形式(GIFまたはJPEGなど)を識別します。この画像形式がOracleAS MapViewerでサポートされていない場合、その形式のカスタム・イメージ・レンダラを作成し、登録する必要があります(付録Cを参照)。

image_columnは、各画像の格納場所であるBLOB型の列を識別します。

image_mbr_columnは、各画像のフットプリント(最小外接矩形(MBR))の格納場所であるSDO_GEOMETRY型の列を識別します。

image_resolutionは、元の画像解像度(ピクセル当たりのimage_unit単位の数)を識別するオプション属性です。

image_unitはオプション属性です。ただし、image_resolution属性を指定した場合は必須です。image_unit属性は、メートルに対するMのように、解像度の単位を指定します。この属性の値は、MDSYS.SDO_DIST_UNITS表のSDO_UNIT列に含まれている値のいずれかである必要があります。2.3.5.1項例2-15では、画像の解像度はピクセル当たり2mです。

イメージ・テーマを指定する<jdbc_image_query>要素の使用例は、3.1.6項例3-6を参照してください。

3.2.8 jdbc_network_query要素

ネットワーク・テーマの定義に使用される<jdbc_network_query>要素には、次の定義が含まれます。

<!ELEMENT jdbc_network_query (#PCDATA) >
<!ATTLIST jdbc_network_query
    asis                    (TRUE|FALSE) "FALSE"
    network_name            CDATA #REQUIRED
    network_level           CDATA #IMPLIED
    link_style              CDATA #IMPLIED
    direction_style         CDATA #IMPLIED
    bidirection_style       CDATA #IMPLIED
    direction_position      CDATA #IMPLIED
    direction_markersize    CDATA #IMPLIED
    direction_multimarker  (TRUE|FALSE) "FALSE"
    link_labelstyle         CDATA #IMPLIED
    link_labelcolumn        CDATA #IMPLIED
    node_style              CDATA #IMPLIED
    node_markersize         CDATA #IMPLIED
    node_labelstyle         CDATA #IMPLIED
    node_labelcolumn        CDATA #IMPLIED
    path_ids                CDATA #IMPLIED
    path_styles             CDATA #IMPLIED
    path_labelstyle         CDATA #IMPLIED
    path_labelcolumn        CDATA #IMPLIED
    analysis_algorithm      CDATA #IMPLIED
    shortestpath_style      CDATA #IMPLIED
    shortestpath_startnode  CDATA #IMPLIED
    shortestpath_endnode    CDATA #IMPLIED
    shortestpath_startstyle CDATA #IMPLIED
    shortestpath_endstyle   CDATA #IMPLIED
    withincost_startnode    CDATA #IMPLIED
    withincost_style        CDATA #IMPLIED
    withincost_cost         CDATA #IMPLIED
    withincost_startstyle   CDATA #IMPLIED
    datasource              CDATA #IMPLIED
    jdbc_host               CDATA #IMPLIED
    jdbc_port               CDATA #IMPLIED
    jdbc_sid                CDATA #IMPLIED
    jdbc_user               CDATA #IMPLIED
    jdbc_password           CDATA #IMPLIED
    jdbc_srid               CDATA #IMPLIED
    jdbc_mode               (thin|oci8) "thin"
>

ネットワーク・テーマの使用方法および参照情報の詳細は、2.3.7項を参照してください。

3.2.9 jdbc_query要素

The <jdbc_query>要素はテーマの動的定義に使用されます。この要素と関連する<hidden_info>要素には、次の定義が含まれます。

<!ELEMENT jdbc_query (#PCDATA, hidden_info?)>
<!ATTLIST jdbc_query
    asis               (TRUE|FALSE) "FALSE"
    spatial_column     CDATA #REQUIRED
    key_column         CDATA #IMPLIED
    label_column       CDATA #IMPLIED
    label_style        CDATA #IMPLIED
    render_style       CDATA #IMPLIED
    datasource         CDATA #IMPLIED
    jdbc_host          CDATA #IMPLIED
    jdbc_port          CDATA #IMPLIED
    jdbc_sid           CDATA #IMPLIED
    jdbc_user          CDATA #IMPLIED
    jdbc_password      CDATA #IMPLIED
    jdbc_srid          CDATA #IMPLIED
    jdbc_mode          (thin|oci8) "thin"
>
<!ELEMENT hidden_info (field+)>
<!ELEMENT field (#PCDATA)>
<!ATTLIST field
    column  CDATA #REQUIRED
    name    CDATA #IMPLIED
>

テーマを動的に定義するには、<jdbc_query>要素の内容として有効なSQL問合せを指定する必要があります。spatial_column(SDO_GEOMETRY型の列)および動的に定義されるテーマのJDBC接続情報(datasource、またはjdbc_hostjdbc_portjdbc_sidjdbc_userおよびjdbc_passwordの組合せのいずれか)を指定する必要があります。

<theme>要素のselectable_in_svg属性値がTRUEである場合、JDBC問合せから選択された各地物を一意に識別できる列名を指定するには、<jdbc_query>要素のkey_column属性を使用する必要があります。指定した列は、JDBC問合せのSELECTリストにも表示される必要があります。

render_styleおよびlabel_styleはオプション属性です。render_styleでは、ポイント地物のデフォルトは45度回転した赤の十字形で、線および曲線のデフォルトは1ピクセル幅の黒い線、ポリゴンのデフォルトは内側が半透明のダークグレーである黒い枠線です。

jdbc_sridは、レンダリングするデータの座標系(SDO_SRID値)を指定するオプション属性です。

jdbc_modeは、データベースへの接続に使用するOracle JDBCドライバ(thinまたはoci8)を識別します。

asisはオプション属性です。この属性をTRUEに設定すると、OracleAS MapViewerでは指定された問合せ文字列が変更されません。asisFALSE(デフォルト)の場合、OracleAS MapViewerによってSQL問合せが空間フィルタ問合せの副問合せとして埋め込まれます。たとえば、中心が(-122, 37)でサイズが1のマップを表示する場合、指定する問合せは次のようになります。

SELECT geometry, sales FROM crm_sales WHERE sales < 100000;

asisFALSEの場合、OracleAS MapViewerにより実行される実際の問合せは次のようになります。

SELECT * FROM
   (SELECT geometry, sales FROM crm_sales WHERE sales < 100000)
WHERE sdo_filter(geometry, sdo_geometry(. . . -122.5, 36.5, -123.5, 37.5. . . ) ='TRUE';

つまり、現在のマップ・ウィンドウを使用した空間フィルタ問合せによって、元の問合せがさらに詳細化されます。ただし、asisTRUEの場合は、次のようにOracleAS MapViewerによって指定どおりに問合せが実行されます。

SELECT geometry, sales FROM crm_sales WHERE sales < 100000;

<hidden_info>要素は、テーマの地物の上にマウスを動かしたときに表示される実表の属性リストを指定します。属性は、<field>要素のリストで指定します。

<field>要素には、column属性を含める必要があります。この属性は実表の列名を指定します。また、列の表示名を指定するname属性を使用できます。(name属性は、列名以外のテキスト文字列を表示する場合に便利です。)

<jdbc_query>要素を使用してテーマを動的に定義する方法の例は、3.1.2項例3-2および3.1.4項例3-4を参照してください。

3.2.10 jdbc_topology_query要素

トポロジ・テーマの定義に使用される<jdbc_topology_query>要素には、次の定義が含まれます。

<!ELEMENT jdbc_topology_query (#PCDATA)>
<!ATTLIST jdbc_topology_query
    asis               (TRUE|FALSE) "FALSE"
    topology_name      CDATA #REQUIRED
    feature_table      CDATA #REQUIRED
    spatial_column     CDATA #REQUIRED
    label_column       CDATA #IMPLIED
    label_style        CDATA #IMPLIED
    render_style       CDATA #IMPLIED
    datasource         CDATA #IMPLIED
    edge_style         CDATA #IMPLIED
    edge_marker_style  CDATA #IMPLIED
    edge_marker_size   CDATA #IMPLIED
    edge_label_style   CDATA #IMPLIED
    node_style         CDATA #IMPLIED
    node_label_style   CDATA #IMPLIED
    face_style         CDATA #IMPLIED
    face_label_style   CDATA #IMPLIED
    jdbc_host          CDATA #IMPLIED
    jdbc_port          CDATA #IMPLIED
    jdbc_sid           CDATA #IMPLIED
    jdbc_user          CDATA #IMPLIED
    jdbc_password      CDATA #IMPLIED
    jdbc_srid          CDATA #IMPLIED
    jdbc_mode          (thin|oci8) "thin"
>

トポロジ・テーマの使用方法および参照情報の詳細は、2.3.8項を参照してください。

3.2.11 legend要素

<legend>要素には、次の定義が含まれます。

<!ELEMENT legend column+ >
<!ATTLIST legend
    bgstyle    CDATA #implied
    font       CDATA #implied
    location_x CDATA #implied
    location_y CDATA #implied
    offset_x   CDATA #implied
    offset_y   CDATA #implied
    profile   (MEDIUM|SMALL|LARGE)  "MEDIUM"
    position  (SOUTH_WEST|SOUTH_EAST|SOUTH|NORTH|
              NORTH_WEST|NORTH_EAST|EAST|WEST|CENTER)  "SOUTH_WEST"
>
<!ELEMENT column entry+ >
<!ATTLIST entry
    is_title      (true|false) "false"
    is_separator  (true|false) "false"
    tab           CDATA  "0"
    style         CDATA  #implied
    text          CDATA  #implied
    width         CDATA  #implied
    height        CDATA  #implied
>

<legend>要素は、生成されたマップの上に凡例(マップ挿入図)を描画し、マップの視覚的な外観をユーザーにとってより意味のあるものにするために使用します。<legend>要素の主要部分は1つ以上の<column>要素であり、それぞれが凡例内の列を定義します。列が1つの凡例では、すべてのエントリが上から下まで配置されます。列が2つの凡例では、1つ目の列を左側にして2つの列が並べられ、それぞれの列に独自の凡例エントリが含まれます。2.4.2項図2-8では、列が1つの凡例を示しています。図3-5では、列が2つの凡例を示しています。

図3-5 列が2つのmap凡例

図3-5の説明は図の下
「図3-5 列が2つのmap凡例」の説明

bgstyleは、凡例のバックグラウンド・スタイル全体を指定するオプション属性です。この属性は、Scalable Vector Graphics(SVG)に似た構文を持つ文字列を使用し、凡例の枠ボックスの塗りおよびストロークの色を指定します。不透明度(fill-opacityまたはstroke-opacity)の値を指定した場合、塗りおよびストロークの色は透明または一部透明になる場合があります。次の例では、白い半透明のバックグラウンド、および赤のストローク(凡例ボックスの境界)を指定しています。

bgstyle="fill:#ffffff;fill-opacity:128;stroke:#ff0000"

fontは、凡例画像に表示されるテキストに使用するフォント名を指定するオプション属性です。Javaでサポートされている論理フォント名(serifsansserifmonospaceddialogまたはdialoginput)を指定できます。OracleAS MapViewerサーバーが稼働しているシステムで使用可能な物理フォント名も指定できます。

location_xおよびlocation_yは、凡例の始点のX座標とY座標(画面単位)を指定するオプション属性です。これらの属性を指定すると、position属性による指定より優先されます。

offset_xおよびoffset_yは、position属性と併用されるオプション属性です。位置ヒントに対する枠線からのデフォルト距離は、10ピクセルです。これらのオフセット・パラメータは、デフォルト値より優先されます。

profileは、マップ上の凡例の相対的なサイズを指定するオプション属性であり、SMALLMEDIUM(デフォルト)またはLARGEのいずれかのキーワードを使用します。

positionは、凡例を描画するマップ上の位置を指定するオプション属性です。デフォルトはSOUTH_WESTであり、結果のマップの左下角に凡例が描画されます。

is_titleは、<entry>要素のオプション属性です。この値がTRUEの場合、エントリは列のタイトルとして使用されます。つまり、説明テキストが通常の凡例テキストよりも目立つフォントで表示され、エントリに対して定義されたその他のスタイル属性は無視されます。デフォルトはFALSEです。

is_separatorは、<entry>要素のオプション属性です。この値がTRUEの場合、エントリは列の縦方向の間隔を空けるための空白行の挿入に使用されます。デフォルトはFALSEです。

tabは、<entry>要素のオプション属性です。この属性は、エントリを列の左余白からインデントするためのタブ位置の数を指定します。デフォルトは0(ゼロ)で、この場合インデントは行われません。

styleは、<entry>要素のオプション属性です。この属性は、エントリの一部として描画されるOracleAS MapViewerスタイル(色または画像など)の名前を指定します。

textは、<entry>要素のオプション属性です。この属性は、エントリに含められる説明テキスト(関連付けられた色または画像の簡潔な説明など)を指定します。

次の例は、2.4.2項図2-8の凡例に対する<legend>要素の指定を示しています。

<legend bgstyle="fill:#ffffff;fill-opacity:128;stroke:#ff0000"
            position="NORTH_WEST">
  <column>
    <entry text="Map Legend" is_title="true"/>
    <entry style="M.STAR" text="center point"/>
    <entry style="M.CITY HALL 3" text="cities"/>
    <entry is_separator="true"/>
    <entry style="C.ROSY BROWN STROKE" text="state boundary"/>
    <entry style="L.PH" text="interstate highway"/>
    <entry text="County population:"/>
    <entry style="V.COUNTY_POP_DENSITY" tab="1"/>
  </column>
</legend>

この例の内容は、次のとおりです。

  • バックグラウンド・カラーは不透明度値が128(fill-opacity:128)です。つまり、白いバックグラウンドが半透明になります。

  • 凡例の境界ボックスは赤(stroke:#ff0000)になります。

  • 凡例の境界ボックスは、ディスプレイの左上部分(position="NORTH_WEST")に配置されます。

  • profile属性(デフォルト値はMEDIUM)が指定されていないため、凡例はデフォルト・サイズになります。

  • 凡例は単一列となり、エントリが上から下まで配置されます。

  • 1つ目のエントリは凡例タイトルで、テキストはMap Legendです。

  • 4つ目のエントリは、空白行を追加するためのセパレータです。

  • 7つ目のエントリは説明テキスト(County population:)であり、生成されたマップのユーザーが、拡張スタイルを指定する次(および最後)のエントリに関連付けます。拡張スタイルには独自の記述テキストが含まれることが多く、どのテキストが凡例のどの部分に適用されるのかユーザーが混乱するのは望ましくないため、County population:というテキスト・エントリは便利です。

  • 最後のエントリは拡張スタイル(style="V.COUNTY_POP_DENSITY")を指定しており、タブ1つ分インデントされるため(tab="1")、様々な人口密度範囲を識別する色およびテキストは、ユーザーが前のCounty population:という説明テキストと区別しやすいものになります。

3.2.12 map_cache_theme要素

<map_cache_theme>要素は、マップ・キャッシュ・テーマを定義する際に使用します。マップ・キャッシュ・テーマは、事前に生成されるmap画像タイルを使用してマップ・キャッシュ・サーバーによってレンダリングされるmap画像層を生成します。map画像タイルは、任意の内部または外部のマップ・サービス・プロバイダから取得できます。この要素には、次の定義が含まれます。

<!ELEMENT map_cache_theme (#PCDATA)>
<!ATTLIST map_cache_theme
    map_cache_name       CDATA # REQUIRED
    snap_to_cache_scale  (TRUE|FALSE) "FALSE"
>

map_cache_nameでは、マップ・キャッシュ・テーマのレンダリングに使用されるmap画像タイルに対してキャッシングおよびサービスの提供を実施するマップ・キャッシュ・インスタンスの名前を指定します。

snap_to_cache_scaleは、キャッシングされた事前定義済ズーム・レベルの1つに適合するようにマップ・スケールを調整するかどうかを指定するオプション属性です。この属性がFALSEの場合、結果のマップのスケールは常に、mapリクエストの指定内容と同じです。キャッシングされた事前定義済ズーム・レベルのいずれにもmapリクエストのスケールが合致しない場合、キャッシングされたmap画像はmapリクエストのスケールに適合するようにスケールが変更されます。この属性がTRUEの場合、キャッシングされた事前定義済ズーム・レベルのいずれにもmapリクエストのスケールが合致しないと、結果のマップのスケールはキャッシングされた事前定義済ズーム・レベルのいずれか1つに適合するように調整されます。

3.2.13 style要素

<style>要素には、次の定義が含まれます。

<!ELEMENT style (svg | AdvancedStyle)?>
<!ATTLIST style
    name  CDATA #REQUIRED
>

<style>要素により、動的に定義されるスタイルを指定できます。スタイルは次のいずれかです。

  • 色、線、マーカー、領域またはテキスト・スタイルを表すSVG記述

  • バケット、カラー・スキームまたは可変マーカー・スタイルを表す拡張スタイル定義(A.6項を参照)

name属性は、スタイル名を識別します。

次の例では、mapリクエストに2つのスタイル(色スタイルおよび拡張スタイル)を動的に定義する部分の抜粋を示しています。

<map_request . . .>
  . . .
  <styles>
    <style name="color_red">
      <svg width="1in" height="1in">
        <g class="color"
           style="stroke:red;stroke-opacity:100;fill:red;fill-opacity:100">
          <rect width="50" height="50"/>
        </g>
      </svg>
    </style>

    <style name="ranged_bucket_style">
        <AdvancedStyle>
           <BucketStyle>
             <Buckets>
             <RangedBucket seq="0" label="less than 100k"
               high="100000.0" style="C.RB13_13"/>
             <RangedBucket seq="1" label="100k - 150k" low="100000.0"
               high="150000.0" style="C.RB13_1"/>
             <RangedBucket seq="2" label="150k - 250k" low="150000.0"
               high="250000.0" style="C.RB13_4"/>
             <RangedBucket seq="3" label="250k - 350k" low="250000.0"
               high="350000.0" style="C.RB13_7"/>
             <RangedBucket seq="4" label="350k - 450k" low="350000.0"
               high="450000.0" style="C.RB13_10"/>
              </Buckets>
           </BucketStyle>
        </AdvancedStyle>
    </style>
  </styles>
</map_request>

3.2.14 styles要素

<styles>要素には、次の定義が含まれます。

<!ELEMENT styles (style+) >

<styles>要素は1つ以上の<style>要素(3.2.13項を参照)を指定します。

3.2.15 theme要素

<theme>要素には、次の定義が含まれます。

<!ELEMENT theme (jdbc_query | jdbc_image_query | jdbc_georaster_query
                 | jdbc_network_query | jdbc_topology_query | map_cache_theme)?,
                 operations? >
<!ATTLIST theme
    name                  CDATA #REQUIRED
    datasource            CDATA #IMPLIED
    template_theme        CDATA #IMPLIED
    max_scale             CDATA #IMPLIED
    min_scale             CDATA #IMPLIED
    label_always_on       (TRUE|FALSE) "FALSE"
    fast_unpickle         (TRUE|FALSE) "TRUE"
    mode                  CDATA #IMPLIED
    min_dist              CDATA #IMPLIED
    fixed_svglabel        (TRUE|FALSE) "FALSE"
    visible_in_svg        (TRUE|FALSE) "TRUE"
    selectable_in_svg     (TRUE|FALSE) "FALSE"
    part_of_basemap       (TRUE|FALSE) "FALSE"
    simplify_shapes       (TRUE|FALSE) "TRUE"
    transparency          CDATA #IMPLIED
    generalized_pixels    CDATA #IMPLIED
    onclick               CDATA #IMPLIED
    onmousemove           CDATA #IMPLIED
    onmouseover           CDATA #IMPLIED
    onmouseout            CDATA #IMPLIED
    workspace_name        CDATA #IMPLIED
    workspace_savepoint   CDATA #IMPLIED
    workspace_date        CDATA #IMPLIED
    workspace_date_format CDATA #IMPLIED
>

<theme>要素を使用すると、事前定義済テーマまたは動的に定義されるテーマを指定できます。

  • 事前定義済テーマの場合、定義はすでにUSER_SDO_THEMESビューに格納されているので、テーマ名のみが必要です。

  • 動的に定義されるテーマの場合は、次のいずれか1つの要素で情報を指定する必要があります。<jdbc_query>3.2.9項を参照)、<jdbc_image_query>3.2.7項を参照)、<jdbc_georaster_query>2.3.6項を参照)、<jdbc_network_query>2.3.7項を参照)または<jdbc_topology_query>2.3.8項を参照)。

  • GeoRasterテーマの場合は、一部のイメージ処理オプション(3.2.19項を参照)を定義できます。

name属性は、テーマ名を識別します。事前定義済テーマの場合、この名前がUSER_SDO_THEMESビュー(2.8.2項を参照)のNAME列の値と一致する必要があります。動的に定義されるテーマの場合、この名前は、jdbc_queryベースのテーマを参照するための単なる一時名です。

datasourceは、テーマのデータソースを指定するオプション属性です。この属性を指定しない場合、mapリクエストのデータソースが想定されます(3.2.1.1項datasource属性の説明を参照)。異なるテーマに異なるデータソースを指定することにより、1つのmapリクエストで複数のデータソースを使用できます。

template_themeは、事前定義済テーマが複数のデータソース内で同じ名前を持つときに複数のテーマのレンダリングに使用できるオプション属性です。テーマ名は、同一のmapリクエスト内で繰り返すことができません。ただし、同一の事前定義済テーマ名を持つデータソースが2つ存在する場合は、この属性を使用すると、両方のテーマのレンダリングを行うことができます。次の例で指定している2つのテーマのベースになっているテーマUS_STATESは、2つのデータソースに存在していますが、各データソース内のコンテンツは異なっています。

<themes>
  <theme name="US_STATES" datasource="dsrc"/>
  <theme name="OTHER_US_STATES" template_theme="US_STATES" datasource="other_dsrc" />
</themes>

max_scale属性およびmin_scale属性は、このテーマの可視性に影響を与えます。max_scaleおよびmin_scaleが省略された場合、マップ・スケールに関係なくテーマは常にレンダリングされます。(max_scaleおよびmin_scaleについては、2.4.1項を参照のこと。)

label_always_onはオプション属性です。これをTRUEに設定した場合、表示の中で2つ以上のラベルが重なる場合にも、OracleAS MapViewerによってテーマのすべての地物がラベル付けされます。(OracleAS MapViewerでは常にラベルが重ならないように試行されます。)label_always_onFALSEの場合、ラベルが重なることが避けられないときは、OracleAS MapViewerによって1つ以上のラベルの表示が無効化されるため、重なることはありません。label_always_on属性は、マップ地物に対しても指定できるため(3.2.5項geoFeature要素を参照)、テーマについてlabel_always_onFALSEであり、ラベルの重なりが避けられない場合には、ラベルを表示する地物を制御できます。

fast_unpickleはオプション属性です。この属性がTRUE(デフォルト)の場合、OracleAS MapViewerでは汎用のJDBC変換アルゴリズムではなく、独自の高速な非Pickle化(アンストリーム)アルゴリズムを使用して、データベースからフェッチされたSDO_GEOMETRYオブジェクトをOracleAS MapViewerがアクセス可能なJavaオブジェクトに変換します。このプロセスによりパフォーマンスは向上しますが、場合によっては座標の精度が失われ(約0.00000005)、各座標ですべて正確な数値を保持する必要のあるアプリケーションに重大な影響を与える可能性があります。fast_unpickleFALSEに設定されている場合、OracleAS MapViewerでは汎用のJDBC変換アルゴリズムが使用されます。このプロセスはOracleAS MapViewerの高速な非Pickle化処理よりは時間がかかりますが、精度が失われることはありません。

modeはオプション属性です。トポロジ・テーマの場合、mode="debug"を指定すると、エッジ、ノードおよびフェースを表示できます(2.3.8項を参照)。その他のタイプのテーマでは、mode属性は無視されます。

min_distはオプション属性です。この属性は、別々の形状ポイントをレンダリングするための線文字列またはポリゴン上の、2つの隣接した形状ポイント間の画面上の最小距離(ピクセル数)を指定します。2つの隣接形状ポイント間の画面上の距離が、min_dist値より小さい場合は、一方の形状ポイントのみがレンダリングされます。デフォルト値は0.5です。属性値に大きな値を指定してSVGマップ上でレンダリングされる形状ポイント数を減らし、結果的にSVGファイルのサイズを小さくすることができます。異なるテーマ定義で異なる値を指定でき、それによりSVGマップの詳細レベルをカスタマイズできます。

fixed_svglabelはオプション属性です。SVGマップ上で各ラベルの外見上のサイズがすべてのズーム・レベルで同一になるように、元の固定ラベルを使用し、ズーム・レベルの増加(ズームイン)または減少(ズームアウト)に合せてラベルを拡大または縮小表示するか、または同一のテキストで実際のサイズが異なるラベルを使用するかを指定します。fixed_svglabel値がTRUEに指定されている場合、すべてのズーム・レベルで同じテーマ・ラベルがマップに表示され、マップのズームイン、ズームアウトに合せてラベルがズームイン、ズームアウトされます。値がFALSE(デフォルト)の場合、異なるズーム・レベルで異なるテーマ・ラベルが表示されるため、ズームインおよびズームアウト操作中に表示ラベルのサイズが変化しないように見えます。

visible_in_svgは、SVGマップにテーマを表示するかどうかを指定するオプション属性です。値がTRUE(デフォルト)の場合はテーマが表示され、FALSEに設定されている場合は表示されません。ただし、この属性をFALSEに設定しても、テーマはSVGマップにレンダリングされます。最初はテーマが表示されませんが、SVGマップで定義されているJavaScript関数showTheme()をコールすることで、後から表示できます。SVGマップでのJavaScript関数の使用の詳細は、付録Bを参照してください。

selectable_in_svgは、SVGマップ上でテーマを選択できるかどうかを指定するオプション属性です。デフォルトはFALSEです。つまり、SVGマップ上でテーマを選択できません。この属性がTRUEに設定されていて、テーマ地物の選択が可能な場合、SVGマップ上で表示されるテーマの各地物は、クリックすることで選択できます。地物を選択すると、その色が変わり、ID(デフォルトではROWID)が記録されます。SVGマップで定義されたJavaScript関数getSelectedIdList()をコールすると、選択したすべての地物のID値のリストを取得できます。SVGマップでのJavaScript関数の使用の詳細は、付録Bを参照してください。

part_of_basemapはオプション属性です。マップ形式がSVGで、この属性の値がTRUEの場合、OracleAS MapViewerではテーマをベース・マップの一部として、その上にレンダリングします。ベース・マップはラスター画像としてレンダリングされます。

simplify_shapesは、レンダリングされる前に形状を簡略化するかどうかを指定するオプション属性です。簡略化は、元のジオメトリより低い解像度でマップを表示する場合に便利です。たとえば、川や政治的境界における数百または数千という曲がり角をディスプレイの解像度で表示できない場合は、形状を簡略化して主要な曲がり角のみを表示すれば、パフォーマンスが改善される場合もあります。デフォルト値はTRUEです。その場合、形状はレンダリングされる前に簡略化されます。この属性をFALSEに設定すると、MapViewerは元のジオメトリのすべての頂点および線セグメントをレンダリングしようとするので、パフォーマンスが低下する場合もあります。

transparencyは、レンダリング時にテーマに適用される基本のアルファ構成値を定義するオプション・パラメータです。この値は0〜1の範囲で指定することができ、0は完全な透明、1(デフォルト値)は完全な不透明を意味します。

generalized_pixelsは、空間フィルタ問合せで使用される解像度のレベルを定義するオプション・パラメータです。これは、画面の同じ位置にレンダリングされる要素が多くなりすぎるのを防ぐことができます。(Oracle Spatialに関するドキュメントで、SDO_FILTER演算子のmin_resolutionオプションおよびmax_resolutionオプションを参照のこと。)generalized_pixelsの単位は、画面ピクセルです。たとえば、generalized_pixels=1と指定すると、現在のデバイス・ウィンドウおよび現在の問合せウィンドウで1ピクセルが表す量未満の解像度を持つ地物は空間フィルタ問合せから返されません。

onclickは、ユーザーがSVGマップ上をクリックし、テーマ地物の選択が可能な場合(selectable_in_svg属性の説明を参照)にコールされるJavaScript関数名を指定するオプション属性です。JavaScript関数は、SVGマップが埋め込まれたHTML文書で定義する必要があります。この関数には、テーマ名、地物のキー、およびSVGマップ上でクリックされたポイントの座標(ピクセル単位)を指定するxおよびyの4つのパラメータしか指定できません。SVGマップでのJavaScript関数の使用の詳細は、付録Bを参照してください。

onmousemoveは、ユーザーがSVGマップ上のテーマの任意の地物の上にマウスを移動するとコールされる、JavaScript関数名を指定するオプション属性です。JavaScript関数は、SVGマップが埋め込まれたHTML文書で定義する必要があります。この関数には、テーマ名、地物のキー、およびSVGマップ上での移動に対するポイントの座標(ピクセル単位)を指定するxおよびyの4つのパラメータしか指定できません。SVGマップでのJavaScript関数の使用の詳細は、付録Bを参照してください。

onmouseoverは、ユーザーがSVGマップ上のテーマの地物内にマウスを移動するとコールされる、JavaScript関数名を指定するオプション属性です。(onmousemove関数はマウスがテーマの内部で移動すると常にコールされますが、onmouseover関数はテーマの地物の外側からテーマの地物の内側にマウスが移動したときに1回のみコールされます。)JavaScript関数は、SVGマップが埋め込まれたHTML文書で定義する必要があります。この関数には、テーマ名、地物のキー、およびSVGマップの地物の内部にマウスが移動したポイントの座標(ピクセル単位)を指定するxおよびyの4つのパラメータしか指定できません。SVGマップでのJavaScript関数の使用の詳細は、付録Bを参照してください。

onmouseoutは、ユーザーがSVGマップ上のテーマの地物から外にマウスを移動するとコールされる、JavaScript関数名を指定するオプション属性です。JavaScript関数は、SVGマップが埋め込まれたHTML文書で定義する必要があります。この関数には、テーマ名、地物のキー、およびSVGマップの地物から外にマウスが移動したポイントの座標(ピクセル単位)を指定するxおよびyの4つのパラメータしか指定できません。SVGマップでのJavaScript関数の使用の詳細は、付録Bを参照してください。

workspace_nameworkspace_savepointworkspace_dateおよびworkspace_date_formatは、MapViewerにおけるWorkspace Managerのサポート(2.7項を参照)に関連するオプション属性です。

3.2.16 themes要素

<themes>要素には、次の定義が含まれます。

<!ELEMENT themes (theme+) >

<themes>要素は、1つ以上の<theme>要素(3.2.15項を参照)を指定します。ベース・マップ(map_request要素のbasemap属性)を指定した場合、<themes>要素に指定したテーマは、ベース・マップに定義されたテーマの後に表示されます。ベース・マップを指定していない場合、指定されたテーマのみがレンダリングされます。

この<themes>要素の中には、1つ以上の子要素<theme>が含まれる必要があります。これらの子要素は、表示されている順序でレンダリングされます。

3.2.17 theme_modifiers要素

<theme_modifiers>要素には、次の定義が含まれます。

<!ELEMENT theme_modifiers (theme_decorations)? >

theme_modifiersを使用すると、ベース・マップ定義の編集および変更を実行することなく、ベース・マップ上のテーマの定義を上書きすることができます。<theme_decorations>要素は、<theme>要素(3.2.15項を参照)と同じ属性を持ちます。

次の例では、ベース・マップFORCED_LABELING上のテーマtheme_us_airportlabels_always_on属性を上書きしています。

<?xml version="1.0" standalone="yes"?>
<map_request
  title="Override labeling on map definition"
  basemap="FORCED_LABELING"
  datasource="tilsmenv"
  width="500"
  height="375"
  bgcolor="#a6caf0"
  antialiase="true"
  format="PNG_URL">
  <center size="15.0">
    <geoFeature>
      <geometricProperty typeName="center">
        <Point>
          <coordinates>-122.4,37.8</coordinates>
        </Point>
      </geometricProperty>
    </geoFeature>
  </center>
  <theme_modifiers>
    <theme_decorations name="theme_us_airport" label_always_on="false"/>
  </theme_modifiers>
</map_request>

3.2.18 parameter要素

<parameter>要素では、テーマに適用されるオペレーションで使用される値を定義します。(オペレーションは、<operations>要素(3.2.19項を参照)で指定します。)<parameter>要素には、次の定義が含まれます。

<!ELEMENT parameter >
<!ATTLIST parameter
  name   CDATA #REQUIRED
  value  CDATA #REQUIRED
>

どのパラメータも、名前とそれに関連する値を持つ必要があります。

3.2.19 operation要素

<operation>要素を使用すると、レンダリング時、元のデータに対してその他の変換を実行できます。<operation>要素には、次の定義が含まれます。

<!ELEMENT operation (parameter+) >
<!ATTLIST parameter
  name  CDATA #REQUIRED
>

現在、この要素はGeoRasterテーマで使用されています(2.3.6項を参照)。正規化、均等化、線形伸長、区分線形伸長、輝度とコントラストの調整、しきい値の変更などの一部のイメージ処理オペレーションは、元の画像に対して実行できます。

例3-14では、GeoRasterテーマを使用した正規化オペレーションを指定しています。

例3-14 GeoRasterテーマを使用した正規化オペレーション

<theme name="geor_theme" >
    <jdbc_georaster_query
        jdbc_srid="0"
        datasource="mvdemo"
        georaster_table="dem"
        georaster_column="georaster"
       asis="false"> select georaster from dem
    </jdbc_georaster_query>
    <operations>
     <operation name="normalize">
      </operation>
     </operations>
  </theme>

次のコード・セグメントは、手動による線形伸長オペレーションを示しています。(自動線形伸長の場合、<operation>要素は含めますが、<parameter>要素は含めません。)

     <operation name="linearstretch">
         <parameter name="autostretch" value="false"/>
         <parameter name="lowstretch" value="50"/>
         <parameter name="highstretch" value="150"/>
     </operation>

表3-1に、イメージ処理オペレーション、<operation>要素名のキーワード値および関連する<parameter>要素値(該当する場合)を示します。

表3-1 GeoRasterテーマ・オペレーションのイメージ処理オプション

オペレーション <operation>名値 <parameter>値

正規化

normalize

(該当せず)

均等化

equalize

(該当せず)

線形伸長

linearstretch

name=autostretch(自動)

name=lowstretch(低伸長)

name=highstretch(高伸長)

区分線形伸長

piecewiselinearstretch

(該当せず)

輝度

brightness

value=[number]

コントラスト

contrast

value=[number]

しきい値の変更

changethreshold

name=threshold(しきい値)

name=lowsthreshold(低しきい値)

name=highthreshold(高しきい値)


3.2.20 operations要素

<operations>要素は1つ以上の<operation>要素(3.2.19項を参照)を指定します。<operations>要素には、次の定義が含まれます。

<!ELEMENT operations (oepration+) >

事前定義済のGeoRasterテーマの場合、<operations>要素はスタイリング・ルール定義の一部になります。例3-15は、正規化オペレーションを使用するGeoRasterテーマのスタイリング・ルールを示しています。

例3-15 GeoRasterテーマにおける正規化オペレーションのスタイリング・ルール

<styling_rules theme_type="georaster" raster_table="RDT_DEM"
               raster_id="1">
   <operations>
      <operation name="normalize"/>
    </operations>
</styling_rules>

3.3 情報リクエストのDTD

mapリクエスト(3.2項を参照)および管理リクエスト(第7章を参照)の発行の他に、OracleAS MapViewerに情報リクエストを発行できます。情報リクエストはXMLリクエスト文字列であり、これを使用してSQL問合せを実行し、文字列の配列またはXML文書の形で結果を取得できます。SQL問合せはSELECT文である必要があり、SQLの基本型(非LOB型またはユーザー定義オブジェクト型など)のみを選択する必要があります。

OracleAS MapViewer情報リクエストDTDは次のとおりです。

<!ELEMENT info_request (#PCDATA) >
<!ATTLIST info_request
               datasource CDATA #REQUIRED
               format     (strict | non-strict)  "strict"
>

datasourceは、情報を取得するデータソースを指定する必須属性です。

formatはオプション属性です。この属性がstrict(デフォルト)である場合、すべての行が書式設定され、XML文書の形で戻されます。formatnon-strictに設定されている場合、すべての行および列ヘッダー・リストがカンマ区切りのテキスト文字列で戻されます。

例3-16では、都市、1990年の人口およびCITIES表の州の略記を選択するための情報リクエストを示しています。このリクエストでは、データソースmvdemoの接続情報が使用され、情報がXML文書で戻されます(format="strict")。

例3-16 OracleAS MapViewer情報リクエスト

<?xml version="1.0" standalone="yes"?>
<info_request datasource="mvdemo"  format="strict">
        SELECT city, pop90 population, state_abrv state FROM cities
</info_request>

例3-16では、次の内容を含むXML文書が戻されます。

<?xml version="1.0" encoding="UTF-8"?>
  <ROWSET>
    <ROW num="1">
      <CITY>New York</CITY>
      <POPULATION>7322564</POPULATION>
      <STATE>NY</STATE>
    </ROW>
    <ROW num="2">
      <CITY>Los Angeles</CITY>
      <POPULATION>3485398</POPULATION>
      <STATE>CA</STATE>
    </ROW>
    <ROW num="3">
      <CITY>Chicago</CITY>
      <POPULATION>2783726</POPULATION>
      <STATE>IL</STATE>
    </ROW>
    <ROW num="4">
      <CITY>Houston</CITY>
      <POPULATION>1630553</POPULATION>
      <STATE>TX</STATE>
    </ROW>
     . . .
  </ROWSET>

3.4 mapレスポンスのDTD

mapリクエストの通常の処理から生成されるmapレスポンスのDTDを次に示します。(3.5項に、例外または回復不能なエラーが発生した場合のレスポンスのDTDを示しています。)

<!ELEMENT map_response (map_image)>
<!ELEMENT map_image (map_content, box, themes, WMTException)>
<!ELEMENT map_content EMPTY>
<!ATTLIST map_content url CDATA #REQUIRED>
<!ELEMENT WMTException (#PCDATA)>
<!ATTLIST WMTException  version CDATA "1.0.0"
                        error_code (SUCCESS|FAILURE) #REQUIRED
>

このレスポンスには、エラー情報以外に画像を取得するためのURLが含まれます。有効なマップが生成された場合、マップの最小枠ボックスも戻されます。また、枠ボックスと交差する最小外接矩形(MBR)の中に地物が存在するテーマのリストも戻されます。

例3-17では、mapレスポンスを示しています。

例3-17 mapレスポンス

<?xml version="1.0" encoding="UTF-8" ?>
<map_response>
   <map_image>
     <map_content url="http://map.oracle.com/output/map029763.gif"/>
     <box srsName="default">
        <coordinates>-122.260443,37.531621 -120.345,39.543</coordinates>
     </box>
     <themes>
        <theme name="US_STATES" />
        <theme name="US_HIGHWAYS" />
     </themes>
     <WMTException version="1.0.0" error_code="SUCCESS">
     </WMTException>
   </map_image>
</map_response>

3.5 OracleAS MapViewerの例外DTD

次のDTDは、mapリクエストの処理中に例外または回復不能なエラーが発生した場合、出力XMLで使用されます。

<!ELEMENT oms_error (#PCDATA)>

この要素には、例外またはエラー・メッセージが埋め込まれます。

3.6 ジオメトリDTD(OGC)

OracleAS MapViewerでは、Open Geospatial Consortium(OGC)GML v1.0の仕様で定義されているGeometry DTDがサポートされています。この仕様およびその他のより新しいバージョンは、次のURLで入手可能です。

http://www.opengeospatial.org/specs/

この仕様には次の著作権情報が含まれます。

Copyright  ©  2000 OGC  All Rights Reserved.

この仕様には次のステータス情報が含まれます。ただし、現行の公式ステータスはDeprecated Recommendation Paperです。

This document is an OpenGIS® Consortium Recommendation Paper. It is similar to a
proposed recommendation in other organizations. While it reflects a public
statement of the official view of the OGC, it does not have the status of a OGC
Technology Specification. It is anticipated that the position stated in this
document will develop in response to changes in the underlying technology.
Although changes to this document are governed by a comprehensive review
procedure, it is expected that some of these changes may be significant.

The OGC explicitly invites comments on this document. Please send them to
gml.rfc@opengis.org

次に示す追加の法定通知文が仕様に適用されます。

THIS DOCUMENT IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, 
EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, 
FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE; 
THAT THE CONTENTS OF THE DOCUMENT ARE SUITABLE FOR ANY PURPOSE; 
NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY PATENTS, 
COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS

COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR  
CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE DOCUMENT OR THE PERFORMANCE OR 
IMPLEMENTATION OF THE CONTENTS THEREOF.

この仕様のOGCのジオメトリDTDは次のとおりです。

<!-- ============================================================== -->
<!--        G e o g r a p h y                                       -->
<!--        M a r k u p                                             -->
<!--        L a n g u a g e                                         -->
<!--                                                                -->
<!--        ( G M L )                                               -->
<!--                                                                -->
<!--        G E O M E T R Y   D T D                                 -->
<!--                                                                -->
<!--  Copyright (c) 2000 OGC All Rights Reserved.                   -->
<!-- ============================================================== -->

<!-- the coordinate element holds a list of coordinates as parsed character
data. Note that it does not reference a SRS and does not constitute a proper
geometry class. -->
<!ELEMENT coordinates (#PCDATA) >
<!ATTLIST coordinates
   decimal  CDATA    #IMPLIED
   cs       CDATA    #IMPLIED
   ts       CDATA    #IMPLIED >

<!-- the Box element defines an extent using a pair of coordinates and a SRS name. -->
<!ELEMENT Box (coordinates) >
<!ATTLIST Box
   ID       CDATA    #IMPLIED
   srsName  CDATA    #REQUIRED >

<!-- ============================================================== -->
<!--  G E O M E T R Y   C L A S S   D e f i n i t i o n s           -->
<!-- ============================================================== -->

<!-- a Point is defined by a single coordinate. -->
<!ELEMENT Point (coordinates) >
<!ATTLIST Point
   ID       CDATA    #IMPLIED
   srsName  CDATA    #IMPLIED >

<!-- a LineString is defined by two or more coordinates, with linear
interoplation between them. -->
<!ELEMENT LineString (coordinates) >
<!ATTLIST LineString
   ID       CDATA    #IMPLIED
   srsName  CDATA    #IMPLIED >

<!-- a Polygon is defined by an outer boundary and zero or more inner
boundaries. These boundaries are themselves defined by LinerRings. -->
<!ELEMENT Polygon (outerBoundaryIs, innerBoundaryIs*) >
<!ATTLIST Polygon
   ID       CDATA    #IMPLIED
   srsName  CDATA    #IMPLIED >
<!ELEMENT outerBoundaryIs (LinearRing) >
<!ELEMENT innerBoundaryIs (LinearRing) >

<!-- a LinearRing is defined by four or more coordinates, with linear
interpolation between them. The first and last coordinates must be
coincident. -->
<!ELEMENT LinearRing (coordinates) >
<!ATTLIST LinearRing
   ID       CDATA    #IMPLIED >

<!-- a MultiPoint is defined by zero or more Points, referenced through a
pointMember element. -->
<!ELEMENT MultiPoint (pointMember+) >
<!ATTLIST MultiPoint
   ID       CDATA    #IMPLIED
   srsName  CDATA    #IMPLIED >
<!ELEMENT pointMember (Point) >

<!-- a MultiLineString is defined by zero or more LineStrings, referenced
through a lineStringMember element. -->
<!ELEMENT MultiLineString (lineStringMember+) >
<!ATTLIST MultiLineString
   ID       CDATA    #IMPLIED
   srsName  CDATA    #IMPLIED >
<!ELEMENT lineStringMember (LineString) >

<!-- a MultiPolygon is defined by zero or more Polygons, referenced through a
polygonMember element. -->
<!ELEMENT MultiPolygon (polygonMember+) >
<!ATTLIST MultiPolygon
   ID       CDATA    #IMPLIED
   srsName  CDATA    #IMPLIED >
<!ELEMENT polygonMember (Polygon) >

<!-- a GeometryCollection is defined by zero or more geometries, referenced
through a geometryMember element. A geometryMember element may be any one of
the geometry classes. -->
<!ENTITY % GeometryClasses "(
   Point | LineString | Polygon |
   MultiPoint | MultiLineString | MultiPolygon |
   GeometryCollection )" >

<!ELEMENT GeometryCollection (geometryMember+) >
<!ATTLIST GeometryCollection
   ID       CDATA    #IMPLIED
   srsName  CDATA    #IMPLIED >
<!ELEMENT geometryMember %GeometryClasses; >

<!-- ============================================================== -->
<!--   G E O M E T R Y   P R O P E R T Y   D e f i n i t i o n s    -->
<!-- ============================================================== -->

<!-- GML provides an 'endorsed' name to define the extent of a feature. The
extent is defined by a Box element, the name of the property is boundedBy. -->
<!ELEMENT boundedBy (Box) >

<!-- the generic geometryProperty can accept a geometry of any class. -->
<!ELEMENT geometryProperty (%GeometryClasses;) >

<!-- the pointProperty has three descriptive names: centerOf, location and
position. -->
<!ELEMENT pointProperty (Point) >
<!ELEMENT centerOf (Point) >
<!ELEMENT location (Point) >
<!ELEMENT position (Point) >

<!-- the lineStringProperty has two descriptive names: centerLineOf and
edgeOf. -->
<!ELEMENT lineStringProperty (LineString) >
<!ELEMENT centerLineOf (LineString)>
<!ELEMENT edgeOf (LineString)>

<!-- the polygonProperty has two descriptive names: coverage and extentOf. -->
<!ELEMENT polygonProperty (Polygon) >
<!ELEMENT coverage (Polygon)>
<!ELEMENT extentOf (Polygon)>

<!-- the multiPointProperty has three descriptive names: multiCenterOf,
multiLocation and multiPosition. -->
<!ELEMENT multiPointProperty (MultiPoint) >
<!ELEMENT multiCenterOf (MultiPoint) >
<!ELEMENT multiLocation (MultiPoint) >
<!ELEMENT multiPosition (MultiPoint) >

<!-- the multiLineStringProperty has two descriptive names: multiCenterLineOf
and multiEdgeOf. -->
<!ELEMENT multiLineStringProperty (MultiLineString) >
<!ELEMENT multiCenterLineOf (MultiLineString) >
<!ELEMENT multiEdgeOf (MultiLineString) >

<!-- the multiPolygonProperty has two descriptive names: multiCoverage and
multiExtentOf. -->
<!ELEMENT multiPolygonProperty (MultiPolygon) >
<!ELEMENT multiCoverage (MultiPolygon) >
<!ELEMENT multiExtentOf (MultiPolygon) >

<!ELEMENT geometryCollectionProperty (GeometryCollection) >

<!-- ============================================================== -->
<!--     F E A T U R E   M E T A D A T A   D e f i n i t i o n s    -->
<!-- ============================================================== -->

<!-- Feature metadata, included in GML Geometry DTD for convenience; name and
description are two 'standard' string properties defined by GML. -->

<!ELEMENT name (#PCDATA)>
<!ELEMENT description (#PCDATA)>