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

C# 在数据库中存储GPS坐标的最佳方法,c#,sql,sql-server,database,c#-4.0,C#,Sql,Sql Server,Database,C# 4.0,在数据库中存储GPS坐标的格式,然后根据要求将其转换为所需格式方面,是否有最佳做法 我有以下资料: S33° 56' 51.972" E18° 51' 25.83" 像这样将其存储在数据库中还是以其他格式?我只是想知道,因为它包含一个学位符号和分秒符号 是否需要将上述内容保存为NVARCHAR(50)或VARCHAR(50)就足够了 我使用的是SQL Server,但这应该适用于所有形式的数据库。这只适用于SQL Server。有一个名为geography的特殊数据类型。请参见首先,您应该将D

在数据库中存储GPS坐标的格式,然后根据要求将其转换为所需格式方面,是否有最佳做法

我有以下资料:

S33° 56' 51.972" E18° 51' 25.83"
像这样将其存储在数据库中还是以其他格式?我只是想知道,因为它包含一个学位符号和分秒符号

是否需要将上述内容保存为
NVARCHAR(50)
VARCHAR(50)
就足够了


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

这只适用于SQL Server。有一个名为geography的特殊数据类型。请参见

首先,您应该将DMS(度、分、秒)坐标转换为浮点数。以下是算法:

然后,使用两个十进制字段来相应地存储纬度和经度值。使用类似于十进制(15,10)的东西。这一共是15位数字,其中10位在小数点后,5位在小数点前。此数据类型非常适合GPS坐标,并允许您按地理坐标搜索记录

以下是有关SQL Server十进制类型的信息:
在我看来,更好的方法是存储GPS坐标的十进制值。因此,单位是学位,它需要数据库中更少的字段

您可以在这里看到一个关于如何操作的示例: