如何找到椭圆焦点的 GPS 坐标(纬度、经度)?
Posted
技术标签:
【中文标题】如何找到椭圆焦点的 GPS 坐标(纬度、经度)?【英文标题】:How to find the GPS coordinates (latitude, longitude) of the foci of an ellipse? 【发布时间】:2017-12-03 06:23:02 【问题描述】:在给定中心 GPS 坐标、向西倾斜以及主要和次要宽度的情况下,
我咨询了以下内容:
How can I determine if a GPS Coordinate is on or in an Ellipse?
How to determine if a latitude & longitude is within an ellipse
以及其他涉及几何但不涉及 GPS 坐标的来源。几何源非常适合计算笛卡尔平面中的焦点位置,但我还没有找到一个解决方案,其中包含在 Scala(或 Java)中的 GPS 坐标和笛卡尔坐标之间进行转换的代码。
那么,如果长轴是 4 公里,短轴是 2 公里,倾斜角是 20 度,我怎样才能得到焦点的 GPS 坐标?谢谢。
更新:针对 cmets,我想澄清一下椭圆的尺寸足够小,我可以将椭圆下的地球近似为平坦的。
【问题讨论】:
“一种带有代码的解决方案,用于在 GPS 坐标和笛卡尔坐标之间进行转换”。问the flat earth guys,他们肯定有方法。我们在圆形地球上使用球坐标,而不是笛卡尔坐标。球体上没有任何合适的椭圆。椭圆是平的。球体上的所有平面形状都是圆形。 OTOH 如果你的“椭圆”很小(所以下面的地球大致是平的)并且远离极地(所以西倾的概念相对明确),你可以假装你的纬度和经度是笛卡尔坐标。您只需要缩放它们以使它们是同质的(如果我没记错的话,您基本上使用 (long/cos lat, lat) 作为笛卡尔坐标)。 话虽如此,究竟是什么阻止您仅使用已链接问题的答案? 【参考方案1】:我想我明白了。给定长轴和短轴的长度、中心点以及与椭圆的北(方位角)的角度,我可以如下计算焦点的位置。
首先,我可以使用here 可用的公式计算从中心到任一焦点的距离:
d = srqt(|a*a - b*b|)
其中d
是中心和任一焦点之间的距离,a
a 是长(短)轴的半长度,b
是短(长)轴的长度。
第二,由于我有来自北方的角度,因此我有方位,并且可以使用它以及到任一焦点的距离来计算任一焦点的位置,使用部分下给出的公式......可用here:
φ2 = asin( sin φ1 ⋅ cos δ + cos φ1 ⋅ sin δ ⋅ cos θ )
λ2 = λ1 + atan2( sin θ ⋅ sin δ ⋅ cos φ1, cos δ − sin φ1 ⋅ sin φ2 )
其中φ
是纬度,λ
是经度,θ
是方位角(从北顺时针方向),δ
是角距离d/R
; d 是经过的距离,R
地球的半径。
对于θ
,我会使用来自北方的角度来找到一个焦点的位置,然后我会使用来自北方的角度加上 180 度来找到另一个焦点。
【讨论】:
以上是关于如何找到椭圆焦点的 GPS 坐标(纬度、经度)?的主要内容,如果未能解决你的问题,请参考以下文章