# orbscjs

> 计算卫星星下点经纬度

Latest version **3.1.0** (published 2023-06-05) · ISC license · 0 weekly downloads

## Install

```sh
npm install orbscjs
pnpm add orbscjs
yarn add orbscjs
bun add orbscjs
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 3.1.0 |
| Published | 2023-06-05 |
| First published | 2017-10-24 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 2 |
| Unpacked size | 961.1 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | FanTaSyLin |
| Maintainers | kq9yhe63 |

## Links

- npm: https://www.npmjs.com/package/orbscjs
- npm.io page: https://npm.io/package/orbscjs

## Dependencies (2)

- [sgp4](https://npm.io/package/sgp4.md) ^1.0.10
- [satellite.js](https://npm.io/package/satellite.js.md) ^5.0.0

## Recent versions

- 3.1.0 (latest) — 2023-06-05
- 3.0.2 — 2023-05-29
- 3.0.1 — 2023-05-26
- 2.1.1 — 2023-05-22
- 2.1.0 — 2023-05-22
- 2.0.8 — 2023-05-22
- 2.0.7 — 2023-05-22
- 2.0.6 — 2023-05-22
- 2.0.4 — 2023-05-22
- 2.0.3 — 2023-05-22
- 2.0.2 — 2023-05-22
- 2.0.0 — 2023-05-22
- 1.1.2 — 2022-02-17
- 1.1.1 — 2021-04-28
- 1.1.0 — 2021-04-27
- … 7 more at https://npm.io/package/orbscjs/versions

## README

# ORBSCJS

## 未完成

- 打包并同时支持 js 与 nodejs
- 新增的两个函数尚未调试

## 记录

### orbelem

```js
/**
 * @typedef orbelem
 * @prop {number} eptime 时间，秒计数（起点时？？）
 * @prop {number} period 轨道周期，单位为秒
 * @prop {number} eporbt 轨道编号
 * @prop {number[]} epelem 6参
 * 
 * @des epelem[0] 轨道元素中的半长轴（semi-major axis），单位为千米
 * @des epelem[1] 轨道元素中的偏心率（eccentricity）
 * @des epelem[2] 轨道元素中的轨道倾角（inclination），单位为弧度
 * @des epelem[3] 轨道元素中的升交点赤经（right ascension of ascending node），单位为弧度
 * @des epelem[4] 轨道元素中的轨道偏角（argument of periapsis），单位为弧度
 * @des epelem[5] 轨道元素中的真近点角（true anomaly），单位为弧度
 */
```

### orbosele[8] 瞬时轨道参数

```js
/**
 * @des orbosele[8] 瞬时轨道参数
 * @des orbosele(1):  轨道半长轴[公里]
 * @des orbosele(2): 轨道偏心率
 * @des orbosele(3): 轨道倾角[弧度]
 * @des orbosele(4): 升交点赤经[弧度]
 * @des orbosele(5): 近地点幅角[弧度]
 * @des orbosele(6): 平近点角[弧度]
 * @des orbosele(7): 卫星轨道向经（从卫星到地心的距离）[公里]
 * @des orbosele(8): 真近点角[弧度]
 */
```

## subSatPoint

```ts
subSatPoint(tleLine1, tleLine2, time[, pixels])
```

计算星下点经纬度

### 参数

tleLine1 (string): 第一行 // 1 99999U 23055A   23148.95833333  .00053924  00000-0  86260-3 0 00006

tleLine2 (string): 第二行 // 2 99999 049.9996 336.6070 0004272 315.4428 328.1689 15.52430075006689

time (Date): 时间  new Date("2017-10-18 00:50:00")

[pixels = tPixel] (number): 仪器的水平像素数 // eg. NOAAI9 AVHRR：2048

### 返回值

(object): 星下点信息
  
- orbit (number): 轨道号
- lat (number): 星下点纬度
- lon (number): 星下点经度
- height (number): 星下点高度
- adFlg (string): 升降轨标识（A-升，D-降）
- leftLat (number): 最左侧扫描点纬度
- leftLon (number): 最左侧扫描点经度
- rightLat (number): 最右侧扫描点纬度
- rightLon (number): 最右侧扫描点经度

## 例子

```js
var ORBSC = require("orbscjs");

let testTime = new Date('2023-05-26T05:11:00Z')
const tleLine1 = '1 49008U 21062A   23142.56951089  .00000011  00000+0  25950-4 0  9993'
const tleLine2 = '2 49008  98.7217 144.3655 0002722  84.3641 275.7846 14.19681025 97422'
const orbitInfo = ORBSC.subSatPoint(tleLine1, tleLine2, testTime, 2048)

console.log(`###${i}### ${testTime.toString()}: ${orbitInfo.orbit}, ${orbitInfo.adFlg} Lon: ${orbitInfo.lon}, Lat: ${orbitInfo.lat}, Left: [${orbitInfo.leftLon}, ${orbitInfo.leftLat}], right: [${orbitInfo.rightLon}, ${orbitInfo.rightLat}`)
```

## angleSatPoint

```ts
angleSatPoint(time, pointNum, tPixels, stpAng, stpTim, orbelem)
```

计算从0到扫描角的`pointNum`个点为经纬度

### 参数

time (Date): 时间 new Date("2017-10-18 00:50:00")

pointNum (number):  要计算的点的个数

tPixels (number): 一行象素点总数（仪器属性）

stpAng (number): 两点间的角度（仪器属性）

stpTim (number): 两点间的时间（仪器属性）

orbelem ([orbelem](#orbelem)): 轨道参数

### 返回值

(array): 返回逐点的经纬度信息

### 例子

```js
// NOAAI9 AVHRR 110.8 2048 0.0541 0.000025
// tPixels = 2048, stpAng = 0.0541, stpTim = 0.000025

const ORBSC = require("orbscjs");
// 直接传入轨道根数
const orbelem = {
 "epelem": [
  7205.1839,
  0.001118,
  1.7238019999999943,
  1.9813819999999987,
  0.049575999999990068,
  1.116255000000005
 ],
 "eporbt": 1347,
 "eptime": 1303344000.0,
 "period": 6086.64318
}
const angData = ORBSC.angleSatPoint(new Date("2017-10-18 00:50:00"), 10, 2048, 0.0541, 0.000025, orbelem)

// => [{lat: x, lon: y}, ... ...]
```

---
_Source: https://npm.io/package/orbscjs · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
