如何在地图上找到围绕对角线的边界矩形? (地理位置)

Posted

技术标签:

【中文标题】如何在地图上找到围绕对角线的边界矩形? (地理位置)【英文标题】:How to find a bounding rectangle around diagonal line on map ? (Geo-Locations) 【发布时间】:2020-06-18 01:14:43 【问题描述】:

用户在地图上画了一条线,并希望在该线的特定距离内查找一些信息。 我有 "lat, lon" 格式的 AB 位置,用户告诉我距离 (距离在 A 和 A1) 之间,以 “米、公里、...” 为单位。 如何以 "lat, lon" 格式计算 A1, A2, B1, B2 位置?我正在使用 C# 和 CoordinateSharp 处理位置。

p.s:我已阅读 this,它适用于笛卡尔网格系统,但我无法针对我的问题调整其代码。

【问题讨论】:

你为什么不能适应它?因为您需要球面几何的精确解,或者因为您无法将 lat、lon 转换为以 km 为单位的数字? @OlivierJacot-Descombes 几乎两者都有,我的计算可以容忍最大 10 米的误差,我不知道如何将 lat 替换为 Y,long 替换为 X,经度数不同每个纬度,现在不知何故我认为这个公式可能不适用于地理位置:-? 如果您需要一个精确的解决方案,那么这可能是 math.stackexchange.com 的一个问题 将 lat/lon 转换为 UTM(CoordinateSharp 显然已经可以这样做了),在 UTM 中执行计算(它使用米作为单位),然后转换回 lat/lon。 【参考方案1】:

拥有AB 坐标,您可以计算两个点的方位(注意方位在一般情况下是不同的)。

轴承Fi 在点A 可以计算轴承Fi - 90Fi + 90,并在相应的轴承上找到所需距离处的点A1 和A2。

B1、B2 也一样

您可以从this page

方位角给定距离和方位角的目标点章节获取公式

轴承

θ = atan2( sin Δλ ⋅ cos φ2 , cos φ1 ⋅ sin φ2 − sin φ1 ⋅ cos φ2 ⋅ cos Δλ )

where   φ1,λ1 is the start point, φ2,λ2 the end point 
(Δλ is the difference in longitude)

目的地

φ2 = asin( sin φ1 ⋅ cos δ + cos φ1 ⋅ sin δ ⋅ cos θ )
λ2 = λ1 + atan2( sin θ ⋅ sin δ ⋅ cos φ1, cos δ − sin φ1 ⋅ sin φ2 )

where   φ is latitude, λ is longitude, θ is the bearing 
(clockwise from north), δ is the angular distance d/R; 
d being the distance travelled, R the earth’s radius

【讨论】:

以上是关于如何在地图上找到围绕对角线的边界矩形? (地理位置)的主要内容,如果未能解决你的问题,请参考以下文章

如何计算围绕其中心旋转的矩形的边界框?

如何找到给定纬度/长度以北x km的纬度/经度?

如何找到给定纬度/经度以北 x 公里的纬度/经度?

百度地图矩形移动

如何围绕当前光标在MFC中的位置绘制一个矩形

分组多个边界框