在SQL Server中获取地理多边形区域的中心纬度和经度

4
我有一个地理多边形,创建方式如下:
DECLARE @polyString as varchar(max);
SET @polyString = 'POLYGON((' + @eastAsString + ' ' + @northAsString +',' + @westAsString + ' ' + @northAsString + ',' + @westAsString + ' '+@southAsString +','+ @eastAsString + ' ' + @southAsString +',' +@eastAsString +' ' +@northAsString +'))';

DECLARE @g geography;
SET @g = geography::STPolyFromText(@polyString, 4326)

我想要找到多边形的中心点经纬度?这在sql server中是否可行?

1个回答

6
您可以使用geography类型的EnvelopeCenter()方法。
DECLARE @polyString as varchar(max);
SET @polyString = 'POLYGON((' + @eastAsString + ' ' + @northAsString +',' + @westAsString + ' ' + @northAsString + ',' + @westAsString + ' '+@southAsString +','+ @eastAsString + ' ' + @southAsString +',' +@eastAsString +' ' +@northAsString +'))';

DECLARE @g geography;
SET @g = geography::STPolyFromText(@polyString, 4326)
SELECT @g.EnvelopeCenter().ToString()

为了更好地理解你所说的多边形中心,需要明确定义它的含义,因为可以有不同的定义方式。


谢谢您的回复。我正在寻找从查看二维地图的角度来计算多边形中心点的方法,当我在地图上绘制一个矩形区域时,我想知道该区域的中心点即其纬度/经度坐标。 - Adam
1
你的意思是在多边形周围画一个矩形,就像你会取多边形最小包围矩形的中心一样? - thyme
是的,我正在寻找多边形的最小边界矩形。 - Adam
1
如果您知道纬度/经度,您可以直接获取每个值的最小/最大值,并获取最小/最大纬度/经度对的平均值,从而完成此操作。 - thyme
1
如果你要计算多边形在二维地图上的中心点,你需要使用几何数据类型而不是地理数据类型。地理数据类型将空间数据视为定义在弯曲的三维表面上。如果你的多边形实际上都是规则的四边形轴对齐矩形,那么EnvelopeCenter()方法就足够了。 - Alastair Aitchison

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接