小数点前和小数点后,经度和纬度可以有多少位数字?
这是一个例子,我从一个Windows Phone设备发送的位置:
Latitude=-63572375290155
Longitude=106744840359415
这非常长,超过了我的表列大小,并导致错误。
小数点前和小数点后,经度和纬度可以有多少位数字?
这是一个例子,我从一个Windows Phone设备发送的位置:
Latitude=-63572375290155
Longitude=106744840359415
这非常长,超过了我的表列大小,并导致错误。
如果纬度坐标报告为-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公里)
更新:
这是一幅关于坐标精度的有趣连环画。
谷歌map实际上使用符号值来表示位置:
纬度:最大/分钟90.0000000到-90.0000000 经度:最大/分钟180.0000000 ~ -180.0000000
所以如果你想在你的项目中使用坐标,你需要DECIMAL(10,7) ie。为SQL。
总共最大纬度是:9(12.3456789),经度10(123.4567890),它们都有最大7个小数字符(至少是我可以在谷歌地图中找到的),
例如,Rails和Postgresql中的两列看起来都是这样的:
t.decimal :latitude, precision: 9, scale: 7
t.decimal :longitude, precision: 10, scale: 7
编辑:
正如Jasie所说,最大小数应该是8,但只有少数web服务接受这一点。
有效经度是-180度到180度。
纬度应该在零下90度到90度之间,但是非常靠近两极的地区是不可转位的。
因此,EPSG:900913 / EPSG:3785 / OSGEO:41001规定的确切限制如下:
有效经度是-180度到180度。 有效纬度范围为-85.05112878度至85.05112878度。
在SQL Server中存储Lat Long值的理想数据类型是十进制(9,6)
正如其他人所说,这是在大约10cm的精度,而只使用5字节的存储。
例如:CAST(123.456789 as decimal(9,6)) as [LatOrLong]
请查看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)单位为米。
我知道已经有几个答案了,但我添加了这个,因为这增加了关于小数点后的位置和所要求的最大长度的大量信息。
纬度和经度的长度取决于精度。每项的绝对最大长度为:
纬度:12个字符(例如:-90.00000001) 经度:13个字符(例如:-180.00000001)
对于两个hold:最多8个贴花的地方是可能的(虽然不常用)。
对精度依赖的解释:
详见维基百科上Decimal degrees文章的完整表格