【问题标题】:SQL Server Geography Multipoint InsertSQL Server 地理多点插入
【发布时间】:2013-01-27 20:39:13
【问题描述】:

我正在使用 SQL Server 2012。我有一个表,我在其中跟踪地理列中的单点实例。将它们存储为单点工作正常,但我试图将其中一些组合到一个新表中,它们将是一个多点。我可以通过将 lat 和 long 插入到这样的多点列中来使其工作:

DECLARE @g geography; 
SET @g = geography::STMPointFromText('MULTIPOINT(-104.952784 39.524092, -104.935269 39.542652)', 4326);
INSERT INTO test(loc) values(@g)

我想要做的是从已经是地理数据类型的表中选择值。我不确定是否可以使用基本查询来执行此操作,或者是否必须使用循环来构建它?我似乎无法让它工作。

另外,在我得到它之后,是否有一种方法可以返回多点列的中心点?我一直在使用STStartPointSTEndpoint 等一些方法,但似乎找不到返回中心点的方法?

对这些问题的任何帮助都将非常感激。

谢谢!

【问题讨论】:

  • 对于中心,你想要与两者等距的点吗?

标签: sql-server spatial geography


【解决方案1】:

您正在寻找的是 STCentroid() 方法,但不幸的是,它不适用于 MultiPoint 对象。几年前我提出了一个 Connect 问题,该问题已被 Microsoft 关闭为“不会修复”,但无论如何欢迎您投票:https://connect.microsoft.com/SQLServer/feedback/details/588316/make-geometry-stcentroid-method-work-on-geometries-other-than-polygons

同时,您必须手动求和,然后分别平均 X 和 Y 坐标值,以获得多点的平均“中心”。

【讨论】:

  • 刚刚回到这个。这就是我一直在寻找的。我想我现在必须手动完成。感谢您的帮助
【解决方案2】:

如果我正确理解您的第一个问题,您有两点,分别存储为地理实例。如果是这种情况,您可以使用 STUnion 方法将它们组合成一个地理多点实例。

【讨论】:

    猜你喜欢
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多