79 lines
2.1 KiB
Go
79 lines
2.1 KiB
Go
|
package template
|
|||
|
|
|||
|
import (
|
|||
|
"encoding/xml"
|
|||
|
"fmt"
|
|||
|
"github.com/gogf/gf/v2/os/gtime"
|
|||
|
"github.com/tiger1103/gfast/v3/third/plane/wayline/struct"
|
|||
|
"os"
|
|||
|
)
|
|||
|
|
|||
|
func CreateWayPointTempalteWpml() {
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
func CreateWayPointTempalteKml() {
|
|||
|
kml := _struct.KML{
|
|||
|
//XmlnsStream: "http://www.dji.com/wpmz/1.0.3",
|
|||
|
Document: _struct.Doc{
|
|||
|
Author: "重庆远界大数据研究院有限公司",
|
|||
|
CreateTime: gtime.Now().TimestampMilli(),
|
|||
|
UpdateTime: gtime.Now().TimestampMilli(),
|
|||
|
},
|
|||
|
}
|
|||
|
msconfig := _struct.MissionConfig{
|
|||
|
FlyToWaylineMode: _struct.Safely,
|
|||
|
FinishAction: _struct.GoHome,
|
|||
|
ExitOnRCLost: _struct.ExecuteLostAction,
|
|||
|
ExecuteRCLostAction: _struct.Hover,
|
|||
|
TakeOffSecurityHeight: 5,
|
|||
|
GlobalTransitionalSpeed: 5,
|
|||
|
GlobalRTHHeight: 5,
|
|||
|
}
|
|||
|
//设置公共配置
|
|||
|
kml.Document.MissionConfig = msconfig
|
|||
|
tp := _struct.WayPointTemplate{}
|
|||
|
|
|||
|
tp.TemplateType = _struct.Waypoint //航点飞行
|
|||
|
tp.TemplateId = 0 //模板ID * 注:在一个kmz文件内该ID唯一。建议从0开始单调连续递增。在template.kml和waylines.wpml文件中,将使用该id将模板与所生成的可执行航线进行关联。
|
|||
|
tp.AutoFlightSpeed = 5 //全局航线飞行速度
|
|||
|
|
|||
|
tp.WaylineCoordinateSysParam.CoordinateMode = "WGS84"
|
|||
|
tp.WaylineCoordinateSysParam.HeightMode = "EGM96"
|
|||
|
tp.WaylineCoordinateSysParam.PositioningType = "GPS"
|
|||
|
tp.WaylineCoordinateSysParam.SurfaceFollowModeEnable = 0
|
|||
|
|
|||
|
tp.GlobalHeight = 100
|
|||
|
|
|||
|
kml.Document.Folder = tp
|
|||
|
createXML(kml, "template.xml")
|
|||
|
}
|
|||
|
|
|||
|
func createXML(v interface{}, file string) {
|
|||
|
// 生成 XML
|
|||
|
xmlBytes, err := xml.MarshalIndent(v, "", " ")
|
|||
|
if err != nil {
|
|||
|
fmt.Println("生成XML失败:", err)
|
|||
|
return
|
|||
|
}
|
|||
|
// 将 XML 写入文件
|
|||
|
xmlFile, err := os.Create(file)
|
|||
|
if err != nil {
|
|||
|
fmt.Println("创建文件失败:", err)
|
|||
|
return
|
|||
|
}
|
|||
|
defer xmlFile.Close()
|
|||
|
xmlWithVersion := []byte(xml.Header + string(xmlBytes))
|
|||
|
_, err = xmlFile.Write(xmlWithVersion)
|
|||
|
if err != nil {
|
|||
|
fmt.Println("写入文件失败:", err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
fmt.Println("生成的KML文件:output.kml")
|
|||
|
}
|
|||
|
|
|||
|
//func CreateWayPointTempalte(points []globe.Point) {
|
|||
|
//
|
|||
|
//}
|