java - 从地理坐标到地磁坐标的转换

标签 java coordinates

我正在尝试在地理坐标和地磁坐标之间进行转换。我找到了以下 Prolog 脚本,但我对它的理解还不够,无法自行转换。目标语言是 Java,但任何可以理解的语言都可以(C、Python、VB 等等)。

http://idlastro.gsfc.nasa.gov/ftp/pro/astro/geo2mag.pro

如果有人可以帮助转换此脚本或解释它到底在做什么(那些数组操作让我感到困惑),我将不胜感激。

谢谢

最佳答案

根据应用,高度可能是此坐标转换中的重要变量,因为地磁坐标是地球偶极子磁场的映射。

在 Python 中,您可以使用 SpacePy ( http://sourceforge.net/projects/spacepy/ ) 轻松地将地理坐标转换为地磁(反之亦然)。

由于您正在寻找转换为 Java 的源代码,SpacePy 正在实现 Fortran 国际辐射带环境建模 (IRBEM) 库,其源代码可用 (http://irbem.svn.sourceforge.net/viewvc/irbem/web/index.html)

在 Python 中,如果其他人正在寻找快速解决方案:

import spacepy.coordinates as coord
from spacepy.time import Ticktock
import numpy as np
def geotomag(alt,lat,lon):
    #call with altitude in kilometers and lat/lon in degrees 
    Re=6371.0 #mean Earth radius in kilometers
    #setup the geographic coordinate object with altitude in earth radii 
    cvals = coord.Coords([np.float(alt+Re)/Re, np.float(lat), np.float(lon)], 'GEO', 'sph',['Re','deg','deg'])
    #set time epoch for coordinates:
    cvals.ticks=Ticktock(['2012-01-01T12:00:00'], 'ISO')
    #return the magnetic coords in the same units as the geographic:
    return cvals.convert('MAG','sph')

关于java - 从地理坐标到地磁坐标的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7948450/

相关文章:

r - 计算 R 中点之间的距离

php - 我需要知道预定义的点是在海中还是在陆地上

java - 如果我位于不同的网络/域中,是否可以使用计算机名称而不是 IP?

java - 尝试使用 OSHI 中的 get() 方法时抛出 NoClassDefFoundError

java - CXF 使用的类中的公共(public)方法上的@Transactional 问题

c++ - 从 2 个给定的一维线计算坐标

android - 位置映射未在不同设备上返回

python - 使用 Twython 流获取坐标和地名

java - 任务 ':signMavenJavaPublication' 执行失败。 > java.lang.NullPointerException(无错误消息)

Java 获取查询字符串