A.3 線スタイル
線スタイルは、道路、鉄道路線または政治的境界などの線形地物にのみ適用可能です。
つまり、線スタイルは、SDO_GTYPE値の末尾が2(線)または6(マルチライン)になっているOracle Spatialジオメトリにのみ適用できるということです。(SDO_GEOMETRYオブジェクト・タイプとSDO_GTYPE値の詳細は、『Oracle Spatial開発者ガイド』を参照してください)。
マップ・ビジュアライゼーション・コンポーネントによって線形地物が描画される場合、線スタイルにより、使用する色、破線パターンおよびストローク幅がレンダリング・エンジンに対して指定されます。線スタイルには基本線要素を使用でき、これが定義されている場合、元の線形ジオメトリと一致します。また、基本線に平行な2本の輪郭を定義できます。平行線要素では、独自の色、破線パターンおよびストローク幅を指定できます。平行線を使用する場合、基本線の両側に、等しいオフセットで配置される必要があります。
鉄道のような線を描画するには、線スタイルで、hashmarkと呼ばれる3つ目のタイプの線要素を定義する必要があります。クラスhashmark
の<line>
要素では、dash配列内の1つ目の値が2つのハッシュ・マーク間の間隔を示し、2つ目の値が両側の線までのハッシュ・マークの長さを示します。次の例では、間隔が8.5画面単位、基本線の各側の長さが3画面単位であるハッシュ・マーク線を定義しています。
<line class="hashmark" style="fill:#003333" dash="8.5,3.0"/>
次の例では、完全な線スタイルを定義しています。
<?xml version="1.0" standalone="yes"?> <svg width="1in" height="1in"> <g class="line" style="fill:#ffff00;stroke-width:5"> <line class="parallel" style="fill:#ff0000;stroke-width:1.0"/> <line class="base" style="fill:black;stroke-width:1.0" dash="10.0,4.0"/> </g> </svg>
この例では、class="line"
により、スタイルが線スタイルとして識別されます。全体的な塗りの色(#ffff00)は、平行線と基本線間の領域の塗りつぶしに使用されます。このスタイルで使用できる最大幅(平行線の幅を含む)は、全体的な線の幅(5ピクセル)で制限されます。
この例の線スタイルには、基本線要素と平行線要素の両方が含まれます。平行線要素(class="parallel"
)は、色と幅を定義する1つ目の<line>
要素によって定義されています。(この定義では破線パターンが指定されていないため、平行線または輪郭が実線となります。)基本線要素(class="base"
)は、色、幅および破線パターンを定義する2つ目の<line>
要素によって定義されています。
線スタイルには、マーカー(方向マーカーなど)を定義できます。marker-name
パラメータはマーカー・スタイルの名前を指定し、marker-position
パラメータはマーカーを配置する開始点からの線に沿った距離の比率(0から1)を指定し、marker-size
パラメータはマーカー・サイズのディスプレイ単位を数値で指定します。マーカーの向きは、マーカーを配置する線セグメントの向きに従います。
次の例では、方向マーカーを持つ線スタイルを定義しています。
<?xml version="1.0" standalone="yes"?> <svg width="1in" height="1in"> <g class="line" style="fill:#33a9ff;stroke-width:4; marker-name:M.IMAGE105_BW;marker-position:0.15;marker-size=8"> <line class="parallel" style="fill:red;stroke-width:1.0"/> </g> </svg>
複数のマーカーを取得するには、スタイル定義にmultiple-marker
属性を追加します。この場合、marker-positionによって最初のマーカーの位置と各マーカー間の間隔が定義されます。次の例では、0.15の位置から開始して0.15ずつの間隔で繰り返し表示される方向マーカーを持つ線スタイルを定義しています。
<?xml version="1.0" standalone="yes"?>
<svg width="1in" height="1in">
<g class="line" style="fill:#33a9ff;stroke-width:4;
marker-name:M.IMAGE105_BW; marker-position:0.15;
marker-size=8; multiple-marker=true">
<line class="parallel" style="fill:red;stroke-width:1.0"/>
</g>
</svg>