为什么SQL Server GEOGRAPHY允许-15069°和15069°之间的经度?
我在我的项目中使用Microsoft.SqlServer.Types DLL来验证纬度和纬度.
图书馆验证-15069至15069度之间的经度值,而不是-180至180. 微软已经在本网站列出了Geo Spatial标准的标准,其中提到经度值必须介于-15069和15069度之间(含). https://msdn.microsoft.com/en-us/library/ee301753(v=sql.105).aspx 您理解这个概念的意见将不胜感激! 解决方法为什么经度不限于[-180°.. 180°]?这是一个简短的思考实验. 沿赤道向东方向行驶的全线. 一旦你决定了三种可能性,你会发现你没有办法建模其他两种情况,如LINESTRING(尝试!)…至少不是当你限制经度到(地理上正确的)间隔[ – 180°.. 180°]! 让我们看看当我们放松这个限制时会发生什么: >向东方向走遍全球的线路现在可以建模为LINESTRING(-180 0,180 0). (这似乎符合我们的期望,因为经度越高意味着“向东”.) 是的,但是他们为什么选择正确的±15069度? 那,我不能说.它可能与浮点精度有关(即,如果您指定了一个“包裹”地球超过15,069°÷360°= 41,8583 …次的点)或简单的任意极限(即,他们认为没有人需要能够在全球范围内构建一个大约42次的螺旋). 如果经度不受限制,为什么纬度限于[-90°.. 90°]? 让我们重复上述思想实验:LINESTRING(0 90,0 -90)是什么意思? >沿着主要子午线向南方向走过一半的地球线. 我们可以排除(3),因为POINT(0 90)和POINT(0 -90)是不同的点:即北极和南极.从一个到另一个的线绝对没有零长度. 我们也可以排除(2),因为从北极开始就不会说“向北”.你只能留在那里,或者去南方,这已经被(1)覆盖了. 所以我们最终明确地用(1).因此,为什么纬度被限制在地理上有意义[-90°.. 90°]的原因是因为在对地理极点进行触摸或跨越地理极点的线建模时,从来没有任何歧义.这是因为没有像经度(其中同一子午线被描述为-180°和180°)的突发度“跳跃”. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |