在数据库中存储 GPS 坐标的最佳方法
Posted
技术标签:
【中文标题】在数据库中存储 GPS 坐标的最佳方法【英文标题】:Best way of storing GPS coordinates in database 【发布时间】:2014-07-01 05:59:20 【问题描述】:对于应该将什么格式的 GPS 坐标存储在数据库中,然后在请求时将其转换为所需格式,是否有最佳做法?
我有以下几点:
S33° 56' 51.972" E18° 51' 25.83"
这样存储在数据库中还是以其他格式存储好?我只是想知道,因为它包含度数符号和分秒符号。
以上内容需要保存为NVARCHAR(50)
还是VARCHAR(50)
就足够了?
我正在使用SQL Server
,但这应该适用于所有形式的数据库。
【问题讨论】:
【参考方案1】:首先,您应该将 DMS(度、分、秒)坐标转换为浮点数。这是算法:how to convert between degrees, minutes, seconds to Decimal coordinates.
之后,使用两个 DECIMAL 类型的字段来相应地存储您的纬度和经度值。使用像 DECIMAL(15,10) 这样的东西。总共有 15 位数字,其中小数点后有 10 位,小数点前有 5 位。这种数据类型非常适合 GPS 坐标,并允许您按地理坐标搜索记录。
以下是有关 SQL Server 的 DECIMAL 类型的信息: http://msdn.microsoft.com/en-us/library/ms187746.aspx
【讨论】:
【参考方案2】:这仅适用于 SQL Server。该命名地理有一个特殊的数据类型。见http://msdn.microsoft.com/en-us/library/cc280766.aspx
【讨论】:
【参考方案3】:在我看来,更好的方法是存储 GPS 坐标的十进制值。因此,单位将是学位,并且它需要的数据库中的字段更少。
您可以在此处查看如何操作的示例:Convert Degrees/Minutes/Seconds to Decimal Coordinates
【讨论】:
以上是关于在数据库中存储 GPS 坐标的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章