私は2つのテーブルを持っています: ポイントがあるテーブルが1つ、 ポリゴンが1つのテーブル。MySQL:各点に最も近いポリゴンを見つけよう
私は各点に最も近いポリゴンを結合するクエリを探しています。
points
表は次のようになります。
|-id-|-name-|-location---|
|====|======|============|
|-1--|-A----|-POINT(1 0)-|
|-2--|-B----|-POINT(3 4)-|
|-3--|-C----|-POINT(2 9)-|
|-4--|-D----|-POINT(6 2)-|
polygons
表は次のようになります。
|-id-|-name-|-area---------------------|
|====|======|==========================|
|-1--|-A----|-POLYGON(1 0,3 4,2 9,1 0)-|
|-2--|-B----|-POLYGON(3 4,2 9,6 2,3 4)-|
|-3--|-C----|-POLYGON(2 9,6 2,1 0,2 9)-|
|-4--|-D----|-POLYGON(6 2,1 0,3 4,6 2)-|
このクエリの好ましい出力はこのようなものになるだろう:(ダミーデータ)
|-id-|-name-|-location---|-id-|-name-|-area---------------------|
|====|======|============|====|======|==========================|
|-1--|-A----|-POINT(1 0)-|-2--|-B----|-POLYGON(3 4,2 9,6 2,3 4)-|
|-2--|-B----|-POINT(3 4)-|-3--|-C----|-POLYGON(2 9,6 2,1 0,2 9)-|
|-3--|-C----|-POINT(2 9)-|-2--|-B----|-POLYGON(3 4,2 9,6 2,3 4)-|
|-4--|-D----|-POINT(6 2)-|-1--|-A----|-POLYGON(1 0,3 4,2 9,1 0)-|
( 、代わりのみの最寄りの
SELECT *, ST_DISTANCE(points.point, polygons.polygon) FROM points INNER JOIN polygons
しかし、それはすべてのポリゴンの距離を返します:EDITは:https://gist.github.com/badeend/dfdf826a1afbeeac5866be286a9bd30e)私は次のクエリを試してみました
:単純にこのスキーマを作成するには、次の.SQLを実行します。
「SHOW CREATE TABLE [your_table]」の出力といくつかのサンプルデータを提供してください。http://www.sqlfiddle.com –
@RaymondNijland例データとともに.sqlを追加しました。バイナリデータが大きすぎるため、sqlfiddle.comは自分のSQLを受け入れません。 – dbntsq