1

我正在使用 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但我似乎找不到返回中心点的方法?

对这些问题的任何帮助都将非常感激并受到高度赞赏。

谢谢!

4

2 回答 2

1

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

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

于 2013-02-02T22:37:00.670 回答
1

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

于 2013-01-27T20:56:25.693 回答