注記: この機能は現時点ではMapInfo? TABおよびMicrostation DGNファイルのみをサポートしている。しかし、シェイプレベルで色とスタイルを有する他のフォーマットについてもOGRによりサポートされるかもしれない。
MapServer、ArcView?および他のシェイプファイルベースのアプリケーションにおいて、色やスタイルはレイヤレベルで定義される。これはあるレイヤに与えられた全てのシェイプは同じ色とスタイルで描画されることを意味している。
一方で、OGRがサポートするいくつかのフォーマット(Mapinfo TABのような)は各シェイプ単位で色やスタイルの情報を有している。 OGRは'STYLEITEM "AUTO"'レイヤパラメータを追加する。これは、Mapserverが従来そうしてきたようにCLASSにより区分するのではなく、レイヤ内のシェイプがデータソースから得られた色とスタイルを使用してレンダリングされることをできるようにするものである。
5.1 実装方法
OGRのデータソースから得られた色とスタイルでレンダリングされるようにするためには、以下のことをしなければならない:
- レイヤ定義にSTYLEITEM "AUTO"パラメータが含まれていなければならない。
- レイヤ定義が少なくとも一つのクラスを有していなければならず(それは空でもよい)、CLASSが式を含んでいるのであれば式とマッチするようなCLASSITEMをオプションとして定義できる。レイヤにある空のクラスは実行時に各シェイプごとにデータソースから得た色とスタイルを含むように動的に更新されるだろう。
5.2 サンプル
例10. CLASSITEMなしでSTYLEITEM "AUTO"を使用したレイヤ定義
LAYER NAME "test_dgn" STATUS ON TYPE POLYGON CONNECTIONTYPE OGR CONNECTION "../data/dgn/test.dgn" # This enables use of colors and styles from the source file. STYLEITEM "AUTO" # Define an empty class that will be filled at runtime from the color and # styles read on each shape in the source file. CLASS END END # layer
例11. CLASSITEMのあるSTYLEITEM "AUTO"を使用したレイヤの定義
LAYER NAME "Builtup_Areas_tab" TYPE POLYGON CONNECTIONTYPE OGR CONNECTION "data/tab/092b06_builtup_a.tab" STATUS ON # This enables use of colors and styles from the source file. STYLEITEM "AUTO" # Define an empty class that will be filled at runtime from the color and # styles read on each shape in the source file. CLASSITEM "CATEGORY" CLASS EXPRESSION "1" END END
注記:
CLASSのEXPRESSIONはまだ機能している。つまりSTYLEITEM "AUTO"を使用しているレイヤにおいてもクエリを実行し分類することは可能である。唯一の違いは静的なクラス定義を用いる代わりに色とスタイルがデータファイルから読み込まれることである。
5.3 重要な注意事項
注記1:
MapInfo?とその他のOGRデータソースがジオメトリ型が混ざったレイヤをサポートしているとしても(一つのファイルにポイント、ライン、ポリゴンがあるような)、MapServerにおいてはまだこれはサポートされていない。であるから、レイヤの'TYPE'を定義して、OGRデータソースにある全てのシェイプがそのレイヤタイプと互換性があるかどうかを確認しなければならない。さもなければ、MapServerが実行時にジオメトリ型の不一致についてのエラーを発生させるかもしれない。
注記2:
この動的な機構により、ラベルキャッシュは互換性を持てない、すなわち'STYLEITEM "AUTO"'を使用しているレイヤにおいて、ラベルキャッシュは自動的に無効になる。
注記3:
STYLEITEM AUTOを使用する場合、MapServerはシンボルファイルにある名称と、OGRによって返されたシンボルの名称を一致させようと試みる。 簡単な解決法として以下のシンボルファイルを使用してみてほしい:
http://www2.dmsolutions.ca/msapps/yk_demo/etc/symbols_mapinfo.sym
OGRがMapserverへと返すシンボルの名称はファイルフォーマットに依存している。 Mapinfoのファイルの場合、このようになる:
- "古いスタイルの"シンボルについては(デフォルトでMapInfo? 3.0のシンボル32から67)、シンボルの名称は'mapinfo-sym-##'である(ここで'##'はシンボルの番号である)。例えば 'mapinfo-sym-32'。
- "フォントシンボル"については、シンボル名は'mapinfo-sym-##'のようになる。ここで'##'はフォントでのシンボルの番号である。この場合、フォント名自身はMapserverに無視される。
- MapInfo?はまた"カスタムシンボル"(ビットマップシンボル)についてもサポートしている… OGRからどのようなものを取得するかはわからないが、MapServerがそれらについては何もしないことは確かである。
OGRINFOユーティリティによりOGRがMapserverへと返すシンボル名の正確な名称を見つけることができる。 各シェイプについてのogrinfoの出力にある"Style"の文字を見てほしい。
5.4 OGRのスタイル情報とMapserverのCLASSオブジェクトのメンバのマッピング
ここに現在サポートされているOGRから得られるスタイルの一覧と、それがMapserverでどのようにマッピングされるかを示す:
線の色
線の色はCLASS.COLORへとマップされる。
線の幅
デフォルトは1ピクセルの線である。 Mapserverにおいては、1ピクセル以上の線幅を取得するためには、(サイズが円形シンボルへと適用されることにより)ラインのレンダリングに用いられる円形シンボルを定義しなければならない。
もしデータソースが1ピクセル以上の線幅を持っていれば、シンボルセットにおいて必ず"default-circle"という名称の円形シンボルを提供する必要がある。もしこのシンボルが存在していれば、ラインは実際の幅を用いて描画される。全てのラインが1ピクセル。
ポリゴンを塗りつぶす色
ポリゴンを塗りつぶす色は直接CLASS.COLORへとマップされる。
現時点で、透過ポリゴンはサポートされていない(常にそれらは不透過となる)。
ポリゴンのアウトライン
ポリゴンがアウトラインの描画色と線幅をデータソースにおいて定義されていれば、上記のラインの描画色および幅同様の規則が適用される。この例外はアウトラインの描画色がCLASS.OUTLINECOLORへとマップされることである。
ポイントシンボル
ポイントシンボルの描画色は直接CLASS.COLORへとマップされる。ポイントシンボルのサイズは直接CLASS.SIZEへとマップされる。
もしシンボルセットが"default-marker"と呼ばれるシンボルを含んでいれば、このシンボルが用いられる。さもなければデフォルトではCLASS.SYMBOL=0(すなわち1ピクセルのドット)となる。
また、ポイントシンボルのレンダリングでどのシンボルが用いられるかを制御することも(いくらかの作業により)また可能である。 OGRはMapserverにシンボルの名称も提供する。もしOGRがMapserverへと返したシンボルの名称がシンボルセットのうちの一つの名称と一致すれば、このシンボルが用いられる。
MapInfo?のポイントシンボル(MapinfoのMIF仕様において32から67)では、OGRにより返される名称は"mapinfo-sym-X"であり、ここでXはMapinfoのシンボルの番号である(例えば"mapinfo-sym-35"は星のシンボル)。
テキストラベル
テキストの文字列はCLASS.TEXTにマッピングされる。テキストの色はCLASS.LABEL.COLORにマッピングされる。テキストの背景色はCLASS.LABEL.BACKGROUNDCOLORにマッピングされる。テキストの高さはCLASS.LABEL.SIZEにマッピングされる。テキストの角度はCLASS.LABEL.ANGLEにマッピングされる。
テキストフォントは以下のルールでマッピングされる:
- もしTTFフォントはサポートされているなら:
- もしネイティブの名前(例えば"Arial")がフォントセットにあれば、そのフォントが用いられる。
- もし1a.が失敗すれば、フォントセットに"default"が存在していれば、この"default"フォントが用いられる。
- もしTTFフォントがサポートされていないか、上記全てのケースが失敗した場合、BITMAP MEDIUMフォントが用いられる。





