提问者:小点点

找到几何体最接近质心的内点


我正在从OpenStreetMap数据库中提取水体的名称,并使用Geos库基于其几何形状的质心获得它们的标签long/lat:

geos::geom::Geometry* geometry = BuildInternalGeometry();
geos::geom::Coordinate centroidCoord;

bool result = geometry->getCentroid(centroidCoord);

然而,有几个水体形状不规则,导致质心的位置远离水体多边形,使其在地图上看时显得格格不入。 有没有一种方法,我可以用它来找到一个几何体的内点,最接近它的质心?

我找到了Geos库的getInteriorPoint方法,但从我可以看出,如果返回了一个保证在几何图形内但不一定靠近质心的随机点。


共1个答案

匿名用户

有没有一种方法,我可以用它来找到一个几何体的内点,最接近它的质心?

你知道最近的点将位于水多边形的一段上(除非它在内部)。 简单的算法是:

for all segments of the water polygon
    find distance between centroid and current segment, get closest point on segment
    remember the best distance and position