【问题标题】:What does shapely module return for intersection of objects as third dimension coordinate?shapely 模块为对象的交集返回什么作为第三维坐标?
【发布时间】:2019-12-01 17:14:28
【问题描述】:

我有两个轨迹保存为 Linestring 对象,每个 Linestring 包含一个元组列表,每个元组都是一个点(Easting_Utm,Northing_utm,Time_in_unix) 我知道两条轨迹相交。

我需要找到每个对象到达交点的时刻。我正在使用 shapely 模块进行 2D 空间计算,并作为第三个参数插入时间单位。

例如,Point=(x,y,z),表示对象位于位置 x,y 的时刻 z。在计算具有元组列表 (x,y,z) 的两个线串之间的交点时,我应该得到一个点 (x_intersection,y_intersection) 和一个 z 坐标,即 Linestring1 或 Linestring2 到达该点的时刻。这甚至可能吗? 请记住,shapely 只进行 2D 空间计算,但在创建对象时允许使用第三个参数 (z),在我的例子中是 unix 中的时间。

我已经尝试过,我得到了这个结果,但是第三个参数对我来说没有直觉:

Linestring1=(List of tuples)--> First trajectory
Linestring2=(List of tuples)--> Second trajectory

我计算: Linestring1.intersection(Linestring2),我得到了这个结果。

[(604773.0962574851, 5792804.393592814, 1557932495.6671839)]

(作为 Easting_UTM 元组的第一个元素,第二个 Northing_UTM 和 unix 中的第三次......)我基本上想知道在内部对第三个坐标做了什么。

先谢谢了!!

我应该得到两条轨迹(线串)之间的交点,作为第三个参数,两条轨迹中的任何一条到达该点的时间

【问题讨论】:

    标签: python spatial shapely geos


    【解决方案1】:

    为了计算这个 Z 值,geosshapely 的底层库)首先计算交叉点的 2D 位置,然后对每个线串的 Z 值进行线性插值,然后取两个 Z 值的平均值。

    考虑以下sn-p

    l1 = LineString([(0, 0, 4), (1, 1, 5)])
    l2 = LineString([(0, 1, 12), (1, 0, 13)])
    

    表示两个线串在它们的中心交叉,我们可以确定计算出的 Z 值可能是((4+5) / 2) + (12+13) / 2) / 2 = 8.5

    result = l1.intersection(l2)
    print(result.coords[0]) # (0.5, 0.5, 8.5)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-26
      • 1970-01-01
      • 1970-01-01
      • 2019-08-31
      • 1970-01-01
      • 2016-06-18
      • 2016-02-03
      • 1970-01-01
      相关资源
      最近更新 更多