dfpc-coe/node-CoT
GitHub: dfpc-coe/node-CoT
一个 TypeScript 编写的 Cursor-on-Target 消息解析与转换库,支持 TAK 协议在 XML、Protobuf、GeoJSON 及 JSON 格式之间的双向转换。
Stars: 37 | Forks: 11
Node-CoT
Typescript/Javascript Cursor-On-Target 库
轻量级 Typescript 库,用于解析和操作 TAK 相关的消息,主要是 [Cursor-on-Target (COT)](https://git.tak.gov/standards/takcot)
## 关于
`node-cot` 可以在 TAK 消息协议(XML 和 Protobuf)与 Javascript 对象/JSON 格式之间进行转换。
它还支持将 CoT 消息双向转换为 [GeoJSON](https://geojson.org/)
它还支持创建和解析以下 TAK 数据类型
- 数据包(CoT、附件等)
- 底图 XML 文档
## API 文档
最新版本的 API 文档可以在我们的 [Github Pages 站点](https://dfpc-coe.github.io/node-CoT/) 上找到
或者在本地生成:
```
npm run doc
```
## 安装
### NPM
要使用 npm 安装 `node-cot`,请运行:
```
npm install @tak-ps/node-cot
```
## 使用示例
### Cursor-On-Target
```
import CoT from '@tak-ps/node-cot';
const cot = new CoT(`
`);
// Export Formats
cot.to_geojson(); // Output GeoJSON Representation
cot.to_xml(); // Output String XML Representation
cot.raw; // JSON XML Representation
```
### 调试
如果环境变量 `DEBUG_COTS` 为真(truthy)
例如:
```
export DEBUG_COTS=1
```
那么每次调用构造函数时都会打印原始的 JSON 格式 XML。
## CoT 规范
CoT 规范是由 TPC(TAK 产品中心)内的大型 TAK 客户端通过初步的内部共识非正式制定的。
以下是目前对该规范的主要理解,主要是通过逆向工程 TAK 客户端得出的:
```
```
### Event 属性
| 名称 | 描述 | 示例 |
| ------------- | ----------- | ------- |
| `version` | CoT 版本,目前为 `2.0` | `version="2.0"` |
| `uid` | 此事件中此信息的全局唯一名称 | `uid="any-unique-string-123"` |
| `type` | 关于事件类型的分层组织提示 | `type="a-f-G-E"' |
| `how` | 给出生成坐标方式的提示 | `how=""`
| `time` | 事件生成的时间 | `time="2023-07-18T15:25:09.00Z"` |
| `start` | 事件开始或变得相关的时间 | `start="2023-07-18T15:25:09.00Z"` |
| `stale` | 事件结束或不再相关的时间 | `stale="2023-07-18T15:25:09.00Z"` |
## CoT GeoJSON 规范
该库的主要用例之一是让常见地理空间格式的序列化和反序列化变得轻而易举。本节将介绍通过 `from_geojson()` 函数公开的 CoT 选项。
### 支持的几何图形
- 所有输入的几何图形必须是 GeoJSON `Feature` 类型
- 支持 `Point`、`Polygon` 和 `LineString`
- 不支持 `Multi` 几何图形,在传递给库之前必须将其转换为其非 Multi 类型
- 质心是使用 PointOnSurface 算法计算的
### 支持的属性
以下是最重要/最相关的属性
| 属性 | 描述 |
| --------------------- | ----------- |
| `.id` | 用作 CoT uid - 如果省略,则会生成一个 UUID |
| `.properties.type` | CoT type - 注意,如果几何图形不是 Point,它将被覆盖 |
| `.properties.how` | CoT how |
| `.properties.time` | CoT 创建的时间 |
| `.properties.start` | CoT 相关的起始时间 |
| `.properties.stale` | CoT 过期的时间 |
| `.properties.callsign`| 显示的呼号(基本上是要素的名称) |
| `.properties.speed` | 对象的速度,单位为 m/s |
| `.properties.course` | 对象距离正北的航向(以度为单位) |
| `.properties.remarks` | 人类可读的备注字段 |
也可以使用以下属性将样式应用于要素:
| 属性 | 描述 |
| --------------------------------- | ----------- |
| `.properties.marker-color` | Point |
| `.properties.marker-opacity` | Point |
| `.properties.stroke` | Polygon/LineString |
| `.properties.stroke-opacity` | Polygon/LineString: 0-256 的整数 |
| `.properties.stroke-width` | Polygon/LineString |
| `.properties.stroke-style` | Polygon/LineString |
| `.properties.stroke-style` | Polygon/LineString |
| `.properties.fill` | Polygon |
| `.properties.fill-opacity` | Polygon: 0-256 的整数 |
以下是一些可以使用的不太常见的属性:
| 属性 | 描述 |
| --------------------------------- | ----------- |
| `.properties.icon` | 字符串:自定义图标路径 (字符串) |
| `.properties.archived` | 布尔值:TAK 客户端将忽略 stale 值并保留该要素 |
| `.properties.dest` | 用于将 CoT 发送到特定位置的 Marti API 指令 |
| `.properties.fileshare` | 通过 CoT 推送数据包 |
## 已知特殊的 CoT 类型
几何图形
| CoT 类型 | 备注 |
| ----------------- | ----- |
| `u-d-f` | LineString 或 Polygon |
| `u-d-r` | 4 角矩形 |
| `u-d-p` | Point |
| `u-d-c-c` | 圆形 |
| `u-rb-a` | 范围线 |
内部
| CoT 类型 | 备注 |
| ----------------- | ----- |
| `t-x-g-c` | 频道更改通知 |
| `t-x-c-t` | TAK Server Ping 请求 |
| `t-x-c-t-r` | TAK Server Pong 响应 |
通知/警报
| CoT 类型 | 备注 |
| ----------------- | ----- |
| `b-a` | 警报 |
| `b-a-o-tbl` | 911 警报 |
| `b-a-o-can` | 取消警报 |
| `b-a-g` | 地理围栏突破 |
| `b-a-o-pan` | RingTheBell |
| `b-a-o-opn` | TroopsInContact |
| `b-r-f-h-c` | Casevac (伤亡撤离) |
聊天
| CoT 类型 | 备注 |
| ----------------- | ----- |
| `b-t-f` | 聊天 |
| `b-t-f-d` | 聊天送达回执 |
| `b-t-f-r` | 聊天已读回执 |
| `b-t-f-p` | 聊天待处理回执 |
| `b-t-f-s` | 聊天发送失败 |
任务同步
| CoT 类型 | 备注 |
| ----------------- | ----------------------------- |
| `t-x-m` | 任务 (Mission) |
| `t-x-m-n` | 任务已创建 |
| `t-x-m-d` | 任务已删除 |
| `t-x-m-i` | 任务邀请通知 |
| `t-x-m-c` | 任务更改 |
| `t-x-m-c-h` | 任务更改:图层 |
| `t-x-m-c-l` | 任务更改:日志 |
| `t-x-m-c-e` | 任务更改:外部 |
| `t-x-m-c-m` | 任务更改:元数据 |
| `t-x-m-c-k` | 任务更改:关键字 |
特殊
| CoT 类型 | 备注 |
| ----------------- | ----- |
| `b-i-v` | 位/图像/视频 |
| `b-i-r-r` | 远程资源 |
| `b-f-t-r` | 文件传输请求 |
| `b-i-x-i` | QuickPic |
| `b-m-r` | 路线 |
| `b-m-p-c` | 路线控制点 |
| `b-m-p-w` | 路线路径点 |
标签:CMS安全, Cursor-on-Target, GIS, JavaScript, MITM代理, TAK, TypeScript, 地理空间数据, 安全插件, 开发库, 数据可视化, 数据解析, 暗色界面, 自动化攻击