PostGIS文档指出ST_PointOnSurface返回“保证位于表面上的POINT”。似乎可以轻松实现此功能,以提供满足文档要求的结果,但几乎没有实际用途,尽管我确信PostGIS提供了非平凡的实现。

PostGIS简介可以很好地比较和对比ST_CentroidST_PointOnSurface,并说“ [ST_PointOnSurface]的计算量比质心运算高得多”。我一直在使用ST_PointOnSurface,但是在我的数据中遇到了一些边缘情况,其中质心在几何图形之外。我相信ST_Centroid是正确的替代品,但是函数名称和文档为不确定性留有空间。 />

评论

正是由于非凸多边形的形心并不总是包含在其中,所以它存在。如果这是名称中令人困惑的部分,则与高度和DEM无关。最好在代码中检查实现细节,但我相信您会在GIS.se上得到更好的答案。

关于GIS.se的要点。有没有办法将这个问题迁移到那里?我了解为什么两个功能都存在。我觉得这个名字很混乱,因为我正在使用的多边形几何图形的表面上有无数个点。但是,这些观点中只有一小部分符合我的目的。我想知道我对我的用法很有道理。

#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天前