Map 如何计算地图上的线段交点

Map 如何计算地图上的线段交点,map,line,gis,intersection,Map,Line,Gis,Intersection,我正在谷歌地图中使用纬度/经度坐标 我有两行: 行A:48.31508162629726,-2.591741396838972至48.40216156645915,-2.2218462112093404 行B:48.383816077371215,-2.27429240053768到48.66103546935337,-1.7066197241571377 然后我使用下面的公式来找到它们的交叉点 var XAsum = A.LngStart - A.LngEnd; var XBsum = B

我正在谷歌地图中使用纬度/经度坐标

我有两行:

  • 行A:48.31508162629726,-2.591741396838972至48.40216156645915,-2.2218462112093404
  • 行B:48.383816077371215,-2.27429240053768到48.66103546935337,-1.7066197241571377
然后我使用下面的公式来找到它们的交叉点

var XAsum = A.LngStart - A.LngEnd;
var XBsum = B.LngStart - B.LngEnd;
var YAsum = A.LatStart - A.LatEnd;
var YBsum = B.LatStart - B.LatEnd;

var LineDenominator = XAsum * YBsum - YAsum * XBsum;
if(LineDenominator == 0.0)
    return false;

var a = A.LngStart * A.LatEnd - A.LatStart * A.LngEnd;
var b = B.LngStart * B.LatEnd - B.LatStart * B.LngEnd;

var x = (a * XBsum - b * XAsum) / LineDenominator;
var y = (a * YBsum - b * YAsum) / LineDenominator;
这告诉我这些线确实交叉并返回x和y值

但是,当我绘制返回点时,它与实际交点的偏移量(不多)

有没有一个更好的,同样快的算法可以让我返回正确的交点

它需要很快,因为我要迭代大量的行(~1000行)


编辑:注意,这给了我大约7.5米的误差偏移量,我假设您使用的算法是在笛卡尔坐标系(即平面)上查找线交点的算法。不幸的是,地球不是一个平面(甚至不是一个球体),因此使用该算法将引入误差。Google Maps使用椭球(特别是WGS84)来近似地球表面,因此您需要一种算法来查找椭球上圆弧的交点

此页面可能包含一些有用的信息:

您用什么语言编程?您是否可以使用(或正在使用)任何库来帮助您解决GIS/空间分析问题?您是否解决了您的问题?在谷歌地图上找到两条直线(圆弧)的交点也是一个挑战。笛卡尔交点在地图上产生错误。对于每个弧,我都有一对拉特龙,我需要在谷歌地图上找到它们的交点。不,我不得不忍受这个错误。对不起,谢谢你费心回答。你的假设是对的。我看了你提到的那一页,但我的数学水平还不够高,无法翻译出我要用的东西。你有什么进一步的建议吗?你有什么特别想用的语言吗?没有时间做很多研究,但这可能会有帮助吗?或者这个?