簡體   English   中英

Mysql數據庫設計 - 存儲單個和多個lat長

[英]Mysql Database design - Storing single and multi lat longs

我有一個mysql數據庫表,它將存儲建築物和事件的位置以及其他一些東西。 所有位置都存儲在一個表中,並通過他們自己的多個表鏈接到建築物,事件等。 這樣我就可以在地圖上顯示點,也可以過濾等。

然而問題來自於一些具有單個位置的東西,所以1緯度,長但有些像軌道具有多個緯線長位置,並且像大型體育場的東西可能在其上具有多邊形。 這些也存儲為lat,long的列表,第一個和最后一個是相同的。

我想知道我應該如何將它存儲在mysql數據庫中。 最初我只有一個lat,long和id的列用於查找表。 我是否應該為坐標設置另一個查找表,或者在將數據以某種方式放入數據庫之前將其序列化,或者我應該將整個字符串存儲在一個字段lat1,long1 lat1,long1; lat2,long2; lat1,long1中

有什么建議?

通過將整個“序列化”多邊形推入單個字段,我不會從一開始就對數據進行去規范化。

相反,我有一個多邊形表(帶有多邊形ID和可能的輔助每個多邊形信息,例如它是一個實際的閉合多邊形還是只是一個折線 - 盡管可能也可以通過最后一個點在下表中表示等於某個多邊形的第一個)和PointsInPolygon表(具有點的坐標,多邊形ID外鍵,多邊形內的頂點數 - 后兩者共同唯一)。

標准化將使(如常)您的生活更加簡單,即使是臨時查詢(在本例中包括“X附近的多邊形”,多邊形點等)。 與往常一樣,如果確定某些特定查詢確實需要優化(以表更新,完整性檢查等為代價),您可以稍后添加冗余非規范化值。 在這方面,地理數據與其他類型沒有什么不同。

由於您沒有對位置進行任何查找,並且您正在使用(我假設)Google Maps API,因此最簡單的解決方案可能是將lat / lon列表編碼為JSON並存儲在varchar列中。

您可以直接從數據庫輸出JSON,以供您使用的Google Maps API代碼。 我建議你使用一些簡單的JSON結構,如: ["point",1.23456,2.34567]["line",1.23456,2.34567,3.45678,4.56789]等等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM