小数点前和小数点后,经度和纬度可以有多少位数字?

这是一个例子,我从一个Windows Phone设备发送的位置:

Latitude=-63572375290155
Longitude=106744840359415

这非常长,超过了我的表列大小,并导致错误。


当前回答

在SQL Server中存储Lat Long值的理想数据类型是十进制(9,6)

正如其他人所说,这是在大约10cm的精度,而只使用5字节的存储。

例如:CAST(123.456789 as decimal(9,6)) as [LatOrLong]

其他回答

有效经度是-180度到180度。

纬度应该在零下90度到90度之间,但是非常靠近两极的地区是不可转位的。

因此,EPSG:900913 / EPSG:3785 / OSGEO:41001规定的确切限制如下:

有效经度是-180度到180度。 有效纬度范围为-85.05112878度至85.05112878度。

请查看UTM坐标系https://en.wikipedia.org/wiki/Universal_Transverse_Mercator_coordinate_system。

对于特定的地图投影,这些值必须以米为单位。例如,UTM第11区阿西尼博因山(Mount Assiniboine,位于50°52′10″N 115°39′03″W)的山峰用11U 594934.108296 5636174.091274表示,其中(594934.108296,5636174.091274)单位为米。

如果纬度坐标报告为-6.3572375290155或-63.572375290155,那么您可以四舍五入并存储多达6位小数点后10厘米(或0.1米)的精度。如果坐标参考系(CRS)不是EPSG:4326(例如,EPSG:3857),则x和y值测量到原点的距离,单位是米,而不是度。

概述

南半球和北半球的有效纬度范围(以度为单位)分别为-90和+90。经度在-180和+180范围内,分别表示本初子午线以西和以东的坐标。作为参考,赤道的纬度为0°,北极的纬度为北纬90°(写为90°N或+90°),南极的纬度为-90°。

本初子午线的经度为0°,穿过英国的格林威治。国际日期变更线(IDL)大致遵循180°经度。经度值为正值的经度落在东半球,经度值为负值的经度落在西半球。

十进制精度

Six (6) decimal places precision in coordinates using decimal degrees notation is at a 10 cm (or 0.1 meters) resolution. Each .000001 difference in coordinate decimal degree is approximately 10 cm in length. For example, the imagery of Google Earth and Google Maps is typically at the 1-meter resolution, and some places have a higher resolution of 1 inch per pixel. One meter resolution can be represented using 5 decimal places so more than 6 decimal places are extraneous for that resolution. The distance between longitudes at the equator is the same as latitude, but the distance between longitudes reaches zero at the poles as the lines of meridian converge at that point.

对于毫米(mm)精度,则以十进制格式用8位小数表示纬度/长度。由于大多数应用程序不需要这样的精度,在大多数情况下,小数点后6位就足够了。

在另一个方向上,整个十进制度代表约111公里(或60海里)的距离,0.1的十进制度差代表约11公里的距离。

下面是一个以0,0为起始点的纬度与delta度的小数位差和以米为单位的估计距离的表。

Decimal places Decimal degrees Distance (meters) Notes
0 1.0 110,574.3 111 km
1 0.1 11,057.43 11 km
2 0.01 1,105.74 1 km
3 0.001 110.57
4 0.0001 11.06
5 0.00001 1.11
6 0.000001 0.11 11 cm
7 0.0000001 0.01 1 cm
8 0.00000001 0.001 1 mm

度-分-秒(DMS)表示

对于DMS符号,1弧秒= 1/60/60度=约30米长,0.1弧秒delta =约3米。

例子:

0° 0' 0“ W, 0° 0' 0” N ⟹ 0° 0' 0“ W, 0° 0' 1” N ⟹ 30.715 米 0° 0' 0“ W, 0° 0' 0” N ⟹ 0° 0' 0“ W, 0° 0' 0.1” N ⟹ 3.0715 米

1角分= 1/60度= ~2000m(2公里)


更新:

这是一幅关于坐标精度的有趣连环画。

在SQL Server中存储Lat Long值的理想数据类型是十进制(9,6)

正如其他人所说,这是在大约10cm的精度,而只使用5字节的存储。

例如:CAST(123.456789 as decimal(9,6)) as [LatOrLong]

谷歌map实际上使用符号值来表示位置:

纬度:最大/分钟90.0000000到-90.0000000 经度:最大/分钟180.0000000 ~ -180.0000000

所以如果你想在你的项目中使用坐标,你需要DECIMAL(10,7) ie。为SQL。