excel 匹配纬度和经度点
excel matching lat and long points
我想从具有纬度、经度和距离点的 table 个值中提取多个点的距离值。我有一个 table 沿着一条路径沿着一条火车线行驶,每 20 米有一个点,与我想从中提取距离值的公里点相关联。
查找Table
我还有另一个 table,参考文献 table,它是沿着与查找 table 相同的路径每 3-5 分钟一列火车的位置数据,所以纬度和长点不会一样。我需要搜索查找 table 以找到路径上最近的纬度和经度点并提取相关距离。我能够单独找到纬度和经度的最近点,但由于路径有风,预期值不匹配。我已经经历了一些与预期不同的点,在某些情况下,与纬度相关的距离是正确的,但在其他情况下,与经度相关的距离是正确的。
引用table
参考文献 table 中突出显示的值是不符合它们应有的值,如查找中所示 table (相同颜色指的是在查找中找到的值table)。大胆的价值观是同意的观点,这是我希望所有观点都能实现的。参考文献 table 中的公里数是正确的,但我不得不手动调整方程式以使用正确的值。
这是我用来提取距离的方程式。 (J 列)
=IF(MATCH(MIN(ABS(LookupTable-ReferenceLatitude)),ABS(LookupTable-ReferenceLatitude),0)=MATCH(MIN(ABS(LookupTable-ReferenceLongitude)),ABS(LookupTable-ReferenceLongitude),0), TRUE:extract Distance, FALSE: ??? [both points should agree] )
目前我手动调整 FALSE 条件以根据需要从纬度或经度值中提取距离。
我的问题是,有没有办法确保纬度和经度都匹配以获得正确的距离?在 FALSE 的情况下应该使用什么来计算?
我最喜欢找到一个解决方案,真的很复杂。首先是推理,可以通过找到参考点和查找点之间的最小距离来找到正确的点。两点之间的最小距离将为您提供所需的纬度、对数和相关距离。
我找到了 spherical law of cosines 方程(最简单的方程),它可以让您计算两点之间的距离。然后您可以使用 MATCH() 找到您的点所在的行,然后使用 INDEX() 提取距离值。
这是 MATCH() 方程
=MATCH(MIN(ABS(2*ATAN2(SQRT(1-(SIN(RADIANS((refLat-lookupLatArray)/2))*SIN(RADIANS((refLat-lookupLatArray)/2))+COS(RADIANS(refLat))*COS(RADIANS(lookupLatArray))*SIN(RADIANS((refLong-lookupLonArray)/2))*SIN(RADIANS((refLong-lookupLonArray)/2)))),SQRT(SIN(RADIANS((refLat-lookupLatArray)/2))*SIN(RADIANS((refLat-lookupLatArray)/2))+COS(RADIANS(refLat))*COS(RADIANS(lookupLatArray))*SIN(RADIANS((refLong-lookupLonArray)/2))*SIN(RADIANS((refLong-lookupLonArray)/2))))*6371)),ABS(2*ATAN2(SQRT(1-(SIN(RADIANS((refLat2-lookupLatArray)/2))*SIN(RADIANS((refLat-lookupLatArray)/2))+COS(RADIANS(refLat))*COS(RADIANS(lookupLatArray))*SIN(RADIANS((refLong2-lookupLonArray)/2))*SIN(RADIANS((refLong-lookupLonArray)/2)))),SQRT(SIN(RADIANS((refLat-lookupLatArray/2))*SIN(RADIANS((refLat-lookupLatArray)/2))+COS(RADIANS(refLat))*COS(RADIANS(lookupLatArray))*SIN(RADIANS((refLong-lookupLonArray/2))*SIN(RADIANS((refLong-lookupLonArray)/2))))*6371),0)
我想从具有纬度、经度和距离点的 table 个值中提取多个点的距离值。我有一个 table 沿着一条路径沿着一条火车线行驶,每 20 米有一个点,与我想从中提取距离值的公里点相关联。
查找Table
我还有另一个 table,参考文献 table,它是沿着与查找 table 相同的路径每 3-5 分钟一列火车的位置数据,所以纬度和长点不会一样。我需要搜索查找 table 以找到路径上最近的纬度和经度点并提取相关距离。我能够单独找到纬度和经度的最近点,但由于路径有风,预期值不匹配。我已经经历了一些与预期不同的点,在某些情况下,与纬度相关的距离是正确的,但在其他情况下,与经度相关的距离是正确的。
引用table
参考文献 table 中突出显示的值是不符合它们应有的值,如查找中所示 table (相同颜色指的是在查找中找到的值table)。大胆的价值观是同意的观点,这是我希望所有观点都能实现的。参考文献 table 中的公里数是正确的,但我不得不手动调整方程式以使用正确的值。
这是我用来提取距离的方程式。 (J 列)
=IF(MATCH(MIN(ABS(LookupTable-ReferenceLatitude)),ABS(LookupTable-ReferenceLatitude),0)=MATCH(MIN(ABS(LookupTable-ReferenceLongitude)),ABS(LookupTable-ReferenceLongitude),0), TRUE:extract Distance, FALSE: ??? [both points should agree] )
目前我手动调整 FALSE 条件以根据需要从纬度或经度值中提取距离。
我的问题是,有没有办法确保纬度和经度都匹配以获得正确的距离?在 FALSE 的情况下应该使用什么来计算?
我最喜欢找到一个解决方案,真的很复杂。首先是推理,可以通过找到参考点和查找点之间的最小距离来找到正确的点。两点之间的最小距离将为您提供所需的纬度、对数和相关距离。
我找到了 spherical law of cosines 方程(最简单的方程),它可以让您计算两点之间的距离。然后您可以使用 MATCH() 找到您的点所在的行,然后使用 INDEX() 提取距离值。
这是 MATCH() 方程
=MATCH(MIN(ABS(2*ATAN2(SQRT(1-(SIN(RADIANS((refLat-lookupLatArray)/2))*SIN(RADIANS((refLat-lookupLatArray)/2))+COS(RADIANS(refLat))*COS(RADIANS(lookupLatArray))*SIN(RADIANS((refLong-lookupLonArray)/2))*SIN(RADIANS((refLong-lookupLonArray)/2)))),SQRT(SIN(RADIANS((refLat-lookupLatArray)/2))*SIN(RADIANS((refLat-lookupLatArray)/2))+COS(RADIANS(refLat))*COS(RADIANS(lookupLatArray))*SIN(RADIANS((refLong-lookupLonArray)/2))*SIN(RADIANS((refLong-lookupLonArray)/2))))*6371)),ABS(2*ATAN2(SQRT(1-(SIN(RADIANS((refLat2-lookupLatArray)/2))*SIN(RADIANS((refLat-lookupLatArray)/2))+COS(RADIANS(refLat))*COS(RADIANS(lookupLatArray))*SIN(RADIANS((refLong2-lookupLonArray)/2))*SIN(RADIANS((refLong-lookupLonArray)/2)))),SQRT(SIN(RADIANS((refLat-lookupLatArray/2))*SIN(RADIANS((refLat-lookupLatArray)/2))+COS(RADIANS(refLat))*COS(RADIANS(lookupLatArray))*SIN(RADIANS((refLong-lookupLonArray/2))*SIN(RADIANS((refLong-lookupLonArray)/2))))*6371),0)