【问题标题】:SQL - Geography calculationsSQL - 地理计算
【发布时间】:2021-10-06 13:42:57
【问题描述】:

在 SQL 中,我存储了地理位置。我想检查地理是否覆盖了半个地球以上、地理是否跨越国际日期变更线或地理是否跨越赤道。

我想出了下面的逻辑,现在确定它是否正确。

  1. 地理覆盖全球一半以上 - 逻辑是否与第 3 点相同
  2. 跨越国际日期变更线的地理 - 如果国际日期变更线的坐标在给定坐标范围内,那么它似乎越过了国际日期变更线
  3. 穿越赤道的地理 - 如果给定坐标的任何纬度

请纠正有更好的逻辑。

【问题讨论】:

  • 您是说以 0° 0° 为中心的一英里圆形覆盖了地球的一半以上?在我看来,您不能使用 3 的逻辑来回答 1。
  • 好的,那么你有什么建议@Damien_The_Unbeliever

标签: sql geography sqlgeography


【解决方案1】:

不确定您使用的是什么 SQL 数据库,但大多数都有空间功能。语法和纬度/经度顺序可能因数据库而异。

大于半球:

ST_Area(geo) > 地球表面积 / 2

穿越逆子午线(虽然日期线略有不同)

ST_Intersects(geo, ST_GeographyFromText('Linestring(180 -90, 180 0, 180 0)'))

穿越赤道:

ST_Intersects(geo, ST_GeographyFromText('Linestring(-180 0, -60 0, 60 0, 180 0'))

【讨论】:

    猜你喜欢
    • 2021-01-24
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    • 2016-09-30
    • 1970-01-01
    • 2012-12-25
    • 2023-03-10
    • 2017-08-03
    相关资源
    最近更新 更多