Skip to main content

飞行区域管理类

IFlyZoneManager

描述 无人机飞行区域管理主要包含禁飞区管理、授权区管理和可飞区管理。禁飞区又分为全球固定禁飞区、临时禁飞区和电子围栏(目前只支持符合ED-269规范的JSON文件)三种。SDK实现飞行区域相关的功能并提供符合法律法规的接口给外部使用。

method getFlyZonesInSurroundingArea

fun getFlyZonesInSurroundingArea(
location: LocationCoordinate2D,
callback: CommonCallbacks.CompletionCallbackWithParam<List<FlyZoneInformation>?>
)

描述: 获取距离中心位置100公里范围内的禁⻜区,包括固定禁飞区、临时禁飞区和电子围栏

输入参数: location 中心位置

输入参数: callback 结果回调

输出参数:

相关参数: LocationCoordinate2D, FlyZoneInformation, FlyZoneCategory, FlyZoneShape

/**
* 位置坐标类
*/
data class LocationCoordinate2D(
val latitude: Double, // 纬度
val longitude: Double // 经度
)

/**
* 限飞区信息
*/
data class FlyZoneInformation(
/**
* 限飞区ID
*/
val flyZoneId: Long,
/**
* 限飞区名称
*/
val name: String?,
/**
* 限飞区类型
*/
val category: FlyZoneCategory,
/**
* 限飞区形状
*/
val shape: FlyZoneShape,
/**
* 限飞区下限 单位/米
*/
val lowerLimit: Double,
/**
* 限飞区上限 单位/米
*/
val upperLimit: Double,
/**
* 圆心坐标
*/
val circleCenter: LocationCoordinate2D?,
/**
* 圆半径 单位/米
*/
val circleRadius: Double,
/**
* 多边形坐标点
*/
val polygonPoints: List<LocationCoordinate2D>? = null
)


/**
* 限飞区策略。包括禁飞区,授权区,警告区和加强警告区等。
*/
enum class FlyZoneCategory(val type: Int) {
UNKNOWN(-1),
/**
* 警告区
*/
WARNING(0),
/**
* 授权区
*/
AUTHORIZATION(1),
/**
* 禁飞区
*/
RESTRICTED(2),

/**
* 加强警告区
*/
ENHANCED_WARNING(3),
;
}

/**
* 限飞区形状类型。包括圆形和多边形。
*/
enum class FlyZoneShape(val type: Int) {
UNKNOWN(-1),

/**
* 圆形
*/
CIRCLE(0),

/**
* 多边形
*/
POLYGON(1),
;
}

method downloadAuthFlyZoneFromServer

fun downloadAuthFlyZoneFromServer(
aircraftSN: String,
token: String,
location: LocationCoordinate2D,
callback: CommonCallbacks.CompletionCallbackWithParam<List<FlyZoneAuthInformation>?>
)

描述: 从服务器获取指定⻜机授权区信息.

输入参数: aircraftSN 飞机序列号

输入参数: token 令牌,登录时从服务器获取, 没有可以不填

输入参数: location 中心位置

输入参数: callback 结果回调

输出参数:

相关参数: LocationCoordinate2D, FlyZoneAuthInformation

/**
* 授权区信息,目前仅有圆形区域
*/
data class FlyZoneAuthInformation(
/**
* 唯一标志
*/
val id: String,
/**
* 飞机序列号
*/
val aircraftSN: String,
/**
* 可飞行区域名称
*/
val name: String,
/**
* 可飞行区域经度
*/
val longitude: Double,
/**
* 可飞行区域纬度
*/
val latitude: Double,
/**
* 可飞行区域半径
*/
val radius: Float,
/**
* 可飞行区域高度
*/
val height: Float,
/**
* 可飞行区域生效开始时间戳,单位秒
*/
val startTimeStamp: Long,
/**
* 可飞行区域生效截止时间戳,单位秒
*/
val endTimeStamp: Long,
)

method pushAuthFlyZoneToAircraft

fun pushAuthFlyZoneToAircraft(
drone: IAutelDroneDevice,
callback: CommonCallbacks.UpLoadFileCallbackWithProgress<Int>
)

