# ecef
**Repository Path**: cesiumjs/ecef
## Basic Information
- **Project Name**: ecef
- **Description**: 高性能ECEF坐标转换库(基于简化球模型),支持JWH(经纬度高程)与XYZ(ECEF)坐标双向转换,提供单个坐标和批量数据处理接口。
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-10-15
- **Last Updated**: 2025-10-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ecef
高性能 ECEF 坐标转换库(基于简化球模型)
支持 JWH(经纬度高程)与 XYZ(ECEF)坐标双向转换,提供单个坐标转换和批量 `Float64Array` 转换接口。
## 特性
- 支持多种模块格式:ESM、CJS 和 IIFE。
- 提供单个坐标和批量数据的高效转换。
- 内置单位法向量计算、距离计算等辅助功能。
- 严格的输入校验,确保数据有效性。
## 安装
### 使用 npm 或 yarn
```bash
npm install ecef
```
或者
```bash
yarn add ecef
```
### 直接引入 UMD 构建文件
你可以通过 `
```
## 使用方法
### ESM 和 CJS
#### 引入模块
```javascript
// ESM
import { fromDegree, toDegree, distance } from 'ecef';
// CJS
const { fromDegree, toDegree, distance } = require('ecef');
```
#### 示例代码
将大地坐标(JWH)转换为 ECEF 坐标(XYZ):
```javascript
const jwh = { longitude: 120, latitude: 30, height: 0 };
const xyz = fromDegree(jwh);
console.log(xyz); // { x, y, z }
```
将 ECEF 坐标(XYZ)转换为大地坐标(JWH):
```javascript
const xyz = { x: 1000000, y: 2000000, z: 3000000 };
const jwh = toDegree(xyz);
console.log(jwh); // { longitude, latitude, height }
```
计算两个 ECEF 坐标之间的直线距离:
```javascript
const pointA = { x: 1000000, y: 2000000, z: 3000000 };
const pointB = { x: 1500000, y: 2500000, z: 3500000 };
const dist = distance(pointA, pointB);
console.log(dist); // 距离(米)
```
### IIFE(浏览器环境)
在浏览器环境中,可以通过全局变量 `ecef` 使用所有导出的方法:
```html
```
## API 文档
### 核心转换函数
- `fromDegree(jwh: JWH, radius?: number): XYZ`
将大地坐标(JWH)转换为 ECEF 坐标(XYZ)。
参数:
- `jwh`: 大地坐标对象 `{ longitude, latitude, height }`
- `radius`: 球体半径,默认为 `SphereRadius.WGS84_SEMIMAJOR`
- `toDegree(xyz: XYZ, radius?: number): JWH`
将 ECEF 坐标(XYZ)转换为大地坐标(JWH)。
参数:
- `xyz`: ECEF 坐标对象 `{ x, y, z }`
- `radius`: 球体半径,默认为 `SphereRadius.WGS84_SEMIMAJOR`
### 批量处理函数
- `fromDegrees(jwhArray: Float64Array, radius?: number): Float64Array`
批量将大地坐标数组转换为 ECEF 坐标数组。
输入格式:`[longitude0, latitude0, height0, ...]`
输出格式:`[x0, y0, z0, ...]`
- `toDegrees(xyzArray: Float64Array, radius?: number): Float64Array`
批量将 ECEF 坐标数组转换为大地坐标数组。
输入格式:`[x0, y0, z0, ...]`
输出格式:`[longitude0, latitude0, height0, ...]`
### 辅助计算函数
- `distance(a: XYZ, b: XYZ): number`
计算两个 ECEF 坐标之间的直线距离。
- [center(points: XYZ[]): XYZ](file://d:\jvy\JVY\100个人\code\gitee\ecef\src\index.ts#L317-L332)
计算多个 ECEF 坐标的中心点。
- `distanceArray(a: Float64Array, b: Float64Array): number`
计算两个 `Float64Array` 存储的 ECEF 坐标之间的距离。
### 类型检查工具
- `isJWH(value: unknown): boolean`
检查是否为有效的大地坐标对象。
- `isXYZ(value: unknown): boolean`
检查是否为有效的 ECEF 坐标对象。
## 许可证
MIT