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

Bre*_*ogt 5 c# sql database sql-server c#-4.0

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

我有以下几点:

S33° 56' 51.972" E18° 51' 25.83"
Run Code Online (Sandbox Code Playgroud)

像这样存储在数据库中还是以其他格式存储好?我只是想知道因为它包含度数符号和分秒符号。

以上是否需要保存为一个NVARCHAR(50)或就VARCHAR(50)足够了?

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

Sun*_*dan 8

首先,您应该将 DMS(度、分、秒)坐标转换为浮点数。这是算法:如何在度、分、秒之间转换为十进制坐标

之后,使用两个 DECIMAL 类型的字段来存储相应的纬度和经度值。使用类似 DECIMAL(15,10) 的值。总共 15 位数字,其中小数点后 10 位,小数点前 5 位。此数据类型非常适合 GPS 坐标,并允许您通过地理坐标搜索记录。

以下是有关 SQL Server DECIMAL 类型的信息: http://msdn.microsoft.com/en-us/library/ms187746.aspx


gsh*_*arp 2

这仅适用于 SQL Server。有一个特殊的数据类型用于该命名的地理。请参阅http://msdn.microsoft.com/en-us/library/cc280766.aspx