A.6 拡張スタイル
拡張スタイルは、単純なスタイルから作成される構造化スタイルです。
拡張スタイルは、主にテーマ・マッピングに使用されます。コア拡張スタイルはバケット・スタイル(BucketStyle
)であり、拡張スタイルはすべて一種のバケット・スタイルです。バケット・スタイルは、基本スタイルのセットとバケットのセット間の1対1マッピングです。各バケットには、表示される地物の1つ以上の属性値が含まれます。各地物のいずれかの属性によってその地物が分類される、つまり含まれるバケットが決定し、そのバケットに割り当てられたスタイルが地物に適用されます。
さらに、カラー・スキーム(「カラー・スキーム・スタイル」を参照)および可変(目盛付き)マーカー(「可変マーカー・スタイル」を参照)という2種類の特殊なバケット・スタイルが提供されています。
その他の拡張スタイルとしては、ドット密度(「ドット密度マーカー・スタイル」を参照)、棒グラフ(「棒グラフ・マーカー・スタイル」を参照)、コレクション(「コレクション・スタイル」を参照)および可変円グラフ(「可変円グラフ・スタイル」)があります。
A.6.1 バケット・スタイル
バケット・スタイルは、バケットのセットを定義し、各バケットに1つの基本スタイルを割り当てます。バケットの内容は、次のいずれかになります。
-
離散値のコレクション(ハリケーンのリスク・コードが1または2の郡すべてのバケット、ハリケーンのリスク・コードが3の郡すべてのバケットなど)。
-
連続した範囲の値(平均世帯収入が30,000ドル未満の郡すべてのバケット、平均世帯収入が30,000から39,999ドルの郡すべてのバケットなど)。この場合、一連のバケットの範囲は、個別に定義するか(それぞれ上限値および下限値により定義)、全体の範囲において均等に分割できます。
次の抜粋したコードは、バケット・スタイルの基本書式を示しています。
<?xml version="1.0" ?> <AdvancedStyle> <BucketStyle> <Buckets> . . . </Buckets> </BucketStyle> </AdvancedStyle>
他の(基本)スタイルとは対照的に、拡張スタイルには、<AdvancedStyle>
タグで識別されるルート要素が常に含まれます。
バケット・スタイルでは、<BucketStyle>
要素は、<AdvancedStyle>
要素の唯一の子です。各<BucketStyle>
要素には1つ以上の<Buckets>
子要素があり、子要素の内容はバケットのタイプによって異なります。
A.6.1.1 離散値を含むコレクションベース・バケット
バケット・スタイルの各バケットに離散値のコレクションが含まれる場合、各バケットを表すには<CollectionBucket>
要素を使用します。各バケットには、1つ以上の値が含まれます。各バケットの値は<CollectionBucket>
要素の内容としてリストされ、複数の値がカンマで区切られます。次の例では、3つのバケットを定義しています。
<?xml version="1.0" ?> <AdvancedStyle> <BucketStyle> <Buckets> <CollectionBucket seq="0" label="commercial" style="10015">commercial</CollectionBucket> <CollectionBucket seq="1" label="residential" style="10031">residential, rural</CollectionBucket> <CollectionBucket seq="2" label="industrial" style="10045">industrial, mining, agriculture</CollectionBucket> </Buckets> </BucketStyle> </AdvancedStyle>
前述の例は、次のとおりです。
-
各バケットの値は1つ以上の文字列ですが、値には数値も使用できます。
-
各バケットに関連付けられたスタイルの名前が指定されています。
-
各
<CollectionBucket>
要素のラベル属性(commercial、residentialまたはindustrial)は、拡張スタイル用にコンパイルされたラベルでのみ使用されます。 -
各
<CollectionBucket>
要素の順序は重要です。ただし、seq
(順序)属性の値は参照のみを目的としているため、マップ・ビジュアライゼーション・コンポーネントでは、定義内の要素の順序によってのみ順序が決定されます。
この例にはありませんが、他のすべての値(他に値が考えられる場合)に対してバケットが必要な場合は、属性値として#DEFAULT#
を含む<CollectionBucket>
要素を作成できます。これは、他のすべての<CollectionBucket>
要素の後に配置し、このバケットのスタイルが最後にレンダリングされるようにする必要があります。
離散値を含むコレクションベース・バケットにラベル・スタイルを適用するには、「バケットのラベル・スタイルの指定」を参照してください。
親トピック: バケット・スタイル
A.6.1.2 個々の範囲ベース・バケット
バケット・スタイルの各バケットに、2つの値で定義された値範囲が含まれる場合、各バケットを表すには<RangedBucket>
要素を使用します。各バケットには、値の範囲が含まれます。次の例では、4つのバケットを定義しています。
<?xml version="1.0" ?> <AdvancedStyle> <BucketStyle> <Buckets> <RangedBucket high="10" style="10015"/> <RangedBucket low="10" high="40" style="10024"/> <RangedBucket low="40" high="50" style="10025"/> <RangedBucket low="50" style="10029"/> </Buckets> </BucketStyle> </AdvancedStyle>
個々の範囲ベースのバケットでは、下限値は含まれますが上限値は含まれません(ただし、他の範囲の値より大きい値が含まれる範囲では、上限値は含まれます)。いずれの範囲にも、他の範囲の値と重複する値の範囲を含めることはできません。
たとえば、この例の2つ目のバケット(low="10" high="40"
)には、10ちょうどの値から40未満の値(39や39.99など)までが含まれます。40ちょうどの値は3つ目のバケットに含まれます。
<CollectionBucket>
要素と同様に、各<RangedBucket>
要素に関連付けられたスタイルは、属性として指定されます。
個々の範囲ベース・バケットにラベル・スタイルを適用するには、「バケットのラベル・スタイルの指定」を参照してください。
親トピック: バケット・スタイル
A.6.1.3 均等範囲バケット
バケット・スタイルに、範囲の均等に分割された範囲を含む一連のバケットが含まれる場合、<RangedBucket>
要素を省略して、かわりに<Buckets>
要素で範囲全体の全体上限値および下限値、範囲を分割するバケット数、およびスタイル名(各バケットにつき1つ)のリストを指定できます。次の例では、0から29の均等範囲の5つのバケット(nbuckets=5
)を定義しています。
<?xml version="1.0" ?> <AdvancedStyle> <BucketStyle> <Buckets low="0" high="29" nbuckets="5" styles="10015,10017,10019,10021,10023"/> </BucketStyle> </AdvancedStyle>
前述の例は、次のとおりです。
-
すべての値が整数の場合、5つのバケットには、0から5、6から11、12から17、18から23および24から29の各範囲の値が保持されます。
-
1つ目のバケットはスタイル
10015
、2つ目のバケットはスタイル10017
、などのように関連付けられています。
指定されたスタイル名の数は、nbuckets
属性の値と同じである必要があります。バケットは昇順で配置され、スタイルは指定された順序どおりに各バケットに割り当てられます。
親トピック: バケット・スタイル
A.6.2 カラー・スキーム・スタイル
カラー・スキーム・スタイルでは、基本色に基づく各バケットに対し、輝度が異なる個々の色スタイルが自動的に生成されます。輝度は、完全に明るい状態から完全に暗い状態まで、等間隔で分けられます。通常は、1つ目のバケットに基本色の最も明るい階調が割り当てられ、最後のバケットに最も暗い階調が割り当てられます。
各バケットの色スタイルで使用されるストロークの色を含めることができます。ストロークの色は輝度計算には含まれません。したがって、たとえば、一連のポリゴン地物がカラー・スキーム・スタイルを使用してレンダリングされる場合、各ポリゴンの内側は、対応する各バケットの色(基本色の階調)で塗りつぶされますが、ポリゴンの境界はすべて同じストロークの色を使用して描画されます。
基本色(basecolor_opacity
属性を使用)およびストロークの色(strokecolor_opacity
属性を使用)に対して、不透明度値(0(透明)から255(不透明))を指定できます。
次の例では、ストロークの色を黒とし、基本色である青の様々な階調に4つのバケットが関連付けられたカラー・スキーム・スタイルを定義しています。
<?xml version="1.0" ?> <AdvancedStyle> <ColorSchemeStyle basecolor="blue" strokecolor="black"> <Buckets> <RangedBucket label="<10" high="10"/> <RangedBucket label="10 - 20" low="10" high="20"/> <RangedBucket label="20 - 30" low="20" high="30"/> <RangedBucket label=">=30" low="30"/> </Buckets> </ColorSchemeStyle> </AdvancedStyle>
ノート:
次の特殊文字については、かわりにエスケープ・シーケンスを使用してください。
<
のかわりに<
を使用
>
のかわりに>
を使用
&
のかわりに&
を使用
親トピック: 拡張スタイル
A.6.3 可変マーカー・スタイル
可変マーカー・スタイルでは、バケットごとにサイズが異なる一連のマーカー・スタイルが生成されます。バケットの数、マーカーの開始(最小)サイズおよび2つの連続するマーカー間のサイズ増分を指定します。
可変マーカー・スタイルは、概念的にカラー・スキーム・スタイルと類似しています。どちらのスタイルも、共通オブジェクトとの差異に基づいてバケットが作成されます。カラー・スキーム・スタイルでは、基本色の輝度が変化し、可変マーカー・スタイルでは、マーカーのサイズが変化します。
次の例では、4つのバケットを含む可変マーカー・スタイルを作成しています。各バケットは、マーカー(m.circle
)の様々なサイズ(増分4)に関連付けられています。1つ目のバケットのマーカーは半径が10ディスプレイ単位、2つ目のバケットのマーカーは半径が14ディスプレイ単位、というようになります。この例では、マーカーm.circle
がすでに定義されていると仮定しています。
<?xml version="1.0" ?> <AdvancedStyle> <VariableMarkerStyle basemarker="m.circle" startsize="10" increment="4"> <Buckets> <RangedBucket label="<10" high="10"/> <RangedBucket label="10 - 20" low="10" high="20"/> <RangedBucket label="20 - 30" low="20" high="30"/> <RangedBucket label=">=30" low="30"/> </Buckets> </VariableMarkerStyle> </AdvancedStyle>
親トピック: 拡張スタイル
A.6.4 ドット密度マーカー・スタイル
ドット密度拡張マーカー・スタイルは、州や郡などの領域地物に適用されると、該当する領域内に一連のドットをランダムに描画します。各領域内に描画されるドットの数は、該当領域に関連付けられているカウント値によって決まります。ドット密度スタイルを定義する場合は、各ドットに使用されるマーカー・スタイルを指定する必要があります。
単純なドット密度スタイルのXML定義を、次の例で示します。
<?xml version="1.0" ?> <AdvancedStyle> <DotDensityStyle MarkerStyle="M.STAR" DotWidth="8" DotHeight="8"> </DotDensityStyle> </AdvancedStyle>
この例では、マーカー・スタイルM.STARが各ドットに使用され、各ドットのサイズは幅、高さともに8ピクセルです。
ドット密度スタイルを使用する場合は、カウント値を「調整」し、適切な範囲にする必要があります。たとえば、各郡の人口に基づいてドット密度スタイルを適用する場合、人口を直接使用して1人につき1ドットとすると、人口が15,000人の郡などでは描画されるドット数が許容できない数になるので望ましくありません。そのような場合はかわりに、テーマのスタイリング・ルールを定義する際に、スケールダウンした値または式(人口/1000
など)を使用します。(マップ・ビジュアライゼーション・コンポーネントでは内部的なスケールダウン処理は実行されません。そうした処理は、SQL問合せレベルで実行する必要があります。)
親トピック: 拡張スタイル
A.6.5 棒グラフ・マーカー・スタイル
棒グラフ拡張マーカー・スタイルは、円グラフ・スタイルに類似しており、相違点は適用先の地物ごとに棒グラフが描画される点です。棒グラフ・スタイルのXML定義を、次の例で示します。
<?xml version="1.0" ?> <AdvancedStyle> <BarChartStyle width="30" height="25" show_x_axis="true"> <Bar name="1990" color="#FF0000" /> <Bar name="1995" color="#FFC800" /> <Bar name="1998" color="#0000FF" /> <Bar name="2000" color="#00FF00" /> <Bar name="2002" color="#00FFFF" /> </BarChartStyle> </AdvancedStyle>
この例では、widthおよびheightで棒グラフ全体(個々のすべての棒も含む)のサイズを指定しています。
地物に関連付けられている一連の値に基づき、その地物の上に棒グラフを描画する場合、各棒の高さはローカル・スケールまたはグローバル・スケールという2つのアプローチで決定できます。ローカル・スケールの棒グラフの場合、各棒の高さは該当する地物に関連付けられている一連の値によってのみ決定されます。そのため、1つのグラフの2番目の棒を同一テーマの別のグラフの2番目の棒と比較することなどはできません。一方、グローバル・スケールの棒グラフの場合は、マップ上の全グラフで同じ棒スケールが使用されます。そのため、1つのグラフの2番目の棒を同一テーマの別のグラフの2番目の棒と比較するといったことが行えます。
そこで、同じグラフ内のみでなく、マップに表示されているすべてのグラフにわたって棒を比較する場合は、次の例で示すように、棒グラフ・スタイルの定義でshare_scale="true"
を指定し、グローバル・スケールの棒グラフ・スタイルを使用する必要があります。
<?xml version="1.0" ?>
<AdvancedStyle>
<BarChartStyle width="40" height="30" share_scale="true"
min_value="0.0" max_value="100">
<Bar name="1990" color="#FF0000" />
<Bar name="1995" color="#FFC800" />
<Bar name="1998" color="#0000FF" />
<Bar name="2000" color="#00FF00" />
<Bar name="2002" color="#00FFFF" />
</BarChartStyle>
</AdvancedStyle>
先の例の棒グラフ・スタイルをテーマに適用すると、マップ・ビジュアライゼーション・コンポーネントは該当するテーマ内の全地物のグローバルな値域を考慮し、最小値から最大値のグローバルな範囲内での各値の位置に基づいて各棒の高さを決定します。
親トピック: 拡張スタイル
A.6.6 コレクション・スタイル
コレクション拡張スタイルは、1つの地物にまとめて適用される一連のタイプのスタイルの集合(コレクション)にすぎません。様々なスタイルに基づく複数のテーマを使用した場合に比べて、コレクション・テーマのレンダリングは高速に処理されます。
たとえば、棒グラフ・スタイルは、1つの郡に適用した場合、該当する郡内のどこかに該当する棒グラフのみを描画し、該当する郡自体(境界線と内側の領域)は描画しません。ただし、通常は、一連の郡の基盤となる境界線や、各棒グラフが属する郡も表示するはずです。コレクション・スタイルを使用せずにそのような処理を実行するには、2番目のテーマを定義し、その中で各郡に色スタイルや領域スタイルを関連付ける必要があります。そのようなアプローチをとると、本質的に同じグループの地物に対して、レンダリング・パスが2つできることになります(2つのテーマが含まれるため)。
ただし、この例でコレクション・スタイルを使用すると、棒グラフと色スタイルまたは領域スタイルを参照するスタイルを1つ定義し、そのコレクション・スタイルを一連の郡のテーマに適用することができます。そのテーマがマップ・ビジュアライゼーション・コンポーネントによってレンダリングされると、マップ上に一連の棒グラフと境界線の両方が表示されます。
ポリゴン(領域)、ポイント、線などの複数のタイプのジオメトリが含まれるコレクション・タイプのトポロジ地物をレンダリングする場合にも、コレクション・スタイルを通常使用します。そのような場合は、各コレクション・トポロジ地物内の各タイプのジオメトリに最適な一連のスタイルを、1つのコレクション・スタイルに含めることができます。
コレクション・スタイルのXML定義を、次の例で示します。
<?xml version="1.0" standalone="yes"?> <AdvancedStyle> <CollectionStyle> <style name="C.COUNTIES" shape="polygon" /> <style name="L.PH" shape="line" /> <style name="M.CIRCLE" shape="point" /> </CollectionStyle> </AdvancedStyle>
親トピック: 拡張スタイル
A.6.7 可変円グラフ・スタイル
可変円グラフでは、バケットごとにサイズが異なる一連の円グラフが生成されます。円グラフの各区分の情報、円グラフの半径の初期(最小)サイズ、連続する2つの円間における半径の増分サイズを指定します。
可変円グラフ・スタイルは、概念的に可変マーカー・スタイルと類似しています。可変マーカー・スタイルではベース・マーカーのサイズが変化しますが、可変円グラフ・スタイルでは円の半径が変化します。
次の例は、4つのバケットを含む可変円グラフ・スタイルの定義を作成します。各バケットは、様々な円のサイズ(初期半径5で4ずつ増大)に関連付けられています。最初のバケットの円には5ディスプレイ単位の半径、2番目のバケットの円には9ディスプレイ単位の半径が指定されることになります。
<?xml version="1.0" ?>
<AdvancedStyle>
<VariablePieChartStyle startradius="5" increment="4">
<PieSlice name="WHITE" color="#FFFFFF"/>
<PieSlice name="BLACK" color="#000000"/>
<PieSlice name="HISPANIC" color="#FF0000"/>
<Buckets>
<RangedBucket seq="0" label="0 - 6194757.2" low="0" high="6194757.2" />
<RangedBucket seq="1" label="6194757.2 - 1.23895144E7" low="6194757.2" high="1.23895144E7"/>
<RangedBucket seq="2" label="1.23895144E7 - 1.85842716E7" low="1.23895144E7" high="1.85842716E7"/>
<RangedBucket seq="3" label="1.85842716E7 - 2.47790288E7" low="1.85842716E7" high="2.47790288E7"/>
<RangedBucket seq="4" label="2.47790288E7 - 3.0973786E7" low="2.47790288E7" high="3.0973786E7"/>
</Buckets>
</VariablePieChartStyle>
</AdvancedStyle>
親トピック: 拡張スタイル
A.6.8 ヒート・マップのスタイル
ヒート・マップのスタイルを使用して、あらゆるポイント・タイプ・データセットの2次元(2D)のカラー・マップを生成できます。色は、分布密度や地域におけるポイントやイベントのパターンを表します。マップ・ビジュアライゼーション・コンポーネントは内部では2Dマトリックスを作成して、ポイント・データセットに対して実行された距離加重アルゴリズムの結果に基づいて、それぞれのグリッド・セルに値を割り当てます。
Map Builderツールを使用してヒート・マップのスタイルを作成し、それをポイント・タイプのジオメトリ・テーマにレンダリング・スタイルとして割り当てることができます。その後で、このテーマをベース・マップに追加するか、インタラクティブなOracle Mapsアプリケーションにテーマ・ベースのFOI層として追加できます。図A-3は、ヒート・マップ・スタイルに基づいたテーマを使用して表示されるマップを示します。このマップは、ピザ・レストランの分布を示します。赤の部分はピザ・レストランの密度が最も高く、オレンジ、黄色、濃い緑、明るい緑、薄い緑、白い部分の順に密度が次第に低くなります。
次の例では、ヒート・マップのスタイル定義を作成します。
<?xml version="1.0" ?>
<AdvancedStyle>
<HeatMapStyle>
<color_stops num_steps="200" alpha="128">
FFFFFF,00FF00, FFC800,FF0000
</color_stops>
<spot_light_radius>75.0mile</spot_light_radius>
<grid_sample_factor>2.5</grid_sample_factor>
<container_theme>THEME_DEMO_STATES</container_theme>
</HeatMapStyle>
</AdvancedStyle>
この例では、ヒート・マップの以下の重要な点を定義します。
-
カラー・ストップ。カラー・ストップは、色のグラデーションを生成するために使用します。この例では、色のグラデーションは白(値ゼロでグリッド・セルにマッピングされます)から緑、オレンジ、最後に赤(最も高い値でグリッド・セルにマッピングされます)になります。グラデーションは、これら4つのカラー・ストップにまたがる200色になります。すべての色のアルファ値は128(半透明、0は完全な透明で255は不透明を示します)。
-
スポットライト半径。スポットライト半径は、それぞれのグリッド・セルの半径を定義します。この半径内にあるイベントやポイントは、セルの最終的な集約された値に影響します。各ポイントの影響は、セルの中心からの距離が増えるほど少なくなり、この半径を超えるとゼロになります。
半径はピクセルまたは
mile
のような実際の距離の単位で指定できます。半径をピクセル(単位を指定しない場合のデフォルト)で指定する場合、色のグラデーションからグリッド・セルへのマッピングは、ユーザーがマップ上でズームインやズームアウトするにつれて変化します。ユーザーがズームインおよびズームアウトを行うたびに、半径内にあるポイント数が絶えず変化するためにこのようになります。マップのスケールに関係なく固定のヒート・マップを実現するには、meter
やkm
、mile
など距離の単位でスポットライトの半径を指定する必要があります。この例では、mile
を使用します。 -
グリッド・サンプル係数。グリッド・サンプル係数は、ヒート・マップの計算で内部マトリックスまたはグリッドを作成する際に、現在のマップ・ウィンドウのサイズをサンプリングするために使用します。たとえば、サンプル係数が4であれば、内部ヒート・マップのグリッドが実際のマップのウィンドウ・サイズの4分の1 (0.25)となります。つまり、マップが1000x1000ピクセルの場合、内部ヒート・マップのグリッドは250x250です。このように、グリッド・サンプル係数の値が少ないほど、内部ヒート・マップのグリッドが大きくなり、値が大きいほど内部ヒート・マップのグリッドは小さくなります。
グリッド・サンプル係数の値は、おそらく他のどの属性よりもヒート・マップのレンダリングのパフォーマンスに大きく影響します。なぜなら、(グリッド・サンプル係数の値が小さいことに起因する)大きな内部ヒート・マップのグリッドによって、全体的な計算時間が長くなるためです。一般的に適切なガイドラインは、グリッド・サンプル係数値を十分に高く指定して、内部ヒート・マップのグリッドが512x512ピクセル以下となるようにすることです。
-
コンテナ・テーマ名。コンテナ・テーマ名では、ヒート・マップ・テーマの境界を定義するテーマ名(同じデータベース・スキーマの事前定義済ジオメトリ・テーマ)を指定します。たとえば、全米に散らばるポイント・データセットのヒート・マップを生成する場合、米国の国境あるいはすべての州をコンテナ名として表すテーマを選択してください。
指定されたコンテナ・テーマは、ヒート・マップ自体の計算方法には影響しません(これは、ポイント分布とスポットライト半径にのみ基づきます)。かわりに、調査地域の境界の外にある色のついたすべてのセルが、コンテナ・テーマによってマスクされます。こうすることで、ヒート・マップが整理されて見えます。
ヒート・マップのスタイルを作成した後は、ポイント・データのテーマを作成して、新しいヒート・マップのスタイルをテーマのレンダリング・スタイルとして割り当てることができます。
他のタイプの拡張スタイルとは異なり、ヒート・マップのスタイルには属性や値の列は必要ありません。
ヒート・マップ・スタイルを使用してレンダリングされたテーマでは、ラベルはサポートされていません。
親トピック: 拡張スタイル