1

バスルートを表すテーブルに、実際のルートジオメトリのSQLServer空間列を含むレコードがあります。Geography(列タイプに格納されます。)

私はOpenLayersを使用して、これらのバスルートをOpenStreetMapレイヤーの上に表示しています。

バス路線が重なっている場合、現在は一番上の路線しか見えません。線に透明度を使用してみましたが、見栄えがよくありません。

OpenLayersまたはSQLServerSpatialのいずれかで、重複する行を取得し、それらをすべて表示するためにわずかにシフトする(ただし、それらを平行に保つ)方法はありますか?これを処理するために何も組み込まれていない場合、これを実現するための標準的なアルゴリズムはありますか?

4

1 に答える 1

2

SQL Server Spatial Toolsには、(地理ではなく)ジオメトリを指定されたXおよびYの量だけShiftGeometryシフトするメソッドがあります。

したがって、連続する地理ごとに、次のことができます。

  1. ジオメトリに変換
  2. 複数行の文字列を行に分割します
  3. バッファリングし、以前に処理されたすべての行と交差します
  4. 交差する線を勾配に適したXとYの量だけシフトします
  5. 角を一緒に元に戻します(??)
  6. 表示用に再構成

または、線をずらすのではなく、太らせます。

  1. 交差を検出するのに十分なバッファ
  2. 以前に処理された形状と交差する
  3. 前のものの下に太い形として見えるのに十分な、再びバッファリングします(-いくらですか??)
  4. 元の形のユニオン
  5. レイヤー付きで表示します。

高価に見えます!

OpenLayersはこれに何かを持っているかもしれません。そうでない場合は、それを達成するためのより良いプリミティブがあるかもしれません。SQL Serverでは、CPUに非常に負荷がかかります。交差点は安くはなく、非常に迅速に多くの交差点を実行する必要があります。

于 2010-09-05T05:16:49.077 に答える