GISPolygon可以是凹多边形,而且还可以带孔,一般我们把多边形的外轮廓叫做外环(Exterior Ring)把孔叫做内环(Interior Ring)。一个多边形必须且只能有一个外环,可以有若干个内环。所谓多边形上一点(Point On Surface)就是指一个必须落在多边形面上而不是空白处(凹多边形的凹口处和带孔多边形的孔洞里)的点。如下图

多边形面上一点的算法

很多时候我们需要获得这样的点,例如给多边形加标注时,我们不希望标注显示在多边形的外面。

获得面上点的方法如下:

首先获得一个种子点,一般是多边形的几何中心。然后以此点做横线与多边形的所有环相交,将交点以X分量从左向右排序。此时的交点一定是如下的序列:

0~1,2~3,…,i~i+1其中数值表示序列下标。,如下图:

多边形面上一点的算法

我们只需要在ii+1两点取点,这个点的X分量一定在面上。一般我们取中点。然后以此点做纵线与多边形的所有环相交,将交点以Y分量从上向下排序,我们会得到与上面相似的点序列。如下图

多边形面上一点的算法

从这个序列的i点和i+1点中取中间位置,我们就得到一个多边形面上的点。下图是带孔的情况。

多边形面上一点的算法

紫色的点是最终结果。

代码下载

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-05
  • 2022-12-23
  • 2022-01-11
猜你喜欢
  • 2021-12-16
  • 2022-12-23
  • 2021-07-07
  • 2021-05-08
  • 2021-07-16
  • 2022-12-23
  • 2021-05-23
相关资源
相似解决方案