SLDReaderを利用して、地図の解像度によって、アイコンのサイズを変更する

前回の投稿では、SLDReaderを利用して、SLD形式で定義されたスタイル情報を読み取り、OpenLayersで使用できるスタイルに変換し利用しました。今回は、その続きで、SLDReaderを利用して、地図の解像度によって、アイコンのサイズを変更できるかを試してました。

まず最初に、SLDのUOM(Unit of Measure)属性が設定できないか調べました。SLDには、UOMという属性が設定でき、UOMを設定することで、スタイルのサイズを地図の単位(例えばメートル)で指定することが可能になります。

UOMの概要

  • UOMは、スタイルのプロパティに単位を指定する属性です。
  • 主に、PointSymbolizerやLineSymbolizer、PolygonSymbolizerなどのサイズや幅を設定する際に使用されます。
  • 例えば、uom=”http://www.opengis.net/ogc/metre”を指定すると、サイズが地図上のメートル単位で解釈されます。

UOMを含むSLDを、SLDReaderで利用しようと考えましたが、公式サイトによると、SLDReaderは現時点でUOMに対応していないとのことです。UOMを必要とする場合は、SLDReaderで生成したスタイルをカスタマイズする必要があるとのことです。

UOM使用例

だめもとで、UOMを設定したSLDを読み込ませてみました。

s_aed_uom.txt

UOM設定後の地図

仕様通りですが、アイコンのサイズが変化しません。

jsコード

仕方ないので、SLDReaderで生成されたスタイルをカスタマイズし、地図の解像度に基づいてサイズを調整することで、再現しました。
※SLDReaderで生成されたスタイルでは、SLDのサイズが格納されていないので、SLDReader本体ででsldSizeを設定しています。

カスタマイズ後の地図

地図の解像度によって、アイコンのサイズが変化しています。

まとめ

UOMが対応していれば完璧だったのですが、しょうがないですね。今後も引き続きテキストやラインも試してみようと思います。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする