Leaflet 查找直线与多边形边界相交的坐标

Leaflet 查找直线与多边形边界相交的坐标,leaflet,mapbox,turfjs,Leaflet,Mapbox,Turfjs,在TurbJS中有没有一种方法可以确定线串与多边形边界相交的坐标 有很多方法可以确定一个点是否在多边形内,也有很多方法可以确定一个点是否在直线上等等,但我似乎无法找到一种方法来问“这条直线在什么点与多边形的边界相交” 我可以使用直线相交算法来枚举多边形中的点,以找到该点,但我想知道是否有更“草皮”的方法来实现这一点 对于上下文,我加载了一个GPX轨迹,并希望估计轨迹进入/退出定义区域的位置/时间 由于GPX磁道仅以特定间隔记录位置,因此通常情况下,在时间tN记录的pN在区域外,而在时间tN+1记

在TurbJS中有没有一种方法可以确定线串与多边形边界相交的坐标

有很多方法可以确定一个点是否在多边形内,也有很多方法可以确定一个点是否在直线上等等,但我似乎无法找到一种方法来问“这条直线在什么点与多边形的边界相交”

我可以使用直线相交算法来枚举多边形中的点,以找到该点,但我想知道是否有更“草皮”的方法来实现这一点

对于上下文,我加载了一个GPX轨迹,并希望估计轨迹进入/退出定义区域的位置/时间

由于GPX磁道仅以特定间隔记录位置,因此通常情况下,在时间tN记录的pN在区域外,而在时间tN+1记录的pN+1在区域内。
如果我能得到直线(pN,pN+1)与多边形边界相交的点,我就可以估计轨迹穿过多边形的准确时间。

我没有看到一个草皮函数可以准确地做到这一点,但有一个函数可以找到两个多边形之间的相交区域

你可以:

  • 通过将直线与自身反向连接来构造多边形(使ABC变为ABCBA)
  • 使用Intersect查找原始多边形ABCBA和P的顶点
  • 交点应该是一个零面积多边形,它是P内ABCBA的一部分。不知怎么计算它的长度(奇怪的是没有周长函数)
  • 从ABC的长度中减去该长度
  • 不太优雅,没错

    编辑


    试过这个。结果表明,如果其中一个多边形的面积为零,则“Turf intersect”不会返回交点。

    最终,turfjs似乎没有用于此操作的API


    我通过从GejJSON对象中枚举多边形中的点来构造一个线段序列,然后使用<代码> LeSeNeXSECTS/<代码>函数来测试交点。SteveBennett可以在GIS.StAccExchange。com中问这个问题。我已经在那边问过了。我想这可以做到。然后,您可以对其进行少量缓冲,以使多边形不为空。我会玩转它,看看它会带来什么样的结果。是的,我看到Github组织中的Turf模块比“官方”列表多得多:@SteveBennett你能在这里检查一下吗,请,我看不出与这个问题有任何关联,除了两者都使用Turf。