我在GIS应用程序中创建了一个多边形。我可以将“多边形”导出为KML或其他任何所需格式。
我需要根据我拥有的多边形为无人机定义任务的航点。
有没有一种简单的方法可以直接将Polygon任务航路点提供给无MapView的无人机?
我必须使用DJI Windows SDK,但是我看到this sample与用户进行交互以在MapView中定义任务的Waypoint。我的情况是不同的。我已经有了Waypoint,我只需要导入它们即可。
更新1: 请注意,适用于iOS和Android的DJI SDK已非常成熟,功能丰富且经过验证。但是,与DJU Windows SDK不同。 SDK目标平台是模糊的,但是阅读它的示例,我认为它仅在UWP平台上运行。这就是为什么该问题明确提及 DJI Windows SDK 的原因。我知道Android或iOS的SDK提供了更高的质量和功能。
答案 0 :(得分:1)
您可以简单地使用纬度和经度将它们添加到列表中。您还需要每个点的高度。为您需要的所有点创建一个for循环,或执行一次此代码,使用config对话框,然后上传并开始任务。
// Create a waypoint instance
Waypoint mWaypoint1 = new Waypoint(Latitude, Longitude, altitude);
//check if the mission's builder is null
if (waypointMissionBuilder != null) {
if (waypointList.size() > 2)
configWayPointMission();
waypointList.add(mWaypoint1);
waypointMissionBuilder.waypointList(waypointList).waypointCount(waypointList.size());
}
else {
waypointMissionBuilder = new WaypointMission.Builder();
waypointList.add(mWaypoint1);
waypointMissionBuilder.waypointList(waypointList).waypointCount(waypointList.size());
}
答案 1 :(得分:0)
因此,我没有使用Windows SDK,但我想它与Mobile SDK类似。对于移动设备,您只需将航路点放在一个数组/数组列表中,然后立即将它们全部加载到任务中。
我不确定您是否需要将KML转换为航点,或者是否已经有航点。在前一种情况下,您需要解析KML。假设您已解析航路点,则需要使用WaypointMissionManager和WaypointMissionHandler加载任务,然后启动任务。
您可以使用加载/上传任务功能。装载任务的参数是WaypointMission,您可以在其中设置航点和其他相关信息的数量。
例如在Android中,我执行以下操作:
ArrayList<Waypoint> waypoints = new ArrayList<>();
for(int i = 0; i < wplist.size(); i++) {
double lat = wplist.get(i).latitude;
double lon = wplist.get(i).longitude;
//each dji waypoint corresponds to the predetermined waypoints
Waypoint djiWaypoint = new Waypoint(lat, lon, altitude);
//Point Gimbal down for each waypoint
djiWaypoint.gimbalPitch = gimbalPitchDown;
//add waypoint to waypoints array
waypoints.add(djiWaypoint);
}
//initiate builder and add waypoints to it- not yet built
waypointMissionBuilder = new WaypointMission.Builder();
waypointMissionBuilder.waypointList(waypoints).waypointCount(waypoints.size());
totalNumberOfWaypointsInMission = waypointMissionBuilder.getWaypointCount();
//Prepare mission by updating configure and instantiate waypointMissionBuilder
configWayPointMission();
//upload Mission
uploadWaypointMission();