SQL Server地理多点插入

时间:2013-01-27 20:39:13

标签: sql-server spatial geography

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

对这些问题的任何帮助都会很棒并且非常感激。

谢谢!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您正在寻找的是STCentroid()方法,但不幸的是,它不适用于MultiPoint对象。几年前我提出了一个连接问题,微软已经将其关闭为“无法修复”,但欢迎你投票支持:https://connect.microsoft.com/SQLServer/feedback/details/588316/make-geometry-stcentroid-method-work-on-geometries-other-than-polygons

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