use*_*259 286 database-design latitude-longitude
纬度和经度可以多长时间?
我正在通过Windows Phone设备发送非常长的长度:
Latitude=-63572375290155
Longitude=106744840359415
Run Code Online (Sandbox Code Playgroud)
这超出了我的表列大小,我收到错误.
Jas*_*nM1 574
南半球和北半球的有效纬度范围分别为-90和+90.经度分别在-180和+180的范围内指定Prime Meridian的西和东的坐标.
作为参考,赤道的纬度为0°,北极的纬度为北纬90°(写为90°N或+ 90°),南极的纬度为-90°.
在本初子午线为0°,通过英国格林威治去经度.在国际日期变更线(IDL)大致跟随180°经度.正值的经度在东半球下降,负值在西半球下降.
十进制度精度
使用十进制度数符号的坐标精度为六(6)小数,分辨率为10厘米(或0.1米).坐标十进制度的每个.000001差异大约为10厘米.例如,Google地球和Google地图的图像通常为1米分辨率,有些地方的分辨率最高为每像素1英寸.一米分辨率可以使用5个小数位表示,因此超过6个小数位对于该分辨率是无关紧要的.赤道经度之间的距离与纬度相同,但随着经线在该点汇合,经度之间的距离在极点处达到零.
如果"纬度"值报告为-6.3572375290155或-63.572375290155,那么您可以舍入并存储最多6个小数位,精度为10厘米(或0.1米).
对于毫米(mm)精度,则表示纬度/经度,十进制度格式为8位小数.由于大多数应用程序不需要这种精度,因此对于大多数情况,6位小数就足够了.
在另一个方向上,整数十进制度表示~111 km(或60海里)的距离,0.1的十进制度差表示~11平方公里的面积.
下面是使用0,0作为起始点的#decimal的纬度与delta度和以米为单位的估计距离的表.
decimal decimal distance
places degrees (in meters)
------- --------- -----------
1 0.1000000 11,057.43 11 km
2 0.0100000 1,105.74 1 km
3 0.0010000 110.57
4 0.0001000 11.06
5 0.0000100 1.11
6 0.0000010 0.11 11 cm
7 0.0000001 0.01 1 cm
Run Code Online (Sandbox Code Playgroud)
度 - 分 - 秒(DMS)表示
对于DMS表示法1弧秒= 1/60/60度= ~30米长度和0.1弧秒Δδ为~3米.
例:
1弧分= 1/60度= ~2000米(2km)
Lay*_*yke 173
纬度:最大/分钟+90到-90
经度:最大/分钟+180到-180
Mik*_*sin 26
有效经度为-180至180度.
纬度应该在-90度到90度之间,但非常接近极点的区域是不可转位的.
如此精确限制,由EPSG:900913/EPSG:3785/OSGEO:41001规定如下:
Ben*_*ala 21
纬度最大值为:9(12.3456789),经度10(123.4567890),它们都有最多7位小数字(至少是我在谷歌地图中可以找到的),
例如,Rails和Postgresql中的两列都如下所示:
t.decimal :latitude, precision: 9, scale: 7
t.decimal :longitude, precision: 10, scale: 7
Run Code Online (Sandbox Code Playgroud)
在SQL Server中存储Lat Long值的理想数据类型是十进制(9,6)
正如其他人所说,这个精度大约为10厘米,而只使用5个字节的存储空间.
例如 CAST(123.456789 as decimal(9,6)) as [LatOrLong]