SQL Geography 类型多边形的重心计算

3
我有一个WKT多边形,想要找出它的质心。 我使用的数据库有地理类型字段来存储我的空间信息。 我正在处理一个WKT 4326字符串列表,检查它们是否有效,并使其有效。 之后,我想计算这些多边形的质心。 我可以看到MS SQL STCentroid返回几何类型。 有人可以告诉我将此质心存储在地理类型中的含义是什么吗?
...为什么没有Geography类型的STCentroid等价物?
谢谢

你使用哪个数据库管理系统(DBMS)? - jarlh
我正在使用Microsoft SQL Server。 - Columbo
2
有一个名为EnvelopeCenter的方法,可能是质心的适当近似值。你看过它并考虑使用它吗? - Damien_The_Unbeliever
1
考虑一个以北极为中心的正方形和一个以南极为中心的第二个正方形。您认为它们的重心应该在哪里? - Damien_The_Unbeliever
EnvelopeCenter 看起来很有趣,谢谢。关于您的第二条评论,我不明白您的意思。您是在谈论如何找到多个多边形的质心吗? - Columbo
1个回答

2

虽然这是在你提问一年后,但我希望这个答案能帮助任何未来的读者,就像我一样,发现这个问题询问同样的事情。

回答你标题中关于查找SQL GEOGRAPHY对象的质心的问题:

您可以使用EnvelopeCenter()来获取GEOGRAPHY的近似中心点,作为圆形。 这将返回一个GEOGRAPHY对象,但您可以从中提取一个中心点以获取纬度/经度,如下所示:

DECLARE @g geography = 'LINESTRING(-120 45, -120 0, -90 0)';
DECLARE @lat FLOAT,
        @lon FLOAT

@lat = @g.EnvelopeCenter().Lat
@lon = @g.EnvelopeCenter().Long

有人能告诉我将这个质心存储在地理类型中的影响是什么吗?

...为什么没有等效于地理类型的STCentroid?

如果您指的是GEOMETRY,我不建议将其转换为GEOMETRY并使用STCentroid(),就像此文章所建议的那样,因为它只在某些情况下起作用。因为GEOMETRY对象是一个平面2D对象,您无法准确地从类似地球这样的形状中取出一个平面区域,特别是当您靠近极点时,而GEOGRAPHY对象则设计了考虑到这一点。在没有进行某种形式的变形的情况下,无法从球体中形成一个平面矩形是不可能的。越靠近赤道,经验失真越少,但在极点处可能会非常夸张。

要详细了解此内容,请查看此网站,该网站显示了在查看平面地图时国家的真实大小:https://www.thetruesize.com/

如果您需要更多信息,请参阅Vox的这个有趣视频。


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