首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >寻找几何学的内部点最接近其质心

寻找几何学的内部点最接近其质心
EN

Stack Overflow用户
提问于 2020-07-30 13:27:13
回答 2查看 190关注 0票数 1

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

代码语言:javascript
复制
geos::geom::Geometry* geometry = BuildInternalGeometry();
geos::geom::Coordinate centroidCoord;

bool result = geometry->getCentroid(centroidCoord);

然而,有几个水体的形状不规则,导致质心的位置落在水多边形之外,在地图上看上去不太合适。有什么程序可以用来找出几何学中最接近质心的内部点吗?

我已经找到了Geos库的getInteriorPoint方法,但是根据我所知道的,如果返回一个随机点,保证在几何范围内,但不一定接近质心。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-31 17:28:05

虽然Jeffrey的回答没有完全回答这个问题( Geos库似乎不支持多边形部分),但它确实给了我一个想法,嗯……2关于如何在多边形质心附近定位内部点的想法。

第一个想法(更容易、不太精确)涉及到对几何体顶点的迭代,并使用最接近外部质心的顶点作为新的质心:

代码语言:javascript
复制
auto coords = geometry->getCoordinates();
                    
for (auto i = 0; i < coords.get()->getSize(); i++)
{
    double dist = coords.get()->getAt(i).distance(coordPoint);

    if (dist < nearest)
    {
        nearest = dist;
        closestCoord = coords.get()->getAt(i);
    }
}

return closestCoord;

然而,新的质心坐标总是位于多边形的边缘,而不是它的内部。

为了得到几何学中的东西,地理信息系统附带的delaunay三角剖分类可以用来生成内部三角形多边形。这些多边形的质心可以被查询,最接近外部质心的三角形质心可以用作位于几何学内的质心点。

票数 1
EN

Stack Overflow用户

发布于 2020-07-30 13:39:10

有什么程序可以用来找出几何学中最接近质心的内部点吗?

你知道,最接近的点将位于水多边形的一个部分(除非它在内部)。直截了当的算法是:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63174232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档