OpenLayersを利用して、ラインの最後尾の頂点にアイコンを追加する

はじめに

自治体などでは、自治体が保有する道路の位置を表示した図面を道路網図として公開しています。その際、道路の起点から終点までの位置がわかるよう、アイコンを設定しています。

今回も、SLD利用しますが、SLDでは、始点と終点のアイコンを設定できるような定義が用意されていないため、SLDのベンダーオプション(Vendor Option)を利用し、SLDReader本体をカスタマイズして、ラインの最後尾の頂点にアイコンを追加してみました。

ラインの最後尾の頂点にアイコンを追加する例

l_road.txt

SLDのベンダーオプション(Vendor Option)に、アイコンのパスと、サイズの要素を追加しています。あと、UOMの対応もできたので、UOMをLineSymbolizerの属性に追加しています。

sldreader.js

SLDReader本体をカスタマイズします。ベンダーオプションのアイコンのパスと、サイズの要素、UOMの値を取り込んでいます。

jsコード

ベンダーオプションのアイコンのパスと、サイズの要素から新たにstyleを生成し、
既存のstyleの最後尾に追加します。

また、この際、矢印の向きが正しい向きになるよう、最後尾の頂点とその前の頂点から
角度を計算し、rotationに設定しています。

カスタマイズ後の地図

拡大すると、アイコン及びラインのサイズも大きくなります。

まとめ

ラインの頂点にアイコンを追加する機能は、QGISなど、GISでは一般的な機能ですが、SLDの標準機能で対応できなかったことは残念でした。一応、SLDのベンダーオプション(Vendor Option)を利用したり、SLDReader本体のカスタマイズで対応しましたが、カスタマイズ箇所が多く、スマートなやり方ではないので、引き続き、別の方法も調査してみます。

シェアする

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

フォローする