我有一个WKT多边形,想要找出它的质心。
我使用的数据库有地理类型字段来存储我的空间信息。
我正在处理一个WKT 4326字符串列表,检查它们是否有效,并使其有效。
之后,我想计算这些多边形的质心。
我可以看到MS SQL STCentroid返回几何类型。
有人可以告诉我将此质心存储在地理类型中的含义是什么吗?
...为什么没有Geography类型的STCentroid等价物?
谢谢
...为什么没有Geography类型的STCentroid等价物?
谢谢
虽然这是在你提问一年后,但我希望这个答案能帮助任何未来的读者,就像我一样,发现这个问题询问同样的事情。
回答你标题中关于查找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的这个有趣视频。