平行線発生アルゴリズムの悩み
 
7.最後のまとめ
以上の説明より、平行線発生が如何にややこしいか、雰囲気だけでも感じ取って頂けたでしょうか。実は、平行線にまつわる問題点の指摘は、そうですね、直感的には全体の半分も書けていないと言うのが正直な所です。これ、決して大袈裟に言っている訳ではありません。と言うのは、今までは、元の基準線の座標点列について、比較的良い品質のデータを仮定して来ました。しかし実際には、無駄に座標記述点(補間点)を作られたり(無意味に一直線上に補間点が並ぶと言う意味です)、同一座標の補間点を数点重複して作られたり、平行移動の幅=0に対応するために特殊処理が必要であったり、実に細々した対応法、工夫の積み重ねが必要です。考えて見れば、GIS自体が細かい工夫の積み重ねなのかもしれません。

また、元の基準線が開いているか、閉じているか、と言う識別も重要です。実は開いているか、閉じているかに応じて、終端部の処理が異なります(図 12参照)。よってこの場合は、元の基準線の解釈法について、明確に定義しておかなければいけません。

更に、弊社が平行線を必要とする場合は、単に平行線の形状だけではなく、元の基準線上の頂点と発生させた平行線の頂点の対応関係が必要になることが多いため、この対応関係も平行線の形状の構築計算と同時に算出しなければいけません(図 13参照)


図 12 頂点の間の対応関係

また、閉じている場合は、平行移動の幅を増やしていくと、最後には平行線が消えてしまう可能性があるのかもしれません(図 13参照)。

更に記すと、ここに書いたことは単なる問題提起、或いは要件定義に連なる話しにしか過ぎず、実際には、最終的に選択された形状のルールを満たす為のアルゴリズムの考案も必要になります。実用レベルにまで達したルゴリズムはそれなりに複雑になります。


図 13 閉合内側接続の場合の平行線の消滅
それやこれやで、この問題に関して記述しておかなければいけない事項は尽きないのですが、そろそろ、書き続けるためのエネルギーが切れつつあるため、この辺で筆をおきます。

ちなみに、手前味噌になりますが、弊社では上記の様な平行線の発生に関わる問題を分析、整理して、出来るだけ理想に近付きつつも、現実的に実装可能なアルゴリズムを編み出し、その結果をCOMのライブラリとして整理しております。このCOMのライブラリを使えば、多様なタイプの平行線を柔軟に発生させることが可能です。

 

 

All Rights Reserved, Copyright © 2006 NCM