2.5 マップの生成方法
マップ・リクエストがマップ・ビジュアライゼーション・コンポーネント・サーバーに着信すると、サーバーではリクエスト内のデータソースに関連付けられたレンダラから使用されていないものを選択します。
このトピックでは、マップ・ビジュアライゼーション・コンポーネント・サーバーでマップを生成する際のプロセスについて説明します。つまり、マップ・ビジュアライゼーション・コンポーネントでは次のステップが実行されます。
-
受信XML mapリクエストを解析し、処理します。
-
テーマごとにデータを準備します(同時に実行)。
-
各テーマをレンダリングし、ラベルを付けます。
-
最終的な画像またはファイルを生成します。
マップ・ビジュアライゼーション・コンポーネントにより生成された各マップは、有効なXMLマップ・リクエストを受信した結果です。XMLマップ・リクエストは解析され、その内容が検証されます。次に、マップ・ビジュアライゼーション・コンポーネントではXMLリクエストで指定されている動的スタイルを作成します。ベース・マップに含まれるすべてのテーマ(ベース・マップが指定されている場合)と、指定された事前定義済テーマやJDBCテーマから、テーマ・リストが作成されます。リクエストで指定されている個々の地物は、すべて1つの一時テーマにまとめられます。つまり、受信リクエストの解析後、マップで表示されるデータはすべて、テーマのリストの形でマップ・ビジュアライゼーション・コンポーネントのレンダリング・エンジンに提示されます。
リスト内でのテーマの順序付けは、テーマのレンダリングの順序を決定するため重要です。ベース・マップ(存在する場合)に含まれるすべてのテーマがまずリストに追加され、次に指定されたすべてのテーマ(事前定義済またはJDBC)が追加されます。個々の地物をすべて含むテーマは最後のテーマとして追加されます。リクエストされたマップのその他の地物(凡例、マップのタイトル、脚注など)が作成され、後でレンダリングするために保存されます。
マップ・ビジュアライゼーション・コンポーネントでは、リクエスト内のテーマごとにデータを準備するための別々の実行スレッドが作成され、テーマの準備が同時に行われます。事前定義済テーマの場合は、テーマの定義とその他の情報(現行のマップ・リクエスト・ウィンドウなど)に基づいて問合せを作成することを意味します。この問合せは実行のためデータベースに送信され、結果セットが返されます。マップ・ビジュアライゼーション・コンポーネントでは結果セットに基づき、レンダリング可能な個々のオブジェクトを作成します。
-
完全にキャッシュされている事前定義済テーマの場合は、すべてのレンダリング可能なオブジェクトがすぐに使用可能であるため、データベースに問合せを送信しません。
-
JDBCテーマの場合、ユーザーが指定した問合せは、そのまま実行されるか(JDBCテーマの定義で
asis
属性値がTRUE
である場合)、空間フィルタ副問合せが自動的に適用されて実行されます。空間フィルタの部分は、ユーザーの問合せの結果を現行のリクエスト・ウィンドウ内の結果に制限するために使用されます。 -
すでにレンダリング可能な地物があるテーマ(リクエストに個々の地物がすべて含まれているテーマなど)の場合は、レンダリング可能なオブジェクトを作成する必要はありません。
マップ・リクエストのすべてのテーマを準備し、必要なデータをすべて収集すると、マップ・ビジュアライゼーション・コンポーネントはマップのレンダリングを開始します。結果のマップを保持するために空の新しいメモリー内画像を作成し、必要なバックグラウンド(色または画像)を描画します。次にテーマ・リスト内のすべてのテーマをレンダリングします。
ノート:
すべての画像テーマまたはGeoRasterテーマは、テーマ・リスト内での位置には関係なく、常に最初にレンダリングされます。しかし、その他のすべてのテーマは、テーマ・リスト内での出現順にレンダリングされます。
テーマごとに、マップ・ビジュアライゼーション・コンポーネントの内部で決定された順序で地物がレンダリングされます。各地物のレンダリングには、レンダリング・スタイルの描画メソッドを起動する必要があります。すべてのテーマがレンダリングされると、ラベリング・プロセスが開始します。地物にテキストでラベルを付ける必要のある各テーマに対して、マップ・ビジュアライゼーション・コンポーネントは地物のタイプ(ポリゴンまたは線など)に応じてラベル付けのための特定のアルゴリズムを起動します。
すべてのテーマをレンダリングし、(必要に応じて)ラベルを付けると、マップ・ビジュアライゼーション・コンポーネントは内部のマップ画像上にその他のマップ地物(凡例など)を描画します。マップ・ビジュアライゼーション・コンポーネントは、次に、その画像を元のマップ・リクエストで指定されている形式(PNGまたはGIFなど)に変換します。ただし、SVGマップの場合は、内部画像を使用するかわりにまず空のSVGマップ・ビジュアライゼーション・コンポーネントを作成し、レンダリング・プロセスの結果としてSVG文書を作成し、それをマップ・オブジェクトに挿入します。
親トピック: マップのビジュアライゼーションの概念