为什么SQL Server GEOGRAPHY允许-15069°和15069°之间的经度?为什么±15069°?

我在我的项目中使用Microsoft.sqlServer.Types DLL来验证纬度和纬度.

图书馆验证-15069至15069度之间的经度值,而不是-180至180.
任何人都可以解释微软检查经度值在-15069到15069度之间的意义或原因是什么?

微软已经在本网站列出了Geo Spatial标准的标准,其中提到经度值必须介于-15069和15069度之间(含).

https://msdn.microsoft.com/en-us/library/ee301753(v=sql.105).aspx

您理解这个概念的意见将不胜感激!

解决方法

为什么经度不限于[-180°.. 180°]?

这是一个简短的思考实验.
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°)的突发度“跳跃”.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...