java - 如何找到椭圆焦点的GPS坐标(纬度、经度)?

标签 java scala gis

给定中心 GPS 坐标、向西倾斜以及长宽和短宽,如何找到椭圆焦点的 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坐标?谢谢。

更新:针对评论,我想澄清一下,椭圆的尺寸足够小,我可以将椭圆下的地球近似为平坦的。

最佳答案

我想我明白了。给定长轴和短轴的长度、中心点以及与椭圆北(方位角)的角度,我可以如下计算焦点的位置。

首先,我可以使用可用公式 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 度来找到另一个焦点。

关于java - 如何找到椭圆焦点的GPS坐标(纬度、经度)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47615869/

相关文章:

java - Joda Time 将 time zoneddatetime 转换为毫秒

Java:针对包含另一个 xsd 的 xsd 进行字符串 xml 验证

java - 如何找到绕另一个圆的圆周旋转的圆的圆周坐标?

mysql - SORM:尝试引用一个未保留的实体

python - 在 geopandas 中移动阿拉斯加和夏威夷以获得 choropleths

java - 忽略过期的 ssl 证书

scala - 序列化Guava的MinMaxPriorityQueue

scala - 为什么以下两个函数不会产生相同的输出?

gis - H3 六边形在 kepler.gl 中使用交换的经纬度进行渲染

r - 计算 R 中的加权多边形质心