有人会用无人机航线规划模拟和应急处理的软件吗?怎么规划航线和应急处理?原理是什么?

当前位置: >>
大疆航线规划应用指南
对于专业的无人机航拍工作而言, 航线规划是一项十分重要的前 置工作,本攻略主要是介绍如何通过手机 APP,将精灵系列的无人机 运用于专业的无人机航拍测绘工作中。 本攻略中所运用到的软件是由 上海珞琪软件公司开发的一款航线规划软件 RockyCapture,它可以非 常方便的自动完成航线规划工作, 目前这款 APP 已提供免费下载, 有 兴趣的机友可以去下载试用。工作流程使用 RockyCapture 来完成航线规划工作是十分非常简便的,具体 工作流程如下所示:航 线 规 划飞 行 控 制数 据 导 出1、飞行规划RockyCapture 可以按使用者的需要,在使用者规定的指定大小范 围内,按照飞行的高度、飞行的速度、拍摄相片的重叠率,自动规划 好飞行计划。 如图 2 所示,黄色区域即为拍摄的目标区域,红色的折线则为规 划好的无人机航线, 右上方的各项参数, 分别为飞行高度、 飞行速度、 拍摄的重叠度、地图与实景切换四项。右下方则显示制定好的飞行计 划的情况,包括飞行区域大小、拍摄相片的张数、飞行的预计时间。图 2 飞行规划 我们可以通过点击下方的切换按钮, 切换成不同角度来拍摄目标 区域,分别是如图 3 所示的情况,分别是正摄拍摄、镜头向前斜 45 度拍摄、镜头向后斜 45 度拍摄、镜头向左斜 45 度拍摄、镜头向右斜 45 度拍摄。通过切换角度,我们可以获得目标区域更加全面的影像 信息。图 3 多角度航线切换2、飞行控制 RockyCapture 可以十分简单完成整个飞行计划的全过程,包括一 键式的起飞、自动开始规划好飞行计划、自动返航降落。在无人机飞 行过程中,实时跟踪无人机的飞行路径与飞行状态,随时可以切换成 手动控制,处理遇到突发情况。图 4 飞行实时情况 如图所示,右上角会显示出无人机的状态,包括无人机通讯是否 正常、相机是否正常工作、无人机电量情况、飞行高度,下方还会展 示相机镜头的实时图像。在左下角会显示出相片拍摄数量。无人机的 位置也会在地图上实时标出,代表图标为。3、数据导出 RockyCapture 可以根据需要,导出飞行过程中的 POS 数据, 给予后续影像处理所需要的重要数据材料。POS 数据可以为后续 的测量工作带来巨大帮助。 如图所示,选择飞行的攻城,点击上方最右端的导出按钮, POS 数据便会自动导出到手机存储中,方便用户随时调取。 图 5 POS 数据导出图 6 POS 数据格式 图 7 POS 数据显示 图 8 影像处理结果(点云与正射影像) 上述便是使用 RockyCapture 完成航线规划工作的全部过程, 通过 简单的手机 APP 便可以完成全部航线规划的工作, 并可以得到准确的 POS 数据,操作十分简单方便,有兴趣的朋友可以去尝试使用。
All rights reserved Powered by
www.tceic.com
copyright &copyright 。文档资料库内容来自网络,如有侵犯请联系客服。&>&大疆航线规划软件
大疆航线规划软件
上传大小:42.51MB
大疆航线规划软件
综合评分:0
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有0条
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
大疆航线规划软件
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
无法举报自己的资源
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
请选择类型
资源无法下载 ( 404页面、下载失败、资源本身问题)
资源无法使用 (文件损坏、内容缺失、题文不符)
侵犯版权资源 (侵犯公司或个人版权)
虚假资源 (恶意欺诈、刷分资源)
含色情、危害国家安全内容
含广告、木马病毒资源
*投诉人姓名:
*投诉人联系方式:
*版权证明:
*详细原因:
大疆航线规划软件豆丁微信公众号
君,已阅读到文档的结尾了呢~~
多旋翼无人机航线优化及 航测精度分析
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
多旋翼无人机航线优化及 航测精度分析
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口无人机航线规划思路剖析,基于凸多边形地块往复式运动 - 简书
无人机航线规划思路剖析,基于凸多边形地块往复式运动
嗨!很高兴看到你点进来阅读这篇文章,请别介意,标题有点长有点啰嗦(完全是为了seo考虑),但也算是概括了这篇文章的内容。如果你是要开发如下图所示的场景,但又苦于没什么好的思路,那么这篇文章一定会帮助到你!
往复式运动航线
基于不规则凸多边形地块的往复式航线规划
哦,对了,本文的实现是基于web平台的地图,使用javascript。如果你也是在web平台上开发,而且任务时间非常紧急,没有时间阅读完全文的话。。。我已经将本文的思路封装成一个库了,你可以猛戳下面的链接,开箱即用:
兼容各大地图平台api(其实不同平台api差异的影响很低)哦,不信的话戳demo:
觉得好用的话记得给个star~原创不易,谢谢支持
其实也是套公式
其实这种问题,实际上是数学几何应用题,既然是数学题啦,那按照考试的套路第一步肯定是套公式啊,这种场景,核心的公式不多,就两条:
一次函数两点表达式
绕(tx,ty)点旋转n度之后缩放SxSy倍的变换矩阵
第一条没什么可以说的,初二数学就开始教一次函数的知识,这一条是用来计算航线与地块边界的交点的。
第二条就是很经典的复合变换矩阵了,分别是位移矩阵叉乘旋转矩阵叉乘位移缩放矩阵,我们设其叉乘结果为A,那么我们就可以列出下面的等式:
计算过程就是。。。横乘竖横乘竖横乘竖横乘竖横乘竖横乘竖横乘竖横乘竖。。。。最后化为用于程序的代数式就是:
通过这条公式,就可以计算出航线旋转后的坐标点。
然后我们把它们分别封装一下,弄成一个函数调用先:
function transform(x, y, tx, ty, deg, sx, sy) {
var deg = deg * Math.PI / 180;
if (!sy) sy = 1;
if (!sx) sx = 1;
sx * ((x - tx) * Math.cos(deg) - (y - ty) * Math.sin(deg)) + tx,
sy * ((x - tx) * Math.sin(deg) + (y - ty) * Math.cos(deg)) + ty
function calcPointInLineWithY(p1,p2,y){
var s = p1[1] - p2[1];
x = (y - p1[1]) * (p1[0] - p2[0]) / s + p1[0]
return false
/**判断x是否在p1,p2在x轴的投影里,不是的话返回false*/
if (x & p1[0] && x & p2[0]) {
return false
if (x & p1[0] && x & p2[0]) {
return false
return [x, y]
看到这里,恭喜你,你已经完成了50%的工作量!如果是在考试,你把这两条公式列出来,不写答案也有一半的分数(
先从最简单的场景开始
一个矩形地块,航线水平于x轴:
这是一个大概是200*200大小的矩形,左上角的顶点经纬度为nw(西北),右上角的顶点经纬度为ne(东北),右下角的顶点经纬度为se(东南),左下角的顶点经纬度为sw(西南),其中设置无人机飞行的间隔为10。你先不考虑折线的连接顺序,就单单考虑一下,每一根横线如何生成。观察一下你会发现以下规律:
两条横线的间隔是20
每一条横线都可以表示为 y=N,N为常数,表示某个纬度值
每一条横线段都是y=N与矩形相交产生,也就是每一条横线段都是该矩形地块与维度相交的结果
那么,现在矩形的四个顶点的经纬度是已知的,无人机飞行的间隔也是已知的,这个矩形需要与多少条纬度线相交是未知的,每一条横线的N是未知的,每一条横线段左右两个点的纬度是未知的。根据已知求未知,你的目标已经很明确了,一道很简单的几何题:
该矩形需要与多少条纬度线相交:
/**@method 获取两个经纬度点的距离
* @param {Object} p1,p2 - 两个经纬度点
* @return {Number} 单位 米
function distance(p1,p2){
/**leaflet提供的方法*/
return L.latLng(p1.lat,p1.lng).distanceTo(L.latLng(p2.lat,p2.lng))
/** nw到sw的距离*/
var dist = distance(nw,sw);
/** 得出答案*/
var lines = parseInt(dist / 20)
求每一条横线的N:
var stepLat=(nw.lat-sw.lat)/
for(var i=0;i&i++){
N.push(nw.lat - i * stepLat)
因为矩形的两条边是垂直的,所以,横线段左右两个点的经度分别为nw.lng,ne.lng。这样我们就可以绘制出来了:
for(var i=0;i&N.i++){
L.polyline([
lng:nw.lng
lng:ne.lng
}]).addTo(map)
场景开始变形!
锵锵,我们把矩形上面的边往东挪50米,得到一个平行四边形:
聪明的你一定发现了,平行四边形在Y轴上的投影根本没有发生变化嘛,即使变了之后,穿过地块的纬度线数目还是不变嘛,只不过,这次因为两条边不是垂直的,所以,我们需要计算斜边与纬度线的交点。等等,你这时候想起了,最开始50%工作量里面所封装的那个calcPointInLineWithY函数!
你已经知道斜边两个点的坐标,然后你又知道y=N,那你通过一次函数的两点表达式,完全就可以知道x,也就是经度是多少啦:
/**这里注意 纬度lat对应y,经度lng对应x*/
for(var i=0;i&N.i++){
var westPoint=calcPointInLineWithY(
[nw.lng,nw.lat],
[sw.lng,sw.lat],
var eastPoint=calcPointInLineWithY(
[ne.lng,ne.lat],
[se.lng,se.lat],
if(eastPoint&&westPoint){
L.polyline([westPoint,eastPoint]).addTo(map)
那你可以再变一变,让y轴上的投影也发生变化,就像这样:
好了,这下你观察到,每条边都跟纬度线相交了,也就是说,这次你要遍历一下这个平行四边形四个顶点。等等,你似乎忘记了一个问题,这个四边形在y轴上的投影发生了变化,相交纬度线数目也跟着发生变化了。这时候你想到,要不给这个多边形做个外接矩形?就像这样:
这样是不是又回归了最开始的场景?只是把calcPointInLineWithY函数加上去之后,你可以得到任意凸多边形与纬度线相交的模型。
首先是创建多边形外接的矩形,将多边形顶点全部遍历一遍,取到最大和最小的经纬度值。经度最大为东,经度最小为西。纬度最大为北,纬度最小为南。将这几个组合一下,获得西北点,东北点,东南点和西南点,就可以弄出一个矩形出来
/**@method 创建多边形外接矩形
* @param {Array} latlngs - 格式为[{lat,lng}]的经纬度数组,多边形的顶点集合
* @return {Array} .rect - 返回外接矩形四顶点
* @return {Object} .center - 返回外接矩形的中心的
function createPolygonBounds(latlngs){
var lats=[];
var lngs=[];
for(var i=0;i&latlngs.i++){
lats.push(latlngs[i].lat);
lngs.push(latlngs[i].lng);
var maxLat=Math.max.apply(Math,lats);
var maxLng=Math.max.apply(Math,lngs);
var minLat=Math.min.apply(Math,lats);
var minLng=Math.min.apply(Math,lngs);
lat:(maxLat+minLat)/2,
lng:(maxLng+minLng)/2
latlngs:[{
lat:maxLat,
lng:minLng//西北
lat:maxLat,
lng:maxLng//东北
lat:minLat,
lng:maxLng//东南
lat:minLat,
lng:minLng//西南
然后是计算这个外接矩形穿过了多少条纬度线,跟之前那个场景是一样的。rect是上面那个函数创建的数组,可以看到西北点的索引是0,西南点的索引是3,所以计算西北到西南的点,也就是这个外接矩形的高度。这个方法返回有len条纬度线穿过,而且穿过的纬度相差lat。
/**@method 计算有多少条纬度线穿过
* @param {Array} rect - 外接矩形
* @param {Number} space - 间隔
function calcLatsInPolygon(rect,space){
var lines=parseInt(distance(rect[0],rect[3])/space/2);
var lat=(rect[0].lat-rect[3].lat)/
len:lines,
最后就是结合上面几个场景,改写一下最终的生成函数,这里你是直接将生成的横线画了出来,如果需要做折线连接顺序处理,还需要声明一个数组去存储生成的点,比如当纬度线的索引是奇数时,横线从西往东画,也就是先放西边的点再放东边的点;如果纬度线索引是偶数时,横线从东往西画,也就是反过来。这里就留给你自己处理了
/**任意多边形顶点集*/
var polygon=[{lat:23.93,lng:113.32},/**...其他点*/];
/**飞行间隔*/
var space=10;
/**外接矩形*/
var outRect=createPolygonBounds(polygon);
/**纬度线*/
var latLines=calcLatsInPolygon(outRect.latlngs,space);
var line=[];
/**遍历每一条纬度线*/
for(var i=0;i&latLines.i++){
/**遍历每一个多边形顶点*/
for(var j=0;j&polygon.j++){
var point=calcPointInLineWithY([
polygon[i].lng,
polygon[i].lat,
polygon[si(i+1,polygon.length)].lng
polygon[si(i+1,polygon.length)].lat
],outRect.latlngs[0].lat - i*latLines.lat)
if(point){
line.push(point)
/**去掉只有一个交点的纬度线*/
if(line.length&2){
/**去掉两个交点重合的纬度线*/
if(line[0][0] === line[1][0]){
/**leaflet 绘制*/
L.polyline([
{lat:line[0][1],lng:line[0][0]},
{lat:line[1][1],lng:line[1][0]}
]).addTo(map)
/**防止索引溢出*/
function si(i,l){
if (i & l - 1) {
return i -
if (i & 0) {
return l +
到这里,基本上已经完成了90%,剩下10%那部分最简单了。简单么?你歪着头问,到现在为止只是多边形与纬度线相交啊,现实中无人机又不可能都是沿着纬度在地图上横着飞!它可以在地图上沿任意方向飞行的,可上面的做法,只能让无人机横着走啊!
别急,你这时候要淡定,你要想想开头不是还留了一个transform函数么?
这个transform的作用是让坐标(x,y)绕着(tx,ty)旋转deg度后在缩放SySx倍得到一个的新坐标(_x,_y)。没错,这次我们要拿这些坐标进行旋转运动。
而且牛顿告诉过你:
运动都是相对的
先放一张gif图,看看如何绘制一个斜45度角的航线:
先让多边形绕着中心点旋转想要的角度,将得到的新多边形再与纬度线做相交操作,获取到那些交点之后,再将那些交点旋转回来。换句话说,变换前它是一个任意多边形,变换后,它还是一个任意多边形,都是满足上面已经预设好的场景的。这样的好处显而易见,你不需要修改上面的任何一个函数,也不需要去多写一条两个一次函数求交点的公式。把问题化到最简单的场景去,只需要添加变换的代码:
/**@method 创建一个旋转后的多边形
* @param {Array}
latlngs - 经纬度顶点集
* @param {Object} bounds - 由上文
createPolygonBounds 函数创建的对象
* @param {Number} rotate - 旋转角度
* @return {Array} - 变换后的经纬度数组
function createRotatePolygon(latlngs, bounds, rotate){
var res=[];
for(var i=0;i&latlngs.i++){
var tr=transform(
latlngs[i].lng,
latlngs[i].lat,
bounds.center.lng,
bounds.center.lat,
res.push({lat:tr[1],lng:tr[0]});
return res
这里你一定要牢记,lng是经度,对应x;lat是纬度,对应y(被leaflet框架坑哭的我QuQ。。。
然后,将原来的代码加上去
var line=[];
var polyline=[];
/**旋转45度*/
var rotate=45;
/**创建变换后的多边形*/
var rPolygon=createRotatePolygon(polygon,outRect,-rotate)
/**遍历每一条纬度线*/
for(var i=0;i&latLines.i++){
/**遍历每一个多边形顶点*/
for(var j=0;j&rPolygon.j++){
var point=calcPointInLineWithY([
rPolygon[i].lng,
rPolygon[i].lat,
rPolygon[si(i+1,rPolygon.length)].lng
rPolygon[si(i+1,rPolygon.length)].lat
],outRect.latlngs[0].lat - i*latLines.lat)
if(point){
line.push(point)
/**去掉只有一个交点的纬度线*/
if(line.length&2){
/**去掉两个交点重合的纬度线*/
if(line[0][0] === line[1][0]){
/**这里不绘制了,先塞进polyline这个数组*/
polyline.push(
{lat:line[0][1],lng:line[0][0]},
{lat:line[1][1],lng:line[1][0]}
/**然后就可以直接转回来绘制*/
L.polyline(
createRotatePolygon(polyline,outRect,rotate)
).addTo(map)
也许细心的你发现了,gif图里面转是转了,斜45度的角也是画出来了,但是旋转后的图形好像是被拉长了!旋转回来时又会被压肥回来。这个嘛。。。
这个问题其实我在写验证的时候也发现了,粗略计算多边形面积和航线扫过的面积的比值,总是发现0度的比值最接近于1,90度的比值最小,不管多边形是什么形状。
最开始我一直以为是面积算法的原因,直到写这篇文章的时候去写那个gif动画后才发现,多边形变换后变形了,转换后与纬度相交的数量变多了。而我猜想变形的原因可能是,地球并不是一个平面,它是弯的你知道吧,这些经纬度虽然是投影到了平面上了,但实际上它们是在一个球上。直接拿经纬度变换相当于先在球上做了旋转,然后在投影到地图的平面上,这样看起来就像是被拉长了。
所以,你不能直接变换经纬度,而是要将经纬度换算成地图上的像素坐标,变换完之后再转回来,这样图像就不会被拉长了。
因此先来两个像素系与经纬度坐标系转换的方法压压惊:
/**@method 设置经纬度转换成页面像素坐标的方法
* @param {Object} latlng - {lat,lng}
function latlng2px(latlng){
/**百度,map为 new BMap.Map() 对象*/
return map.pointToPixel(new BMap.Point(latlng.lng, latlng.lat))
* 高德,map为 new AMap.Map() 对象
* return map.lngLatToContainer(new AMap.LngLat(latlng.lng, latlng.lat))
* leaflet map 为 L.map对象
* return map.latLngToLayerPoint(L.latLng(latlng.lat, latlng.lng))
/**@method 设置像素坐标转换成经纬度点的方法
* @param {Array} px - [lng,lat]
function px2latlng(px){
/**百度,map为 new BMap.Map() 对象*/
return map.pixelToPoint(new BMap.Pixel(px[0], px[1]))
* 高德,map为 new AMap.Map() 对象
* return map.containerToLngLat(new AMap.Pixel(px[0], px[1]))
* leaflet map 为 L.map对象
* return map.layerPointToLatLng(L.point(px[0], px[1]))
然后将原来的createRotatePolygon函数改为
function createRotatePolygon(latlngs,bounds,rotate){
var res = [] , a ,
var c = latlng2Px(bounds.center);
for (var i = 0; i & latlngs. i++) {
a = latlng2Px(latlngs[i]);
b = transform(a.x, a.y, c.x, c.y, rotate);
res.push(px2Latlng(b));
这样就解决了拉长的问题:
看到这里,相信你已经完全掌握了这种思路,即使你是使用iOS或者android的sdk,你也应该可以很快将思路“移植”过去。
至于那个折线的顺序,这个只是在push进polyline数组的时候判断一下i的奇偶修改不同的push顺序,很简单就得到那种折线效果,我相信你是会写的,这里就不着笔墨了。
更多的源码请访问:
终于写完了此文,真是不容易。这个思路,从最开始思想混乱与Leaflet框架紧密耦合,到一步步解耦,到自己决定写一个适用于各个地图平台的库,到写这篇文章,差不多已经过去两个星期了。我发现,很多问题是你调试过程中发现不了的,等到你调试好了,决定写一篇装逼的文章,在写的过程中你就会发现各种调试中出现不了的问题,比如那个变换变形的问题。
在动手前,关于此类的教程文章少之又少,唯一可以找到比较符合场景的竟然是百度文库里面的一篇论文:
论文懂吧,长倒是不长,就是臭,里面堆砌着各种奇奇怪怪的术语。之后看了两天后才明白他的实现思路,大同小异,只不过不知道他怎么搞的,新弄出一个坐标系出来,感觉这样是增加了思路的复杂度啊。所以在他的算法的基础上我做了简化,不做坐标系偏移,取代的是变换地块坐标,这样实现起来相对简单些。
因此在这里,小小贡献一下这个思路吧,也让以后有人像我这样被坑去写这种无人机航线规划的,能够很快地实现,不用再去看那些奇奇怪怪的论文了。。。
最后最后最后,安利一下 这个库(已经无耻到这个地步了。。。),可以接入百度、高德、leaflet,然后算航线!什么?你不需要。。。那你需要计算地图上多边形地块的面积不?我也提供算面积的方法,百度地图、高德地图都没有这种算面积的方法!好评给个star!谢谢大家!(够了喂!(╯‵□′)╯︵┻━┻)
如果你有更好的实现思路,或者新的使用场景,或者有使用问题,或者有bug,欢迎在下面评论。。。或者直接提issue:
三年之后,webGl专家
引子 每天我们晚上加班回家,可能都会用到滴滴或者共享单车。打开 app 会看到如下的界面: app 界面上会显示出自己附近一个范围内可用的出租车或者共享单车。假设地图上会显示以自己为圆心,5公里为半径,这个范围内的车。如何实现呢?最直观的想法就是去数据库里面查表,计算并查询...
因为要做一个交通仿真项目,需要用到这个地图库,但是查询官方API麻烦,而且这个地图框架的API做的用起来确实太麻烦了。。就从网上各种地方查找了一些,方便用, 大多都是复制,,见谅!! L.Map API各种类中的核心部分,用来在页面中创建地图并操纵地图。 Construct...
前言 多边形偏移 (polygon offset) 算法可能我们印象不深,不过用过 autoCAD 的同学应该有印象:autoCAD 上面也还是有这个功能的。我们可以用 autoCAD 上的“正多边形”功能画一个多边形,然后用修改工具中“偏移”按钮,对多边形进行偏移,从外面...
abbreviation 简写符号;简写 absolute error 绝对误差 absolute value 绝对值 accuracy 准确度 acute angle 锐角 acute-angled triangle 锐角三角形 add 加 addition 加法 add...
我知道你很忙,但这个故事很长,我想慢慢讲...... 去年,重庆的思想聚会上,我见到了白玛央金。白玛出生于西藏昌都,早年从西藏大学英文系毕业,八年前开始扎根西藏,专注做母婴的健康保护。我很喜欢她,因为她坚强而又勇敢——曾经遭遇难产,但她从没怕过,坚定地踏上了那片未知的高原,...
已亡人 By阿星 一 我睁开眼就发现我死了。没错,我死了。 现在的我只是一缕孤魂。 就在我沉迷在我是谁我在哪里我要去哪里这些哲学问题时,我肚子叫了——我竟然饿了。这简直不能理解,但目前最重要的还是填饱肚子要紧。 我抬眼打量四周,发现在距我二百五十里外有一座庙,别问我那么远我...
命理学可谓非常精深的学问虽然周围有大量的人认为是迷信我深信这是一门科学是未来新的科学共同体要进入的“范式”有幸在这个阶段去了解与探究也是人生之大福报 对于命与运的研究可以用宇宙状态来描述命就是人们出生那一时刻对应的宇宙状态这也是目前八字命理的起点运则是宇宙状态每时每刻的变化...
现在这生活,这所有,都在消耗我。 谁给我个信仰。

我要回帖

更多关于 植保无人机怎么规划航线 的文章

 

随机推荐