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