在数据库中存储 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 坐标的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

使用nodejs和数据库存储GPS纬度和经度的最佳方法

对于 GPS 坐标,我应该在数据库中存储多少位有效数字?

将 GPS 坐标发送到服务器的最佳方式?

在 MongoDB 中存储路由

在 mysql 数据库中存储跟踪应用程序的 GPS 数据的最佳实践

使用 Windows Azure 在 iOS 中进行 GPS 跟踪的最佳实践?