2011-07-10 12 views
2

mysqlデータベースでは、各行にidと多角形の頂点座標(緯度、経度)のセットがある地理的領域の表があります。 Y座標、特定のXが与えられたとき多角形の緯度、経度座標に基づいてmysqlデータベースから行を選択

id |    poly_coords    | marker 
------|--------------------------------------|------------- 
    0 | x1,y1|x2,y2|x3,y3|x4,y4|x4,y4|x4,y4| |  0 
---------------------------------------------|------------- 
    1 | x1,y1|x2,y2|x3,y3|x4,y4|x4,y4|x4,y4| |  0 
---------------------------------------------|------------- 
    .      .       . 
    .      .       . 
    .      .       . 

私がやろうとしていますどのようなものです::面積(頂点の数に制限することができます)とのようなマーカーを構成する

  1. 場合marker == 0 指定されたX、Y座標がどの行にあるかを選択する必要がありますポリゴン内にあるか、またはX、Y座標がポリゴンの特定の距離内にある場合に発生します。

  2. マーカーが= 1の場合頂点は線上の点(つまりポリ= 0の領域)であり、X、Y座標が線の特定の距離内にある行を選択する必要があります。

ここから始める方法はわかりません。 MySqlクエリを使用してこれをどのように達成できますか?この作業を行うために、複数のクエリと組み合わせた他のメソッドを使用する必要がありますか?

+0

はオプションを再標準化していますか?そうであるように、おそらく手続きの中で、それぞれのcoor setを解析し、いくつかの数学を行う必要があります。 – Randy

+0

@Randy:再正規化の意味は不明ですか?あなたは説明できますか? – Derek

+0

Spatial Extensionsも便利です(正規化後):http://dev.mysql.com/doc/refman/5.1/en/spatial-extensions.html –

答えて

1

http://www.sql-statements.com/point-in-polygon.html あなたの問題に接近するための基本的な準備ができているはずです。 まず、 "x、y"を表す文字列(または0.0の代わりに0,0の値として0,0を使うと考えるなら "x | y")を表す配列のpoly_coords列を変換するためのストアドプロシージャを作成します。その後、必要な機能を実現するために、リンクに提供されているメソッドをいくつか変更することができます。私はより多くのヘルプを提供するだろうが、私はMySQLや他のSQLにアクセスすることはできません。 もう1つのアプローチは、実際に座標列を解析する必要がないように、リンク内のテーブルを設計することです。

関連する問題