【发布时间】:2018-03-27 02:58:42
【问题描述】:
我有一艘船沿着横断面行驶,寻找动物。有人站在船顶上,面朝前,正在记录与船的距离以及看到动物时船头的方位。我有这些信息以及看到动物时船的 xy 坐标。 我需要根据这些信息获取动物本身的 xy 坐标。
我没有船原来的罗盘方位,这让这很棘手;但我所拥有的是船的下一个 GPS (xy) 坐标,我可以从中计算起始角度。由此,应该可以添加或减去看到动物的方位角,以给出一个归一化的角度,该角度可用于使用三角法找到动物的 xy 坐标。不幸的是,我的数学技能还不能胜任这份工作。
我有几百个点,所以我需要将其放入 Python 脚本中以遍历所有点。
总的来说,数据集有:
原始X,原始Y,结束(下一个)X,结束(下一个)Y,方位,距离
编辑:对不起,我很着急,没有很好地解释这一点。
我看到这个问题有 3 个阶段。
- 寻找样带的原始方位
- 查找点相对于样带的方位
- 根据这个归一化的角度和与船在起点 xy 处的距离查找该点的新坐标
下面是我最初的 Python 代码,虽然用处不大 - 给出的数字是示例。
distFromBoat = 100
bearing = 45
lengthOpposite = origX-nextX
lengthAdjacent = origY - nextY
virtX = origX #virtual X
virtY = origY-lengthOpposite #virtual Y
angle = math.degrees(math.asin(math.radians((lengthOpposite/transectLen))))
newangle = angle + bearing
newLenAdj = math.cos(newangle)*distFromBoat
newLenOpp = math.sqrt(math.pow(distFromBoat,2) + math.pow(newLenAdj,2) - 2*(distFromBoat*newLenAdj)*(math.cos(newangle)))
newX = virtX-newLenOpp
newY = origY-newLenAdj
print str(newX) +"---"+str(newY)
提前感谢您的帮助!
【问题讨论】:
-
我不太清楚你到底在问什么(+/- 部分似乎模棱两可)。附带说明一下,我认为您不需要将
lengthOpposite/transectLen的比率声明为弧度,这与除法本身有关。
标签: python coordinates