使用多边形极点对多边形进行标注

使用多边形极点对多边形进行标注,polygon pole of inaccessibility

  • 对应文中名称为自己翻译,仅供参考

概念

多边形极点,定义为,多边形内距离边界最远的点。我这里用来这个点位来标注凹多边形的名称,如下图,计算多边形质心位置时,不一定会落在多边形为内部,此时可以用极点来表示改多边形内部的点。
极点位置
凹多边形

第三方库, mapbox提供了js库来计算多边形的极点坐标

计算原理

  • 核心是通过划分规则格网,通过一定策略来确定极点位置

对多边形划分格网

计算步骤

  • 使用外包矩形宽高的最小值作为网格的初始大小,生成覆盖多边形的网格
  • 依次判断每个网格距离多边形的最短距离,加上网格的对角线的一半记为max
  • 依次比较每个cell的max,取max最大的网格作为最优网格
  • 依据网格的最小尺寸对最优网格进行四分,迭代判断每个网格是否为最优网格
  • 迭代时,使用queue,仅判断最大max的网格

实例

  • leaflet实例如下:

    /*
    testdata为geojson数据
    将geometry的多个coordinates传入作为方法参数,设置网格的最小尺寸即可
    polylabel默认使用多边形的外边界进行计算
    */
    let lxs_data = L.geoJSON(
        testdata.features,
        {
            onEachFeature: (feature, layer) => {
                let polygon = feature.geometry.coordinates;
                let polypoint = polylabel(polygon, 0.001);
                var popup = L.popup()
                    .setLatLng([polypoint[1],polypoint[0]])
                    .setContent('<p>lxs!<br />This is a lxs popup.</p>')
                    .openOn(mymap);
            }
        })
        .addTo(mymap);
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值