如何在地图上找到围绕对角线的边界矩形? (地理位置)
Posted
技术标签:
【中文标题】如何在地图上找到围绕对角线的边界矩形? (地理位置)【英文标题】:How to find a bounding rectangle around diagonal line on map ? (Geo-Locations) 【发布时间】:2020-06-18 01:14:43 【问题描述】:用户在地图上画了一条线,并希望在该线的特定距离内查找一些信息。 我有 "lat, lon" 格式的 A 和 B 位置,用户告诉我距离 (距离在 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】:拥有A
和B
坐标,您可以计算两个点的方位(注意方位在一般情况下是不同的)。
轴承Fi
在点A
可以计算轴承Fi - 90
和Fi + 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
【讨论】:
以上是关于如何在地图上找到围绕对角线的边界矩形? (地理位置)的主要内容,如果未能解决你的问题,请参考以下文章