※ ChatGPTを利用し、要約された質問です(原文:特定範囲内に一部でも属す線分を抽出する方法)
特定範囲内の線分を抽出する方法
2011/01/26 19:10
このQ&Aのポイント
MySQLにてシステムの構築を考えていますが、特定範囲内に一部でも属す線分を抽出する方法について質問です。
線分テーブル「tblLine」には開始座標と終了座標が記録されています。任意の座標点に近い線分を抽出したいと考えています。
具体的には、任意の座標点の周囲10単位の四角形に一部でも属す線分を抽出したいですが、抽出条件の組み立て方がわかりません。
現在MySQLにてシステムの構築を考えていますが、
SQLの組み立てについて壁に当たったので、質問させて頂きます。
線分の座標を表す以下のようなテーブルが存在するとします。
線分テーブル「tblLine」
項目:
開始X座標[SX],
開始Y座標[SY],
終了X座標[EX],
終了Y座標[EY]
このテーブルから任意の座標点(PX,PY)に
近い線分を抽出しようと考えております。
具体的には、上記座標点のX座標、Y座標を
プラスマイナス10して出来る以下の4点
(PX-10,PY-10)
(PX+10,PY-10)
(PX-10,PY+10)
(PX+10,PY+10)
からなる四角形に、線分の一部でも属すものを
すべて抽出できればと考えています。
線分の一部でも属すもので、考えられるパターンは
(1)線分すべてが四角形に含まれる。
(2)線分の開始点or終了点のどちらかが四角形に含まれる。
(3)線分の開始点or終了点を除く一部が四角形に含まれる。
になると思います。
(1)、(2)については、開始点と終了点の座標のどちらかが
PX-10~PX+10とPY-10~PY+10の条件を満たすものとして
抽出すればよい為、SQLを組み立てるのは難しくないですが、
(3)についてはどのようにSQLを組み立てればよいのかが
わかりません。
ちなみに、範囲を四角形にしたのは、
SQLを簡素に、重くならないように考えてのことです。
円(点からの距離)のが簡単or速いということであれば
その方法をご教授願いたいです。
ご回答、またはアドバイスをよろしくお願い致します。
質問の原文を閉じる
質問の原文を表示する
お礼
回答ありがとうございます。 この方法ではP点を線分毎に座標変換することに なりますよね? 線分は今のところの想定で10万レコード程に なるため、一つ一つの線分に対してP点の 座標変換を行うとご指摘の通り重くなってしまうのでは ないでしょうか。 まずこの方法でどのくらい時間がかかるのか検証してみようと 思います。