【问题标题】:SQL-Server Geography Remove an overlapSQL-Server 地理 删除重叠
【发布时间】:2014-09-26 15:05:15
【问题描述】:

我正在尝试删除与 SQL-Server 2012 的重叠,但我不知道该怎么做。

例子:

CREATE TABLE #temp(
[Geo] [geography] NOT NULL)
INSERT INTO #temp
VALUES (geography::STGeomFromText('POLYGON((0 0, 0.1 0, 0.1 0.1, 0 0.1,0 0))', 4326))
INSERT INTO #temp
VALUES (geography::STGeomFromText('POLYGON((0.05 0.05, 0.15 0.05, 0.15 0.15, 0.05 0.15, 0.05 0.05 ))', 4326))
SELECT * FROM #temp

我的想法是使用 STIntersection() 函数来获取重叠的多边形,然后以某种方式从其中一个多边形中删除它。

【问题讨论】:

  • 你最终想要一个只是所有区域联合的区域吗?如果是这样,请查看 STUnion。
  • 不,我想从其中一个多边形中删除重叠区域,以便 STIntersects = 0。
  • 然后看看STDifference。也就是说,创建一个新的地理瞬间定义为 a.STDifference(b)
  • 哦,是的,这就是解决方案 :) 非常感谢。

标签: sql sql-server polygon geography


【解决方案1】:

根据上面的 cmets,STDifference 可以解决问题。也就是说,给定两个地理实例 a 和 b 可能重叠也可能不重叠,设置 a = a.STDifference(b) 将从 a 中删除与 b 相交的任何区域。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-04
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多