我有两条线路径(非直线),我想确定它们在哪一段相交。我的第一行包含97个点,另一行包含50个点,它们在一个点处相交。为了简单起见,我将在下面使用较小的数据集。我可以使用Shapely intersection
方法找到交点,但是我很难找到线段。
from shapely.geometry import *
a = [[1246.27886576, 397.92212558], [1257.07143932, 386.62625213], [1248.9911559 , 364.85303935], [1243.15355998, 351.2073384 ], [1252.96611444, 345.8853271 ], [1259.99528981, 343.00414527]]
b = [ [1234.5260801 , 364.17967993], [1243.18178589, 363.32934182], [1251.03950905, 360.78543246], [1256.76030287, 358.07463708], [1293.17663569, 365.07308725], [1311.17586247, 368.66783979]]
line1 = LineString(a)
line2 = LineString(b)
point = line1.intersection(line2)
## point is (1247.711909530379 361.8627307297313)
然后我将在下面找到在“ a”中具有交点的线段
for x in range(len(a)-1):
line = LineString(a[x:x+2])
if(point.within(line)):
print(x)
问题是我什么也没得到。通过目视观察该点,我希望该点在第三点和第四点之间。但是“内在点”正在返回假。我怀疑由于小数点丢失了相等性。
有什么办法可以找到相交的路段吗?