来自方位角、仰角、距离和观察者经纬度、纬度的 ECEF

2023-11-29

我正在尝试编写一个基本的 python 脚本,它将从给定位置跟踪用 tle 定义的给定卫星。我不是一个阿斯托/轨道人,但我正在努力变得更聪明。

当我尝试将方位角、仰角、距离值转换为 ECEF 位置时,我遇到了问题。我使用 PyEphem 获取观测值,使用 spg4 获取真实位置进行验证。我也在用这个网站,http://www.n2yo.com/?s=25544,验证值。

我通过以下方式获取观测到的方位角、仰角和范围:

def get_ob(epoch, sv, obsLoc):
    site = ephem.Observer()
    site.lon = str(obsLoc.lat)   # +E -104.77 here
    site.lat = str(obsLoc.lon)   # +N 38.95   here
    site.elevation = obsLoc.alt # meters    0 here
    #epoch = time.time()
    site.date = datetime.datetime.utcfromtimestamp(epoch)

    sat = ephem.readtle(sv.name,sv.tle1,sv.tle2)
    sat.compute(site)

    az       = degrees(sat.az)
    el       = degrees(sat.alt)
    #range in m
    range    = sat.range
    sat_lat  = degrees(sat.sublat)
    sat_long = degrees(sat.sublong)
    # elevation of sat in m
    sat_elev = sat.elevation

    x, y, z    = aer2ecef(az,el,range,38.95,-104.77,80 / 1000)

报告的方位角、仰角和距离与网站相符。我正在转换为 ECEF 职位:

def aer2ecef(azimuthDeg, elevationDeg, slantRange, obs_lat, obs_long, obs_alt):

    #site ecef in meters
    sitex, sitey, sitez = llh2ecef(obs_lat,obs_long,obs_alt)

    #some needed calculations
    slat = sin(radians(obs_lat))
    slon = sin(radians(obs_long))
    clat = cos(radians(obs_lat))
    clon = cos(radians(obs_long))

    azRad = radians(azimuthDeg)
    elRad = radians(elevationDeg)

    # az,el,range to sez convertion
    south  = -slantRange * cos(elRad) * cos(azRad)
    east   =  slantRange * cos(elRad) * sin(azRad)
    zenith =  slantRange * sin(elRad)


    x = ( slat * clon * south) + (-slon * east) + (clat * clon * zenith) + sitex
    y = ( slat * slon * south) + ( clon * east) + (clat * slon * zenith) + sitey
    z = (-clat *        south) + ( slat * zenith) + sitez

    return x, y, z

不过,当我绘制该图时,位置已经偏离了(地球的另一边)。我从网站和 spg4 比赛中获得的排名所以我相信这些是正确的。

我不确定错误是否出在我的转换方法中,或者我使用了错误的数据进行转换。我在这里的答案中找到了该方法:获取给定起始坐标、范围、方位角和仰角的 ECEF XYZ

任何关于我在哪里下车的意见或建议将不胜感激。以下是测试输入/输出:

我正在测试的卫星是 ISS 和 directv10(一颗固定,一颗移动 - 可通过互联网跟踪进行验证):

0 Direct10
1 31862U 07032A   13099.15996183 -.00000126  00000-0  10000-3 0  1194
2 31862 000.0489 046.9646 0000388 001.7833 103.5813 01.00271667 21104
0 ISS
1 25544U 98067A   13112.50724749  .00016717  00000-0  10270-3 0  9148
2 25544  51.6465  24.5919 0009906 171.1474 188.9854 15.52429950 26067

观察者网站lla:

[38.95 -104.77 0.0]

results:

sv: ISS ephem observed response(km)              @ epoch: 1365630559.000000 : [344.067992722211, -72.38297754053431, 12587.123][degrees(sat.az), degrees(sat.alt), sat.range]
sv: ISS ephem reported llh location(km)          @ epoch: 1365630559.000000 : [-41.678271938092195, -129.16682754513502, 421.06290625][degrees(sat.sublat0, degrees(sat.sublong), sat.elevation]
sv: ISS ephem calculated xyz location(km)        @ epoch: 1365630559.000000 : [688.24385373837845, 6712.2004971137103, -704.83633267710866][aer2ecef(az,el,range,obsLoc.lat,obsLoc.lon,obsLoc.alt)]
sv: ISS ephem llh from calc xyz location(km)     @ epoch: 1365630559.000000 : [-6.001014287867631, 84.1455657632957, 12587.123][ecef2llh()]
sv: ISS ephem xyz from reported llh location(km) @ epoch: 1365630559.000000 :[-3211.7910504146325, -3942.7032969856118, -4498.9656030253745][llh2ecef(lat,long,elev)]
sv: ISS spg84 ecef position(m) @ epoch: 1365630559.000000 : [-3207667.3380003194, -3936704.823960199, -4521293.5388663234]
sv: ISS spg84 ecef2llh(m)      @ epoch: 1365630559.000000 : [-41.68067424524357, -129.17349987675482, 6792812.8704163525]
sv: Direct10 ephem observed response(km)              @ epoch: 1365630559.000000 : [320.8276456938389, -19.703680198781303, 43887.572][degrees(sat.az), degrees(sat.alt), sat.range]
sv: Direct10 ephem reported llh location(km)          @ epoch: 1365630559.000000 : [0.004647324660923812, -102.8070784813048, 35784.688][degrees(sat.sublat0, degrees(sat.sublong), sat.elevation]
sv: Direct10 ephem calculated xyz location(km)        @ epoch: 1365630559.000000 : [-18435.237655222769, 32449.238763035213, 19596.893001978762][aer2ecef(az,el,range,obsLoc.lat,obsLoc.lon,obsLoc.alt)]
sv: Direct10 ephem llh from calc xyz location(km)     @ epoch: 1365630559.000000 : [27.727834453026748, 119.60200825103102, 43887.572][ecef2llh()]
sv: Direct10 ephem xyz from reported llh location(km) @ epoch: 1365630559.000000 :[-9346.1899009219123, -41113.897098582587, 3.4164105611003754][llh2ecef(lat,long,elev)]
sv: Direct10 spg84 ecef position(m) @ epoch: 1365630559.000000 : [-9348605.9260040354, -41113193.982686974, -14060.29781505302]
sv: Direct10 spg84 ecef2llh(m)      @ epoch: 1365630559.000000 : [-0.019106864351793953, -102.81049179145006, 42156299.077687651]

我觉得自己真的很蠢,但发现了问题......

我正在将站点的纬度和经度转换为 PyEphem 模型(查看第 3-4 行)...转换当前有效。

让这成为孩子们的一个教训吧。使用好的变量名称...不要像我一样偷懒,浪费时间试图找到不存在的数学错误...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

来自方位角、仰角、距离和观察者经纬度、纬度的 ECEF 的相关文章

  • 使用 PyEphem 计算阴影长度

    我正在使用 PyEphem 并想要计算阴影的长度 假设一根单位长度的棍子种植在地上 长度由 cot phi 给出 其中 phi 是太阳高度角 如果我错了 请纠正我 我不知道在太阳上使用什么场 在下面的示例中 我使用角度 alt import
  • 太阳路径的计算

    我正在编写几种计算太阳穿过特定点的路径所需的方法 我使用两个不同的源编写代码进行计算 但都没有产生所需的结果 来源是 http www pveducation org pvcdrom properties of sunlight suns
  • 旋转前后的 OpenGL 平移

    以下是代码 摘自http www glprogramming com red chapter03 html 关于如何绘制机器人的手臂和肩膀并通过一些用户输入旋转它们 glPushMatrix glTranslatef 1 0 0 0 0 0
  • 旋转多部分对象

    我创建了一个对象 它有大约 7 个以上的部分 包括它的主体和在不同位置 附着 到它的较小部分 我的目标是旋转整个对象 我试着简单地打电话glRotatef angle 0 1 0 在构造整个对象之前 但我意识到这似乎围绕原点旋转 一切 无论
  • Pyephem 计算当前太阳时

    我正在尝试根据 UTC 小时和经度计算当地太阳时 我已经浏览过ephem包 但无法确定执行此操作的直接方法 关于这个问题的类似问题要么引起固定位置 日出 月亮 日落 的计算 例如使用 PyEphem 计算黎明和日落时间 或接收简化方法的建议
  • 在 P5.js 中旋转网格内的对象

    我正在尝试使用合适的 OOP 方法来让对象在网格单元格内单独旋转 我当前的结果是围绕 0 0 参考点旋转所有对象 而不是每个对象在其自己的单元格内旋转 当然 需要的是一个正确的翻译函数 但是当我尝试在innerSquare函数中应用它时tr
  • 计算天空中的恒星位置,PyEphem

    我很难找到天空中星星的当前坐标 RA DEC 在网络中我只找到了这个教程 如何使用ephem库 http asimpleweblog wordpress com 2010 07 04 astrometry in python with py
  • 将经度/纬度转换为 X/Y 坐标

    我使用 Google Maps API 创建了一张地图 突出显示了明尼苏达州的所有县 基本上 我使用一组经度 纬度坐标创建了县多边形 这是生成的地图的屏幕截图 用户要求之一是能够拥有与图像类似的地图 以便他们可以将其嵌入到 PowerPoi
  • 在银河系坐标中绘制热图

    EDIT 好吧 我想出了一个糟糕的方法来做到这一点 涉及scipy interpolate griddata 我有一些二维数组 130x360 形式的地图 数组中的每个值对应于该点的测量值 这些地图以赤经 ra 和赤纬 dec 形式提供 范
  • 将 CLRegion 转换为 MKMapRect 或类似的

    我想将 CLRegion 中心和半径 转换为两点 左上 右下 坐标集 我看过这个答案 但不合适 将 MKCoordinateRegion 转换为 MKMapRect https stackoverflow com questions 927
  • 如何将地心惯性 (ECI) 坐标转换为地心地球固定 (ECEF) AstroPy?其他?

    我在卫星轨道的地心惯性坐标 ECI 中具有位置 x y z 和速度 Vx Vy Vz 向量 最终希望得到大地坐标 纬度 经度和高度 根据这个其他堆栈溢出问题 https stackoverflow com questions 8233401
  • 天文应用

    我正在尝试构建一个天文学应用程序 在其中我应该显示给定纬度 经度和时间的天顶处和天顶附近的星星 我了解位置天文学的基础知识 令我困惑的是如何用大量数据创建数据库 我的查询是 更喜欢哪个目录 喜欢依帕谷目录或亨利 德雷珀 它的优点和缺点是什么
  • pyEphem 'sublat' 和 'sublong' 是在地心还是大地测量中给出的?

    文档说 如果给 pyEpehm 一个 TLE 和一个时间 它将返回以下内容 但是 我无法将返回的 sublat 和 sublon 转换为 ECEF XYZ 并返回 LLA 坐标进行验证 当我转换回来时 经度会被保留 但对于不同的测试 纬度会
  • 一天中给定时间、纬度和经度的太阳位置

    这个问题已被问到before https stackoverflow com questions 257717 position of the sun given time of day and lat long 258106 commen
  • SVG viewBox 反转 Y 坐标

    我正在使用 SVG 在 HTML 页面中绘制不同的形状 这些不同的形状是从 Microsoft Sql Server 中的空间数据库的几何对象中检索的 我面临的问题是坐标系统 Svg 和 Microsoft Sql Server 不同 0
  • turfjs可以提供地理坐标和应用程序坐标之间的坐标转换吗

    我需要从地理坐标系统到另一个坐标系统的转换 我认为最明显的方法是给出系统的两个边界框 因此 如果我有一个经 纬度坐标的地理 bbox 以及一个与之对应但在我自己的坐标中的非地理 bbox 我想要一个可以将地理到我和我到地理转换的 xfm 我
  • 有什么方法可以计算卫星(ISS)的视觉星等吗?

    刚刚了解了在我的 Raspberry Pi 上使用 PyEphem 的基础知识 工作得很好 获取物体 在我的例子中是国际空间站 的 next pass 的方法非常有用 但我真的也希望能够考虑到观察者的实际视觉幅度 这样我就可以只列出国际空间
  • ggplot2 3.1.0 中的自定义 y 轴刻度和辅助 y 轴标签

    Edit 2 ggplot2 package 的当前开发版本确实解决了我在下面的问题中提到的错误 使用安装开发版本 devtools install github tidyverse ggplot2 Edit 这似乎是错误的行为sec ax
  • 带有 Google 卫星图层的 Leaflet Map API [重复]

    这个问题在这里已经有答案了 我对此非常感兴趣传单地图API http leaflet cloudmade com 但是 我需要能够使用 Google 卫星层 我无法找到有关如何将 Google 卫星图层添加到 Leaflet 的示例 我知道
  • 从设备坐标系到绝对坐标系的加速度

    从我的 Android 设备中 我可以读取线性加速度值数组 在设备的坐标系中 和绝对方向值数组 在地球坐标系中 我需要的是获得后一个坐标中的线性加速度值 系统 我怎样才能转换它们 EDIT阿里在评论中回复后 好吧 如果我理解正确的话 当我测

随机推荐

  • 如何使用网络摄像头扫描 WinUI 3 中的二维码?

    我正在尝试在 WinUI 3 中从网络摄像头扫描 QR 码 我已经安装了 ZXing 和 AForge Video 但这些库在 WinUI 3 中无法正常工作 是否有任何解决方案或更兼容的替代方案 ZXing 中兴网是一个端口 完全与平台无
  • 绑定到 Django Admin 的模型历史记录

    设置 我正在开发一个 Django 应用程序 它允许用户在数据库中创建一个对象 然后返回并根据需要进行编辑 Django 的管理站点保存通过管理站点对对象所做的更改的历史记录 问题 如何将我的应用程序挂接到管理站点的更改历史记录中 以便我可
  • lua 中的来回 UTC 日期

    我在将 lua 日期转换为时间戳然后从中获取原始日期时遇到问题 它确实适用于非 UTC 日期 但不适用于 UTC 目前我的示例代码是 local dt1 os date t print dt1 hour local dt2 os date
  • MySQL 错误 1349 我缺少什么?

    我正在获取 MySQL1349错误 但看起来错误似乎不正确 ERROR 1349 View s SELECT contains a subquery in the FROM clause 创建视图时可以没有任何子查询吗 这是我的 SQL C
  • Spark:当键是不可散列的numpy数组时如何“reduceByKey”?

    我有一个 键 值 元素的 RDD 键是 NumPy 数组 NumPy 数组不可散列 当我尝试执行以下操作时 这会导致问题reduceByKey手术 有没有办法为 Spark 上下文提供我的手动哈希函数 或者有没有其他方法可以解决这个问题 除
  • 如何将此 JSON 反序列化为对象?

    我正在尝试使用 JSON Net 将 JSON 对象反序列化为 C 对象 我想要创建的对象是MonthlyPerformance其中包含一个列表Type 其中包含一个列表Categories 其中又包含一个列表Funds 它们定义为 pub
  • HttpClient 在指定超时之前超时

    我正在使用 WP8 中的 HttpClient 并执行 Post 请求 我知道呼叫可能需要很长时间 因为我实际上是在模拟慢速网络场景 因此我设置了HttpClient Timeout相应地为5分钟 然而 我在 60 秒左右超时 我相信超时不
  • 将依赖项注入 Ember 模型

    我正在尝试将依赖项注入我的 Ember 模型中 https github com emberjs ember js issues 3670 表明此功能已禁用 通过链接访问https github com stefanpenner ember
  • 为什么我们可以从线程池线程修改表单标题? [复制]

    这个问题在这里已经有答案了 下面的等待任务尚未完成await点并且它不捕获 UI 上下文 这意味着后面的 UI 修改代码将在另一个线程 本例中为线程池线程 中调用 private async void Button1 Click objec
  • 如何从表中获取数据?

    如何从 Javascript 中的表 displayTable 中名为 Limit 的列中提取数据 字符串 var table document getElementById displayTable var rowCount table
  • Rails ActiveRecord 如何在没有多个查询的情况下链接“where”子句?

    我是一名 PHP 开发人员 正在学习 Ruby on Rails 的强大功能 我很喜欢 ActiveRecord 并且注意到一些非常有趣的事情 这就是 ActiveRecord 方法如何检测方法链的末尾以执行查询 person Person
  • 在mvc中加载gif

    我的控制器中有一个像这样的方法 public string UpdateResource Thread Sleep 2000 return string Format Current time is 0 DateTime Now ToSho
  • 如何从Android中的日期选择器获取日期?

    我正在使用DatePicker对于我的申请 我想获取我选择的日期 在DatePicker 但它不返回选定的日期 它始终返回当前日期 我怎样才能得到选定的日期DatePicker 任何帮助将不胜感激 day pickDate getDayOf
  • 如何使用 Commons FileUpload 设置存储文件上传的文件夹

    如何设置 TOMCAT 服务器上存储文件上传的位置 我在用commons fileupload就目前情况而言 我能够存储多个 tmp文件到catalina base temp但是 我的目标是将上传的文件夹以其原始形式存储到d dev upl
  • 内联 SVG 上的 Jquery 切换类

    我有一个带有内联 SVG 站点地面植物的考古图 的布局 侧边栏中有一些解释性文本 我想通过切换来更改我在 SVG 中创建的组的一些属性不同组的班级 我正在尝试使用 JQuerytoggleClass 但它不起作用 我想将类上的更改绑定到一些
  • Symfony2 如何渲染复选框?

    我有一个表单构建器表单 其中包含多个国家 地区选择列表 当我将它们呈现在我的表单上时 如下所示 form widget edit form countries 它们看起来像这样
  • Python 正则表达式列表的总和没有输出

    问题是读取文件 使用 re findall 查找整数 查找 0 9 的正则表达式 然后将提取的字符串转换为整数并对整数求和 我的代码 其中sample txt是我的文本文件 import re hand open sample txt fo
  • 无需构造函数注入即可获取服务实例

    我有一个 InjectableBootstrap 中定义的服务 我想在不使用构造函数注入的情况下获取服务的实例 我尝试使用ReflectiveInjector resolveAndCreate但这似乎创建了一个新实例 我尝试这样做的原因是我
  • 如何使用 webmatrix 将图像添加到 iTextSharp 中的表格单元格

    我制作了一张包含单元格的表格 并希望在其中一个单元格中包含图像 下面是我的代码 doc Open PdfPTable table new PdfPTable 2 table TotalWidth 570f table LockedWidth
  • 来自方位角、仰角、距离和观察者经纬度、纬度的 ECEF

    我正在尝试编写一个基本的 python 脚本 它将从给定位置跟踪用 tle 定义的给定卫星 我不是一个阿斯托 轨道人 但我正在努力变得更聪明 当我尝试将方位角 仰角 距离值转换为 ECEF 位置时 我遇到了问题 我使用 PyEphem 获取