# 空天快响算法库 * V1.0 - 2025/03/24: 添加北斗编码模块, 目标区域网格模块, 无人机任务规划模块 ## 北斗编码 _ktkx.beidou_ * GBT+39409-2020 北斗网格位置码, 实现非两级区域10级网格编解码, 两级区域3级网格编解码, 全区域10级高度码 | 网格层级 | 网格码长度 | 网格大小 | 高度码长度 | 网格高度 | 总长度 | | :--: | :--: | :--: | :--: | :--: | :--: | | 1 | 4 | $6\degree\times4\degree$ | 3 | $445.28km$ | 7 | | 2 | 6 | $55.66km\times55.66km$ | 4 | $55.66km$ | 10 | | 3 | 7 | $27.83km\times18.55km$ | 5 | $27.83km$ | 12 | | 4 | 9 | $1.85km\times1.85km$ | 6 | $1.85km$ | 15 | | 5 | 11 | $123.69m\times123.69m$ | 7 | $123.69m$ | 18 | | 6 | 12 | $61.84m\times61.84m$ | 8 | $61.84m$ | 20 | | 7 | 14 | $7.73m\times7.73m$ | 9 | $7.73m$ | 23 | | 8 | 16 | $0.97m\times0.97m$ | 10 | $0.97m$ | 26 | | 9 | 18 | $12cm\times12cm$ | 11 | $12.1cm$ | 29 | | 10 | 20 | $1.5cm\times1.5cm$ | 12 | $1.5cm$ | 32 | * V1.0 - 2025/03/24: * 新增: * 实现非两级区域10级网格编解码, 两级区域3级网格编解码 * 全区域10级高度码 ### 北斗区域网格码 _ktkx.beidou.LocationCode_ #### 编码 _ktkx.beidou.LocationCode.to_code()_ * **Args:**  **lon(SupportsFloat):** 经度(deg), Range: [-180, 180]  **lat(SupportsFloat):** 纬度(deg), Range: [-90, 90]  **alt(SupportsFloat):** 高程(m), Range: [-6378137, inf], Defaults: None  **level(int):** 网格层级, Range: [1, 10], Defaults: 10  **dimension(int):** 网格维度, Range: 2 or 3, Defaults: 2 * **Returns:**  **str:** 二/三维网格码 #### 解码 ktkx.beidou.LocationCode.to_coordinate() * **Args:**  **code(str):** 二/三维网格码  **dimension(int):** 网格码维度, Range: 2 or 3, Defaults: 2 * **Returns:**  **NDArray:**   NDArray[float, float]: 经度(deg), 纬度(deg)   NDArray[float, float, float]: 经度(deg), 纬度(deg), 高程(m) ## 区域 _ktkx.region_ * 将二维区域目标按照指定的网格层级进行离散化, 储存区域和网格信息 * V1.0 - 2025/03/24: * 新增: * 将二维区域目标按照指定的网格层级进行离散化 * 待解决: * 由于进程竞争锁, 并行计算速度远低于但进程计算, 后续用Cyhton进行并行计算 * 点和线目标的区域类 ### 区域类 _ktkx.region.Region_ #### 初始化区域 _ktkx.region.Region()_ * **Args:**  **coordinates(List[Tuple[float, float]])**: 区域顶点经纬度坐标(deg)  **level(int)**: 北斗网格层级  **workers(int)**: 并行数量 #### 区域离散化层级 _ktkx.region.Region.level: int_ #### 区域多边形 _ktkx.region.Region.polygon: Polygon_ #### 网格数组 _ktkx.region.Region.grid_array: NDArray_ #### 网格位置码数组 _ktkx.region.Region.grid_code_array: NDArray_ #### 网格中心数组 _ktkx.region.Region.grid_center_array: NDArray_ #### 网格面积数组 _ktkx.region.Region.grid_area_array: NDArray_ ### 网格 _ktkx.region.Grid_ #### 初始化网格 _ktkx.region.Grid()_ * **Args:**  **code(str)**: 北斗二维地理网格码  **center(NDArray)**: 网格中心点, Defaults: None  **full_grid(bool)**: 网格是否完整, Defaults: True  **polygon(Polygon)**: 网格多边形, Defaults: None * **Examples:** * 创建完整网格 >Grid(code = code) * 创建不完整网格 >Grid(code = code, polygon = polygon, full_grid = False) #### 网格码 _ktkx.region.Grid.code: str_ #### 网格层级 _ktkx.region.Grid.level: int_ #### 网格经度差 _ktkx.region.Grid.delta_lon: float_ #### 网格纬度差 _ktkx.region.Grid.delta_lat: float_ #### 网格中心 _ktkx.region.Grid.center: NDArray_ #### 网格多边形 _ktkx.region.Grid.polygon: Polygon_ #### 网格是否完整 _ktkx.region.Grid.full_grid: bool_ ## 无人机 _ktkx.uav_ * 考虑无人机的续航约束, 对无人机的区域推扫任务进行航线规划![alt text](markdown/UavPlanning.png) * V1.0 - 2025/03/24: * 新增: * 实现无人机类, 包含无人机开始结束位置, 无人机续航约束 * 使用贪心算法对进行任务规划首层网格规划 * 使用ortools中启发式算法进行优化 * 待实现 * 距离矩阵并行计算 * 网格内任务规划 * 多目标任务规划 ### 无人机类 _ktkx.uav.Uav_ #### 初始化无人机 _ktkx.uav.Uav()_ * **Args**:  **id(int)**: 无人机ID  **start_coordinate(NDArray)**: 无人机起始经纬度坐标(deg)  **end_coordinate(NDArray)**: 无人机结束经纬度坐标(deg)  **endurance(SupportsFloat)**: 无人机续航里程(m) #### 无人机ID _ktkx.uav.Uav.id (int)_ #### 起始坐标 _ktkx.uav.Uav.start_coordinate: NDArray_ #### 起始网格码 _ktkx.uav.Uav.start_code: str_ #### 结束坐标 _ktkx.uav.Uav.end_coordinate: NDArray_ #### 结束网格码 _ktkx.uav.Uav.end_code: str_ #### 续航里程 _ktkx.uav.Uav.endurance: SupportsFloat_ ### 无人机任务规划类 _ktkx.uav.UavPlanning_ #### 初始化任务规划 _ktkx.uav.UavPlanning()_ * **Args:**  **region(ktkx.region.Region)**: 目标区域  **uav_list(list[ktkx.uav.Uav])**: 无人机列表 #### 规划初始解 _ktkx.uav.UavPlanning.init_solve_ * **Returns:**  **list[list[int]]:** 无人机节点规划结果   list(i): 第i架无人机规划结果    list(i)(j): 第i架无人机经过的第j个节点 #### 规划优化解 _ktkx.uav.UavPlanning.solve_ * **Args:**  **time(SupportsFloat):** 最长优化时间