2.4 マップ
マップは、要素および属性の組合せで構成できます。
この要素および属性には、次のものがあります。
-
背景イメージ
-
タイトル
-
凡例
-
問合せウィンドウ
-
脚注(コピーライトなど)
-
ベース・マップ
-
事前定義済テーマ(ベース・マップ内のテーマに追加)
-
JDBCテーマ(動的問合せを含む)
-
動的に定義される(一時)スタイル
これらの要素および属性をマップ・リクエストで指定した場合、生成されるマップの内容と外観が定義されます。マップ・リクエストで使用可能な要素および属性の詳細は、「マップ・ビジュアライゼーション・サーバー」を参照してください。
マップには、ベース・マップと、ウィンドウ内で相互に積み上げてレンダリングした多数のテーマを含めることができます。マップには、マップ内のすべてのテーマで共有する必要がある、関連付けられた座標系が含まれます。たとえば、マップ座標系が8307(経度/緯度(WGS 84)に相当、GPSデバイスで使用される最も一般的な座標系)の場合、マップ内のすべてのテーマにこの座標系を使用して定義されたジオメトリが必要です。
マップにテーマを追加するには、ベース・マップ名を指定するか、プログラム・インタフェースを使用してテーマを追加します。テーマが追加される順序によりテーマのレンダリングの順序が決まり、最後に指定されたテーマが最上部に配置されるため、バックグラウンドおよびフォアグラウンドに必要なテーマを必ず把握しておいてください。
データベース・ユーザーのすべてのベース・マップ名および定義が、そのユーザーのUSER_SDO_MAPSビューに格納されます。このビューについては、マップ・ビジュアライゼーション・コンポーネント・メタデータ・ビューおよびxxx_SDO_MAPSビューを参照してください。USER_SDO_MAPSビューのDEFINITION列には、ベース・マップのXML定義が含まれます。
例2-49では、ベース・マップの定義を示しています。
例2-49 ベース・マップのXML定義
<?xml version="1.0" ?> <map_definition> <theme name="theme_us_states" min_scale="10" max_scale="0"/> <theme name="theme_us_parks" min_scale="5" max_scale="0"/> <theme name="theme_us_highways" min_scale="5" max_scale="0"/> <theme name="theme_us_streets" min_scale="0.05" max_scale="0"/> </map_definition>
ベース・マップ内の各テーマは、このテーマの表示範囲である参照可能なスケール範囲に関連付けることができます。例2-49では、マップ・リクエストが0.05以下で0より大きいマップ・スケール(この場合、非常に細かな詳細を示すスケール)に対するものでないかぎり、theme_us_streets
というテーマは表示されません。min_scale
属性およびmax_scale
属性が指定されていない場合、ベース・マップを表示すると常にテーマが表示されます。(マップ・スケールの詳細は、「マップのサイズおよびスケール」を参照してください。)
ベース・マップ内のテーマの表示順序は、ベース・マップ定義でのテーマの順序と同じです。例2-49では、最初にtheme_us_states
テーマ、次にtheme_us_parks
、theme_us_highways
、最後に(マップ・スケールがすべての指定範囲内である場合)theme_us_streets
がレンダリングされます。
2.4.1 マップのサイズおよびスケール
マップ・サイズは、マップ・データ領域の単位で表したマップの高さです。たとえば、マップ・データがWGS 84地理座標内にあり、マップの中心が(-120.5, 36.5)でサイズが2の場合、マップの高さは2度(10進)、Y(緯度)の下限値は35.5度(10進)、上限値は37.5度(10進)です。
マップ・スケールは、画面またはデバイス上の1インチで表される、ユーザーのデータ領域内の単位数で表されます。マップ・ビジュアライゼーション・コンポーネントのマップ・スケールは、マップ・スケールの一般的な表現方法である1/nの分母値です。この場合の意味は次のとおりです。
-
分子の1は、表示されたマップ上の1単位(マップ・ビジュアライゼーション・コンポーネントでは1インチ)です。
-
分母のnは、表示されたマップ上の1単位(マップ・ビジュアライゼーション・コンポーネントでは1インチ)で表される測定単位(度(10進)、メートル、マイルなど)の数値です。
次に例を示します。
-
コンピュータ・ディスプレイ上の1インチがユーザー・データの0.5度(10進)に相当する場合、分数は1/0.5となります。この分数の10進値は2.0ですが、マップ・ビジュアライゼーション・コンポーネントのスケール値は0.5です。
-
コンピュータ・ディスプレイ上の1インチがユーザー・データの2マイルに相当する場合、分数は1/2となります。この分数の10進値は0.5ですが、マップ・ビジュアライゼーション・コンポーネントのスケール値は2です。
-
コンピュータ・ディスプレイ上の1インチがユーザー・データの10マイルに相当する場合、分数は1/10となります。この分数の10進値は0.1ですが、マップ・ビジュアライゼーション・コンポーネントのスケール値は10です。
<theme>
要素のmin_scale
属性およびmax_scale
属性は、テーマの参照可能なスケール範囲を示します。これらの属性は、現在のマップ・スケールに応じて、テーマが表示されるかどうかを制御します。min_scale
のデフォルトのスケール値は正の無限大であり、max_scale
のデフォルト値は負の無限大です(つまり、デフォルトではすべてのマップ・スケールにおいてテーマが表示され、可能な場合は表示特性が割り当てられます)。
-
min_scale
は、テーマを表示するためにこの値まで表示をズームインする必要のあるスケール値です。たとえば、公園のmin_scale
値が5であり、現在のマップ・スケール値が5以下で、しかもmax_scale
値より大きい場合、公園は表示に含まれます。ただし、表示をズームアウトしてマップ・スケール値が5より大きくなると、公園は表示に含まれません。 -
max_scale
は、テーマが表示されないようにするためにこの値を超えるまで表示をズームインする必要のあるスケール値です。たとえば、郡のmax_scale
値が3であり、現在のマップ・スケール値が3以下である場合、郡は表示に含まれません。ただし、表示をズームアウトしてマップ・スケール値が3より大きくなると、郡は表示に含まれます。
min_scale
の大きな値は、大まかなマップ詳細と、地図製作における小さいスケールに関連付けられており、max_scale
の大きな値は、細かいマップ詳細と、地図製作における大きいスケールに関連付けられています。(マップ・ビジュアライゼーション・コンポーネントでのマップ・スケールの意味は、地図製作のマップ・スケールにおける一般的な意味とは異なる点に注意してください。)テーマのmin_scale
値は、max_scale
値より大きくする必要があります。「マップ」の例2-49には、min_scale
値とmax_scale
値が含まれています。
ベース・テーマ・スケールと異なる値を持つラベルの表示または非表示を有効にするには、テーマ・ラベル・スケールのパラメータであるlabel_min_scale
およびlabel_max_scale
を使用して、テーマ・ラベルのスケール値も割り当てます。これらのパラメータはmin_scale
およびmax_scale
パラメータと似ていますが、ラベルが表示されるのは、マップ・スケールがlabel_min_scale
およびlabel_max_scale
によって定義された参照可能な範囲内にある場合です。(min_scale
およびmax_scale
で定義された参照可能なスケール範囲内にテーマがない場合、ラベル・スケール値は無視されます。)次に示すのは、ラベル・スケール値が指定されているテーマ定義です。この場合、ラベルはマップ・スケールが5と2の間であるときに表示されますが、テーマ地物はマップ・スケールが10と0の間であるときに表示されます。
<theme name="theme_us_states" min_scale="10" max_scale="0"
label_min_scale="5" label_max_scale="2"/>
マップ・ビジュアライゼーション・コンポーネントによって返されるマップの現在のマップ・スケールを決定するには、まずマップ・サイズ、つまりマップ・データに関連付けられた座標系におけるマップの高さ(垂直範囲)を調べます。たとえば、高さが10(マイル、メートル、度(10進)など、データに関連付けられた測定単位)のマップがリクエストされ、サイズが500×350ピクセル(350が高さ)のデバイスにマップが描画されるとします。マップ・ビジュアライゼーション・コンポーネントでは、一般的な画面解像度として96dpiが使用されます。96ピクセルは1インチであるため、返されるマップの高さは3.646インチ(350/96 = 3.646)です。この例では、マップのサイズは10であるため、マップ・スケールはおよそ2.743 (10/3.646 = 2.743)となります。
また、scale_mode
テーマ属性値をratio
として指定すれば、単位を指定することなく、1:50000のスケールを表す50000のようなマップ・スケール値を使用してマップをリクエストできます。(scale_mode
テーマ属性値がscreen_inch
の場合、スケールは単位を表します。)単位なしで定義されているスケールを使用するには、中心および比率スケールを指定してマップをリクエストします。
比率スケールに相当するマップ・ビジュアライゼーション・コンポーネントの画面インチ・スケールを見つけるには、次のステップを実行します。
-
1画面ピクセルが何メートルに相当するのかを求めます。たとえば、画面解像度が96dpi(dots per inch)の場合、1画面ピクセルは画面上で0.000265(= 0.0254/96)メートルに相当します。
-
次のようにして、1画面ピクセルのマップ・スケール(
mapdotScale
の値)を求めます。-
投影データ(メートル)の場合は、ステップ1の結果に比率スケールを掛けます。たとえば、比率スケールが50000で画面解像度が96dpiの場合、結果は1ピクセル当たり13.25(= 50000 * 0.000265)メートルになります。
-
測地データ(度)の場合は、ステップ1の結果に1度当たりのメートル数(地球の表面上)を掛けます。(この数値は、データに関連付けられている座標系によって異なります。)たとえば、1度が111195メートルで、画面解像度が96dpiの場合、結果は1ピクセル当たり29.466675(= 111195 * 0.000265)メートルになります。
-
他の単位を使用するデータの場合は、メートルを使用する投影データのアプローチを使用します。
-
-
マップ・ビジュアライゼーション・コンポーネントのスケールは画面ピクセル単位ではなく画面インチ単位なので、ステップ2の結果にdpi値を掛けます。たとえば、ステップ2の結果が13.25メートル(96dpi時)の場合、1画面インチは1272(= 13.25 * 96)メートルになります。
親トピック: マップ
2.4.2 マップ凡例
マップ凡例は、マップの上に描画される挿入図であり、様々な色、記号、線、パターンなどが表す内容を説明したものです。凡例の内容および外観を柔軟に指定できます。次の操作を実行できます。
-
バックグラウンド、枠線スタイルおよびフォントのカスタマイズ
-
凡例における1つ以上の列の使用
-
凡例エントリを区切る空白の追加
-
凡例エントリのインデント
-
拡張スタイルを含む任意のマップ・ビジュアライゼーション・コンポーネント・スタイルの使用
例2-50は、凡例を含むリクエストからの抜粋です。
-
この例は、単一列を使用した凡例を示していますが、凡例には複数の列を作成できます。
-
列定義内の各エントリでは、ラベル・テキストおよびそのテキストが凡例のタイトルである(
is_title="true"
)かどうか、スタイル名および関連テキスト、または垂直余白を追加(この例ではcitiesエントリの後)するためのセパレータ(is_separator="true"
)を識別できます。
1つ以上の<column>要素に凡例のコンテンツを指定するかわりに、マップ・リクエストに基づく自動凡例をリクエストできます。自動凡例を使用し、凡例の見出しを指定すると、マップ領域と相互作用するテーマに基づいた凡例がマップ・ビジュアライゼーション・コンポーネントで生成されます。マップ・リクエストおよびベース・マップの各テーマが考慮されます。(ただし、テーマが問合せウィンドウと相互作用するが、マップ上に表示される地物がそのテーマに含まれていない場合など、凡例の項目によっては表示されないものもあります。)
例2-51は、(<legend>
要素に<column>
要素が含まれていないため)自動凡例をリクエストするマップ・リクエストです。
例2-52に示す自動凡例のリクエストでは、<legend>
要素で、凡例項目の生成に使用するテーマが指定されています。この例では、マップの結果に多くのテーマが表示された場合でも、凡例項目は、<legend>
要素に指定されたTHEME_COUNTIES_3397829
テーマおよびTHEME_US_AIRPORT
テーマに基づきます。
自動凡例については、<column>
要素は使用できません。<legend>
要素に<column>
要素が含まれている場合、列/エントリの凡例が作成されます。
マップ・ビジュアライゼーション・コンポーネントでは、自動凡例項目の作成時に、次の注意事項があります。
-
各凡例列のエントリは最大で5つです(拡張スタイルは1つのエントリとみなされます)。
-
単純なレンダリング・スタイルの凡例テキストは、テーマの説明(定義されている場合)またはテーマ名から取得されます。
-
複数のテーマで使用されているレンダリング・スタイルは、凡例で繰り返されますが、適用されるテーマに関連するテキストも付加されます。
-
ラベリング・スタイルは凡例では繰り返されません。ラベリング・スタイルのスタイル・テキストは、スタイルの説明から取得されます。
-
拡張スタイルは凡例では繰り返されません。
さらに、マップ・タイトル、ノートまたはロゴ(あるいはその組合せ)を指定する場合は、凡例およびその他の地物の位置が異なるようにしてください。(マップ・タイトル、ノートまたはロゴについては、「グローバル・マップ構成オプションの指定」を参照してください。)凡例のデフォルト位置はSOUTH_WEST
です。
例2-50 マップ・リクエストに含まれる凡例
<?xml version="1.0" standalone="yes"?> <map_request basemap="density_map" datasource = "mvdemo" width="640" height="480" bgcolor="#a6cae0" antialiase="false" format="PNG_STREAM"> <center size="4.2"> <geoFeature render_style="m.image134_bw"> <geometricProperty typeName="center"> <Point srsName="SDO:8307"> <coordinates>-121.2615, 37.5266</coordinates> </Point> </geometricProperty> </geoFeature> </center> <legend bgstyle="fill:#ffffff;fill-opacity:100;stroke:#a3a3a3" profile="MEDIUM" position="SOUTH_WEST"> <column> <entry text="Legend" is_title="true" /> <entry style="M.IMAGE134_BW" text="Center" /> <entry style="M.ALL_CITY_L2" text="Cities" /> <entry is_separator="true" /> <entry style="L.S04_ROAD_INTERSTATE" text="Interstates" /> <entry text="County population:" /> <entry style="V.COUNTY_POP_DENSITY_8" tab="1" /> </column> </legend> <!-- <themes> </themes> --> </map_request>
例2-51 自動凡例に関するマップ・リクエスト
<?xml version="1.0" standalone="yes"?> <map_request title="Automatic legend" datasource = "mvdemo" width="640" height="480" bgcolor="#a6cae0" antialiase="false" format="PNG_STREAM"> <center size="4.5"> <geoFeature > <geometricProperty typeName="center"> <Point> <coordinates>-122.2615, 37.5266</coordinates> </Point> </geometricProperty> </geoFeature> </center> <themes> <theme name="THEME_COUNTIES_3397829" /> <theme name="THEME_US_ROAD1" /> <theme name="THEME_US_AIRPORT" /> </themes> <legend bgstyle="fill:#ffffff;fill-opacity:128;stroke:#ff0000;stroke-opacity:128" profile="medium" font="Courier"> </legend> </map_request>
例2-52 テーマが指定された自動凡例
<map_request title="Legend with themes defined" datasource = "mvdemo" width="640" height="480" bgcolor="#a6cae0" antialiase="false" format="PNG_STREAM"> <center size="4.5"> <geoFeature > <geometricProperty typeName="center"> <Point> <coordinates>-122.2615, 37.5266</coordinates> </Point> </geometricProperty> </geoFeature> </center> <themes> <theme name="THEME_COUNTIES_3397829" /> <theme name="THEME_US_ROAD1" /> <theme name="THEME_US_AIRPORT" /> </themes> <legend bgstyle="fill:#ffffff;fill-opacity:128;stroke:#ff0000;stroke-opacity:128" profile="medium" font="Courier"> <themes> <theme name="THEME_COUNTIES_3397829" /> <theme name="THEME_US_AIRPORT" /> </themes> </legend> </map_request>
親トピック: マップ