ST_PointOnSurface
返回“保证位于表面上的POINT”。似乎可以轻松实现此功能,以提供满足文档要求的结果,但几乎没有实际用途,尽管我确信PostGIS提供了非平凡的实现。PostGIS简介可以很好地比较和对比
ST_Centroid
和ST_PointOnSurface
,并说“ [ST_PointOnSurface]的计算量比质心运算高得多”。我一直在使用ST_PointOnSurface
,但是在我的数据中遇到了一些边缘情况,其中质心在几何图形之外。我相信ST_Centroid
是正确的替代品,但是函数名称和文档为不确定性留有空间。 /> #1 楼
根据一些实验,如果几何图形是多边形,我认为ST_PointOnSurface()
的工作原理大致与此类似: />多边形的南部范围。 找到与多边形相交的射线的最长线段。
返回沿该线段一半的点。
这可能没有意义,因此,这是一个多边形的草图,其中有射线将其分为北部和南部部分:
_
/ \ <-- northern extent
/ \
/ \
/ \
/ \ __
/ \ / \
/_ _ _ P _ _ _\ / _ _\ P = point-on-surface
/ \/ \
/ \
/ C \ C = centroid
/ \
/ /
/______________________________/ <-- southern extent
和ST_PointOnSurface()
通常是不同的点,即使是凸多边形。我认为名称中“表面”的唯一原因是,如果几何图形具有3D线,则结果将仅仅是顶点之一。
我同意更多的解释(更好的命名)将是有用的,并希望GEOS程序员对此事有更多的了解。
评论
查看libgeos代码,我相信您是对的。找到水平平分线,然后使用最宽交点的中点。
– mjobrien
13年11月6日在6:41
这是否意味着此调用始终总是产生相同的点?例如,是否以相同的几何形状再次调用?
–iam thadiyan
20-10-21在11:11
@iamthadiyan-我会这样认为。
–马丁F
2天前
评论
正是由于非凸多边形的形心并不总是包含在其中,所以它存在。如果这是名称中令人困惑的部分,则与高度和DEM无关。最好在代码中检查实现细节,但我相信您会在GIS.se上得到更好的答案。关于GIS.se的要点。有没有办法将这个问题迁移到那里?我了解为什么两个功能都存在。我觉得这个名字很混乱,因为我正在使用的多边形几何图形的表面上有无数个点。但是,这些观点中只有一小部分符合我的目的。我想知道我对我的用法很有道理。