描述: 将授权区信息上传至⻜行器⻜控中,需要注意授权区信息SN需与⻜机SN匹配,否则上传失败,上传成功授权区既 生效。

输入参数: drone 无人机设备

输入参数: callback 结果回调

输出参数:

相关参数: IAutelDroneDevice

method getAuthFlyZone

fun getAuthFlyZone(
aircraftSN: String,
callback: CommonCallbacks.CompletionCallbackWithParam<List<FlyZoneAuthInformation>?>
)

描述: 获取授权区信息

输入参数: aircraftSN 飞机序列号

输入参数: callback 结果回调

输出参数:

相关参数: FlyZoneAuthInformation

method deleteAuthFlyZoneFromAircraft

fun deleteAuthFlyZoneFromAircraft(
drone: IAutelDroneDevice,
callback: CommonCallbacks.CompletionCallback
)

描述: 删除授权区信息

输入参数: drone 无人机设备

输入参数: callback 结果回调

输出参数:

相关参数: IAutelDroneDevice

method importFlySafeDynamicDatabaseToMSDK

fun importFlySafeDynamicDatabaseToMSDK(
filePath: String,
callback: CommonCallbacks.CompletionCallbackWithParam<List<FlyZoneInformation>>
)

描述: 将飞行地理感知数据库导入到MSDK中,当前只支持导入欧盟地理感知数据。地理感知数据可以从欧洲航空安全局官网下载

输入参数: filePath 数据文件路径,数据文件必须为JSON格式并且需要符合ED-269规范。

输入参数: callback 结果回调

输出参数:

相关参数: FlyZoneInformation

method getFlySafeDynamicDataVersion

fun getFlySafeDynamicDataVersion(): String

描述: 获取飞行地理感知数据库版本, 如果没有,则返回空

输入参数:

输出参数: 飞行地理感知数据库版本

相关参数:

method pushFlySafeDynamicDatabaseToAircraft

fun pushFlySafeDynamicDatabaseToAircraft(
callback: CommonCallbacks.UpLoadFileCallbackWithProgress<Int>
)

描述: 将飞行地理感知数据库上传至⻜行器⻜控中,上传成功后,⻜行器⻜控中的电子围栏生效。

输入参数: callback 结果回调

输出参数:

相关参数:

method getAircraftFlyZoneCountryCode

fun getAircraftFlyZoneCountryCode(
aircraftSN: String,
callback: CommonCallbacks.CompletionCallbackWithParam<List<FlyableZoneInfo>>
)

描述: 获取飞行器可飞区国家码,飞行器仅可在可飞区内飞行

输入参数: aircraftSN 飞机序列号

输入参数: callback 结果回调

输出参数:

相关参数: FlyableZoneInfo

/**
* 可飞区信息
*/
data class FlyableZoneInfo(
val countryCode: String, //国家码
val startTimestamp: Long, //开始时间
val endTimestamp: Long, //结束时间
val zoneType: Int, //区域类型
)

method refreshFlyZone

fun refreshFlyZone()

描述: 刷新飞行区域

输入参数:

输出参数:

相关参数:

method getHotZoneCountryCode

fun getHotZoneCountryCode(callback: CommonCallbacks.CompletionCallbackWithParam<List<String>>)

描述: 获取热点区域,热点区域飞行器禁飞

输入参数: callback 结果回调

输出参数:

相关参数:

method isHotZoneCountry

fun isHotZoneCountry(countryCode: String): Boolean

描述: 飞行器当前所在的国家是否是热区

输入参数: countryCode 国家码

输出参数: 是否为热点区域

相关参数:

method addFlyZoneListener

fun addFlyZoneListener(callback: CommonCallbacks.CompletionCallbackWithParam<List<FlyZoneInformation>>)

描述: 添加飞行区域监听器

输入参数: callback 结果回调

输出参数:

相关参数: FlyZoneInformation

method removeFlyZoneListener

fun removeFlyZoneListener(callback: CommonCallbacks.CompletionCallbackWithParam<List<FlyZoneInformation>>)

描述: 移除飞行区域监听器

输入参数: callback 结果回调

输出参数:

相关参数:

method clearFlyZoneListener

fun clearFlyZoneListener()

描述: 清除飞行区域监听器

输入参数:

输出参数:

相关参数: