在数据库中存储GPS坐标的最佳方法

时间:2014-07-01 05:59:21

标签: c# sql sql-server database c#-4.0

是否有关于GPS坐标应存储在数据库中的最佳实践,然后在请求时将其转换为所需格式?

我有以下内容:

S33° 56' 51.972" E18° 51' 25.83"

将它存储在数据库或其他格式中是否很好?我只是想知道,因为它包含一个度数符号和分钟和秒符号。

以上内容是否需要保存为NVARCHAR(50)VARCHAR(50)是否足够?

我正在使用SQL Server,但这应该适用于所有形式的数据库。

3 个答案:

答案 0 :(得分:2)

首先,您应该将DMS(度,分,秒)坐标转换为浮点数。这是algorythm: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

答案 1 :(得分:1)

这仅适用于SQL Server。该命名地理位置有一个特殊的DataType。见http://msdn.microsoft.com/en-us/library/cc280766.aspx

答案 2 :(得分:0)

在我看来,更好的方法是存储GPS坐标的十进制值。因此,单位将是学位,它需要您的数据库中较少的字段。

您可以在此处看到有关如何执行此操作的示例:Convert Degrees/Minutes/Seconds to Decimal Coordinates