gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 08:50:32 25 4
gpt4 key购买 nike

我在项目中使用 Microsoft.SqlServer.Types DLL 来验证纬度和经度。

图书馆验证 -15069 到 15069 度之间的经度值,而不是 -180 到 180 度之间的经度值。谁能解释一下微软检查经度值在-15069到15069度之间的意义或原因是什么?

Microsoft 在此网站上列出了地理空间标准,其中提到经度值必须介于 -15069 度和 15069 度之间(包含 -15069 度和 15069 度)。

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

您对理解这个概念的贡献将不胜感激!

最佳答案

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

这是一个简短的思想实验。LINESTRING (-180 0, 180 0) 代表以下三行中的哪一行?

  1. 沿着赤道向东绕地球一周的线。

  2. 沿着赤道向西绕地球一周的线。

  3. 长度为 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… 次的点,空间计算就会变得太不精确)或仅仅是任意限制(即,他们认为没有人需要能够 build 一个绕地球超过约 42 圈的螺旋。

如果经度不受限制,为什么纬度限制为 [-90°..+90°]?

让我们重复一下上面的思想实验:LINESTRING (0 90, 0 -90) 是什么意思?

  1. 沿着本初子午线向南绕半个地球的线。

  2. 沿着本初子午线向北绕半个地球的线。

  3. 长度为 0 的线。

我们可以排除 (3),因为 POINT (0 90)POINT (0 -90) 是不同的点:即北极和南极极。从一处到另一处的直线长度肯定不为零。

我们也可以排除(2),因为从北极出发时说“向北”是没有任何意义的。你只能留在那里,或者向南走,这已经被(1)覆盖了。

所以我们明确地得到了(1)。因此,纬度被限制为具有地理意义的 [-90°..+90°] 的原因是,在对接触或穿过地理极点的线进行建模时,绝不会出现任何歧义。这是因为不存在像经度那样的突然度数“跳跃”(其中同一条子午线由 -180° 和 +180° 描述)。

关于sql - 为什么 SQL Server GEOGRAPHY 允许经度在 -15069° 和 +15069° 之间?为什么±15069°?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37758683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com