在mysql數據庫中,我有地理區域表,其中每行都有一個id和一組多邊形頂點的座標(lat,long)拼成的面積(可頂點的數量不受限制),並標記爲這樣:從mysql數據庫中選擇一行,根據lat,多邊形的長座標
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
---------------------------------------------|-------------
. . .
. . .
. . .
我所試圖做的是當給出了具體的X,Y座標:
如果marker == 0 我需要選擇其中給定X,Y座標的行落在多邊形內或者X,Y座標在多邊形的一定距離內。
如果marker == 1 頂點是一條線上的點(即poly = 0的區域),並且我需要選擇其中X,Y座標位於該線的特定距離內的行。
我不知道如何從這裏開始。我如何使用MySql查詢來完成此操作?我應該使用其他方法結合多個查詢來完成這項工作嗎?
重新正常化的選項?因此,你將不得不解析每個coor集合,並在可能的過程中進行一些數學運算。 – Randy
@Randy:不確定你的意思是重新正常化?你能解釋一下嗎? – Derek
空間擴展也可能有用(正常化後):http://dev.mysql.com/doc/refman/5.1/en/spatial-extensions.html –