2016-02-26 44 views
0

我們想知道某個點是否在sql中的網格內。我們也想知道一個點是否在兩個網格內,哪一個在另一個網格內。例如:如果我們有一個網格覆蓋美國,另一個覆蓋德克薩斯。如果你通過德克薩斯州的位置,它將返回德克薩斯州的網格,但如果你通過俄克拉何馬州的一個位置,它將返回美國網格。網格內的點sql

你們知道這是如何實現的嗎?在mysql表中表示這些網格的最佳方式是什麼?

+0

什麼是一個「網格」包括,什麼做一個「點」包括?你有什麼數據可供您使用? – kondrak

+0

網格由cordinates的陣列的讀順時針方向旋轉,例如: [60.470973,8.470395 - 60.470402,8.468442 - 60.471005,8.464301 - 60.472485,8.466253] 甲點由可以將GeoPosition的: 60.471661,8.467305 –

+0

酷,你是否已經有了這樣的數據結構?你能發表一個圖表或描述的表格嗎? – kondrak

回答

0

嗯,這是相當困難的基礎上提供的信息來回答這個問題,但我設想是這樣的:

  • 網格表 - 定義網格的邊界和分配ID
  • 城市分配表 - 表示城市位於基於網格ID和城市ID的給定網格內 - 通過分配ID唯一標識
  • 城市表 - 定義城市的任何屬性,包括其所屬的網格ID - 與城市ID

任何插入到城市表將確定它通過評估網狀邊界所屬的網格(基於其自己的位置),並適當地分配自己。

確定邊界網格的用例可以通過與邊界網格的直接關係實現,也可以基於與另一個網格相同的邊(兩個邊角座標)動態計算。

(這是太長留下的評論,因此,如果你想獲得更多的輸入,隨意評論:))

+0

@Lars Erik或者,你是指網格包含其他網格?我無法理解你的問題 – kondrak

+0

謝謝!當涉及到另一個網格時,我知道如何修復這部分問題。 –