【问题标题】:Remove points of polylines that are outside of polygon using Leaflet使用 Leaflet 删除多边形外部的折线点
【发布时间】:2017-03-02 15:38:29
【问题描述】:

我已经使用地图上的传单绘制插件以编程方式(不使用传单绘制)在多边形内部绘制折线,我只想保留多边形内部的折线点并删除那些在外面的折线。你知道如何使用传单插件来做到这一点吗?任何帮助深表感谢。谢谢

这是截图:

预期结果:

我按照@Sam 的建议研究了 **turf" 库的 difference 方法,所以最后我可以将此方法应用于我的绘图多边形和线条,这是一个代码 sn-p:

var line = path.toGeoJSON();
var polygon = selectedPoly.toGeoJSON();
var difference, result = [];
difference = turf.difference(line, polygon);
if (difference) 
{
    result.push(difference);
    var inter = L.geoJson(result).addTo(map);
}

这是结果的截图:

现在我想删除这部分线并只保留多边形内的部分,我尝试这样做但没有工作。你能帮我吗?谢谢

【问题讨论】:

    标签: leaflet turfjs


    【解决方案1】:

    我正在与turfjs 合作检查传单中的重叠多边形。

    map.on('draw:created', function (e) {
          var intersection = [];
          otherPolysLayer.eachLayer(function (layer) {
          if (!_.isUndefined(turf.intersect(e.layer.toGeoJSON(), ))) {
                 intersection.push(layer);
          }
       }) 
    });
    

    您可以更改上述内容,改为检查整个多边形,您可以使用difference 方法进行检查。

    difference:通过裁剪多边形来找出两个多边形之间的差异 第一个多边形的第二个多边形。

    我一直在寻找一个体面的图书馆,并研究了leaflet-pip、kevlindev 等,但我发现草皮真的可以开箱即用。

    更新

    http://jsfiddle.net/ddce1wh5/ 这个怎么样?我使用了 intersect,因为这显然是您想要保留的部分,我误读了,抱歉。下面的http://jsfiddle.net/mcqL1y90/ 我们使用了一个线数组,使用相交线,或者如果没有发生相交,则使用线本身在地图上绘制。

    【讨论】:

    • 感谢@Sam 的澄清,我将尝试在折线和多边形上应用 turfdifference 方法。再次感谢
    • 我正在使用 Turfjs 库,正如你所说的 @Sam,所以直到现在,我可以得到不同的层,现在我有问题如何删除多边形外的部分线,我编辑帖子添加截图和我的代码 sn-p
    • 直到现在我才找到解决方案:(
    • 嘿,伙计,如果你能在 jsfiddle.net 上发布一些东西,这样我就可以分享你目前所拥有的东西,看看我可以在哪里提供帮助?
    • jsfiddle.net/LnzN2/744 这是一个 jsfiddle 示例,它不是我的真实代码,但它是同一个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-16
    • 1970-01-01
    • 2022-10-17
    • 2018-09-22
    • 2014-09-05
    • 1970-01-01
    相关资源
    最近更新 更多