2011-03-14 111 views
0

我想存儲一串由數據庫中的一對緯度和經度系列組成的路線。我希望能夠獲得給定密鑰的所有路由。存儲路線的經度和緯度

我的表設置了現在的方法如下:

路由ID訂購緯度經度

但路線可以有很多套的緯度和經度的,所以就變成:

RouteID Order Latitude Longitude 
1   0  X   Y 
1   1  X   Y 
1   2  X   Y 
1   3  X   Y 
1   4  X   Y 
2   0  X   Y 
2   1  X   Y 

我有另一個名爲R的表,它有RouteID,它引用了這個路由表。 現在的問題是: 1.這看起來合理嗎?

  1. 如果沒有什麼是做這個

更新更好的方法: 所以其他表稱爲TEMP,它具有以下格式

TempID路由ID用戶名AttributeX AttributeY

當我做一個SQL:

SELECT R.LATITUDE, R.LONGITUDE 
FROM TEMP T, ROUTE R 
WHERE T.UserID =1 
ORDER BY R.ORDER ASC ; 

而在我的表格中,當前的用戶ID 1有兩條路線,但是它打印出每個格子兩次。 我的SQL錯了嗎?

回答

2

這對我來說很合適。

但是不要用名爲R的表污染世界。想想那個追隨你的傢伙,R是什麼意思?

其他表應該可能被命名爲Routes,該表可能應該被命名爲RoutePoints或者只是Points或其他信息。

SELECT R.LATITUDE, R.LONGITUDE 
FROM TEMP T INNER JOIN ROUTE R ON T.ROUTEID = R.ROUTEID 
WHERE T.UserID =1 
ORDER BY R.ORDER ASC 

可能的工作:

和SQL,當你想使用INNER JOIN你用了CROSS JOIN

+1

是的..我只是把R作爲例子在這裏。 – aherlambang 2011-03-14 23:38:18

+0

好聽!你讓我在那裏擔心。但結構看起來很好!如果您需要其他字段,例如點之間的計算距離 - 稍後添加它們! – 2011-03-14 23:44:40

+0

我更新了我的問題......幫助我的想法?我的SQL技能是生鏽的 – aherlambang 2011-03-14 23:53:43

0

這很大程度上取決於您在存儲該信息後想要處理的信息。如果你只是想打印一張給定路線的地圖,你的桌面設置就可以。如果您想知道兩條路線是相交還是重疊,您應該瞭解更多關於地理信息系統(GIS)的信息。 GIS Stackexchange是開始提問的好地方。

+0

和MikeEast的+100 - 好名字勢在必行! – thursdaysgeek 2011-03-14 22:37:42

+0

是的,我想要做的就是打印一張路線圖。沒有其他的... – aherlambang 2011-03-14 23:37:53

1

您很可能想要使用空間填充曲線或空間索引。我用它來存儲郵政編碼,並用縮放級別的1個操作符來查詢它們。歡迎您通過phpclasses.org(hilbert-curve)下載我的課程。