特级黄色性爱视频久久_国产一级a爱做片免费播放_欧美黄色一级级视频_一级黄色无码高清视频_亚洲A级黄色视频免费看_三级片黄色91乱伦_日韩一级免费毛片在线观看_一级黄片无码系列大全在线播放_黄色视频一级在线

這里寫上圖片的說明文字(前臺(tái)顯示)

18719811719
  • 內(nèi)頁(yè)輪換圖
  • 內(nèi)頁(yè)輪換圖
  • 內(nèi)頁(yè)輪換圖

管道研究

您當(dāng)前的位置:首頁(yè) > 管道巡護(hù)管理研究

基于BaiduMap的無人機(jī)管道巡檢地面站的程序軟件設(shè)計(jì)

來源:《管道保護(hù)》雜志 作者:鞏玉良 時(shí)間:2020-7-22 閱讀:

鞏玉良

西南管道貴陽(yáng)輸油氣分公司

 

 

摘  要:介紹了一種基于BaiduMap的無人機(jī)地面站程序軟件的設(shè)計(jì)方法,軟件具有快速啟動(dòng)、操作簡(jiǎn)單和使用靈活等特點(diǎn),對(duì)無人機(jī)管道巡檢地面站的設(shè)計(jì)具有參考價(jià)值。

關(guān)鍵詞:管道巡檢;無人機(jī);地面站; BaiduMap; JavaScript API; Swing ;航跡規(guī)劃

 

 

油氣長(zhǎng)輸管道穿越沼澤、沙漠、山區(qū)、森林、城鄉(xiāng)環(huán)境和人口居住區(qū)等復(fù)雜區(qū)域,傳統(tǒng)的人工巡檢常常因無法抵達(dá)而不能滿足工作要求。采用無人機(jī)巡檢則可以解決這一問題。地面站是無人機(jī)系統(tǒng)指揮控制、任務(wù)調(diào)度、信息傳輸?shù)闹袠校WC無人機(jī)準(zhǔn)確安全飛行并執(zhí)行任務(wù),完成路線規(guī)劃、位置顯示、飛行軌跡顯示并對(duì)相關(guān)數(shù)據(jù)實(shí)時(shí)記錄與處理等。

1 簡(jiǎn)介

BaiduMap(百度地圖)是當(dāng)今較為流行的地圖應(yīng)用,能夠呈現(xiàn)絕大多數(shù)地區(qū)的二維和衛(wèi)星實(shí)景,還能夠加載不同種類的二維圖形功能控件,如無人機(jī)二維模型。

Swing是一個(gè)用于開發(fā)Java應(yīng)用程序用戶界面的開發(fā)工具包。與傳統(tǒng)圖像界面框架相比,它具有開發(fā)高效性、功能穩(wěn)定性、平臺(tái)兼容性等顯著優(yōu)勢(shì)。在無人機(jī)執(zhí)行任務(wù)的過程中,需要實(shí)時(shí)監(jiān)測(cè)和控制飛機(jī)的位置、三姿、傳感器、機(jī)載狀態(tài)等信息,利用Swing調(diào)用BaiduMap API可以輕松地實(shí)現(xiàn)這些功能。通過BaiduMap COM接口,將百度地圖接入到Swing應(yīng)用平臺(tái)上,結(jié)合JavaScript實(shí)現(xiàn)對(duì)百度地圖的交互控制,利用在Swing框架嵌入瀏覽器的方式融入html頁(yè)面資源,在該頁(yè)面使用JS 調(diào)用BaiduMap API,從而實(shí)現(xiàn)Java與百度地圖的數(shù)據(jù)交互。

2 系統(tǒng)設(shè)計(jì)

2.1 JavaScript調(diào)用BaiduMap API

首先 ,在BaiduMap API首頁(yè)找到相關(guān)鏈接,填寫有關(guān)信息得到一個(gè)密鑰,以便調(diào)用BaiduMap API。

然后,引入BaiduMap API,關(guān)鍵代碼如下:

<script type="text/javascript" src="http://api.map.baidu.com/api?ak=yourkey&v=2.0&services=false"></script>

再創(chuàng)建一個(gè)地圖(JS代碼):

var map = new BMap.Map("container"); // 創(chuàng)建地圖實(shí)例

var point = new BMap.Point(120.391655,36.067588); // 創(chuàng)建點(diǎn)坐標(biāo)

map.centerAndZoom(point, 15);

這里需要說明三點(diǎn):

(1) map.centerAndZoom方法創(chuàng)建地圖,第一個(gè)參數(shù)可以根據(jù)之前創(chuàng)建好的一個(gè)點(diǎn)為中心創(chuàng)建地圖, 也可以根據(jù)城市區(qū)域的中文名稱創(chuàng)建地圖(如果拼寫正確,還可以根據(jù)城市的英文名稱創(chuàng)建)。

(2) map.centerAndZoom第二個(gè)參數(shù)是地圖縮放級(jí)別,最大為19,最小為0。

(3) BMap.Map方法創(chuàng)建地圖時(shí)需要一個(gè)容器(地圖會(huì)根據(jù)容器的大小自動(dòng)進(jìn)行調(diào)整),填寫相關(guān)容器的ID。

可 以 通 過 m a p . s e t Z o o m ( ) ; 主 動(dòng) 控 制 地 圖大小級(jí)別。也可以通過設(shè)置 m a p . e n a b l e S c r o l lWheelZoom(true);利用鼠標(biāo)滾輪控制大小。

此外百度地圖提供了非常豐富的功能空間供使用:

(1) Control:控件的抽象基類,所有控件均繼承此類的方法、屬性。通過此類您可實(shí)現(xiàn)自定義控件。

(2) NavigationControl:地圖平移縮放控件,PC端默認(rèn)位于地圖左上方,它包含控制地圖的平移和縮放的功能。移動(dòng)端提供縮放控件,默認(rèn)位于地圖右下方。

(3) OverviewMapControl:縮略地圖控件,默認(rèn)位于地圖右下方,是一個(gè)可折疊的縮略地圖。

(4) ScaleControl:比例尺控件,默認(rèn)位于地圖左下方,顯示地圖的比例關(guān)系。

(5) MapTypeControl:地圖類型控件,默認(rèn)位于地圖右上方(地圖,衛(wèi)星,三維)。

(6) CopyrightControl:版權(quán)控件,默認(rèn)位于地圖左下方。

(7) GeolocationControl:定位控件,針對(duì)移動(dòng)端開發(fā),默認(rèn)位于地圖左下方。

JS加載百度地圖效果如圖 1所示。

map.addControl(new BMap.NavigationControl();//縮放平移控件

map.addControl(new BMap.ScaleControl()); //比例尺

m a p . a d d C o n t r o l ( n e w B M a p . O v e r v i e wMapControl(); //縮略圖

map.addControl(new BMap.MapTypeControl());//地圖類型

map.setCurrentCity("石家莊"); //地圖所在城市

這 里 需 要 注 意 的 是 , 當(dāng) 設(shè) 置 城 市 信 息 時(shí) ,MapTypeControl的切換功能才可用。

2.2 地圖事件

B a i d u M a p A P I 中 的 大 部 分 對(duì) 象 都 含 有addEventListener方法,我們可以通過該方法來監(jiān)聽對(duì)象事件。例如:

map.addEventListener("click", function(){;

alert("click event");

});

當(dāng)不再希望監(jiān)聽事件時(shí),可以將其移除。每個(gè)API對(duì)象提供了removeEventListener用來移除事件監(jiān)聽函數(shù),詳情如下:

map.removeEventListener("click", functionA);

map.addEventListener("click", functionA);

地圖遮蓋物:

Overlay:覆蓋物的抽象基類,所有的覆蓋物均繼承此類的方法。

Point:標(biāo)注表示地圖上的點(diǎn),可自定義標(biāo)注的圖標(biāo)。

Label:表示地圖上的文本標(biāo)注,您可以自定義標(biāo)注的文本內(nèi)容。

Polyline:表示地圖上的折線。

Polygon:表示地圖上的多邊形。多邊形類似于閉合的折線,另外您也可以為其添加填充顏色。

Circle:表示地圖上的圓。

InfoWindow:信息窗口也是一種特殊的覆蓋物,它可以展示更為豐富的文字和多媒體信息。注意:同一時(shí)刻只能有一個(gè)信息窗口在地圖上打開。

標(biāo)注示例如下:

var point = new BMap.Point(120.389472,36.072362); //默認(rèn)可以通過Icon類來指定自定義圖標(biāo)

var point=new BMap.Point(point);

var label=new BMap.Label("青島市政府",{offset:new BMap.Size(20, -10)}); //標(biāo)注標(biāo)簽

point.setLabel(label)//設(shè)置標(biāo)注說明

point.enableDragging(); //標(biāo)注可以拖動(dòng)的

point.addEventListener("dragend", function(e){

alert(e.point.lng + ", " + e.point.lat); //打印拖動(dòng)結(jié)束坐標(biāo)

});

map.addOverlay(point);

var point = new BMap.Point(120.387244,36.064835);

var myIcon = new BMap.Icon("http://api.map.baidu.com/img/points.png", new BMap.Size(23, 25));

var point2 = new BMap.Point(point, {icon:myIcon});

map.addOverlay(point2);

var infoWindow = new BMap.InfoWindow("<pstyle='font-size:14px;'>詳細(xì)信息</p>"); //彈出窗口

point2.addEventListener("click", function(){

this.openInfoWindow(infoWindow);

});

加載百度地圖標(biāo)注效果如圖 2所示。

2.3 Swing中嵌入瀏覽器

使用DJnative-swt和swt包開發(fā)的調(diào)用本地瀏覽器和webkit瀏覽器方式。

在lib中引入swt和DJnative和mozilla接口包,其中XPCOMDownloadManager類功能為調(diào)用mozilla內(nèi)核瀏覽器,核心代碼如下: NSSystemPropertySWT.WEBBROWSER_XULRUNNER_HOME.set(System.getProperty("user.dir") + "/xulrunner");

final JWebBrowser webBrowser = new

JWebBrowser(JWebBrowser.useXULRunnerRuntime());

XPCOMToggleEditionModer類的功能是調(diào)用mozilla內(nèi)核瀏覽器并啟用編輯模式,核心代碼如下:

n s I D O M N S H T M L D o c u m e n t n s D o c u m e n t= (nsIDOMNSHTMLDocument)document.quer y I n t e r f a c e ( n s I D O M N S H T M L D o c u m e n t . N S _IDOMNSHTMLDOCUMENT_IID); nsDocument.setDesignMode(e.getStateChange()==ItemEvent.SelectED ? "on" : "off");

SimpleWebBrowserExample類的功能為調(diào)用本機(jī)默認(rèn)瀏覽器,核心代碼如下:

JPanel webBrowserPanel = new JPanel(newBorderLayout());

webBrowserPanel.setBorder(BorderFactory.createTitledBorder("Native Web Browser component"));

f i n a l J We b B r o w s e r w e b B r o w s e r = n e wJWebBrowser();

webBrowserPanel.add(webBrowser, BorderLayout.CENTER);

2.4 JavaScript與Swing的交互

由于BaiduMap API主要兼容于JavaScript,而地面站應(yīng)用程序的業(yè)務(wù)都是由Java對(duì)話框程序來實(shí)現(xiàn)的,所以我們需要在Java和JavaScript這兩種開發(fā)語(yǔ)言上實(shí)現(xiàn)數(shù)據(jù)交互。在html頁(yè)面中使用JS來調(diào)用Java,而在Java中融入JS的函數(shù)。

Java代碼調(diào)用JS函數(shù)并傳遞參數(shù)只需要在調(diào)用JS函數(shù)時(shí)加入?yún)?shù)即可,當(dāng)需要加入多個(gè)參數(shù)時(shí)追加拼接即可,其中注意str類型在傳遞的時(shí)候參數(shù)要用單引號(hào)括起來,具體如下:

mWebView.loadUrl("javascript:test('" + a+ "')"); //a是JS的函數(shù)test()的參數(shù)

JS調(diào)用Java函數(shù)并傳參時(shí)Java函數(shù)正常書寫,然后在html頁(yè)面中,利用如下代碼,即可實(shí)現(xiàn)調(diào)用:

<div id='b'><a onclick="window.wst.click">b.c</a></div>

在JS與Java的相互調(diào)用完成后,就可以響應(yīng)各自的業(yè)務(wù)方法,從而實(shí)現(xiàn)無人機(jī)航跡的相關(guān)功能,如航跡規(guī)劃,獲取飛機(jī)位置以及目標(biāo)位置經(jīng)緯度信息等,效果圖如圖 3所示。

3 航跡規(guī)劃

根據(jù)石油管道分布區(qū)域的地形特點(diǎn),為無人機(jī)約束若干既定航點(diǎn),然后讓無人機(jī)按照這些航點(diǎn)構(gòu)成的航線路徑以及預(yù)設(shè)的高度和速度來飛行是用戶需要在地圖上完成的重要功能,那么對(duì)于每一個(gè)航點(diǎn)需要?jiǎng)?chuàng)建一個(gè)獨(dú)立的Java類來描述航點(diǎn)的數(shù)據(jù)類型,即:

public class Point{

private double latitude; //緯度

private double longitude; //經(jīng)度

private double speed; //速度

private double height; //高度

在Swing加載的瀏覽器加入百度地圖后,在地圖界面上每點(diǎn)擊一個(gè)點(diǎn),就調(diào)用BaiduMap API獲取該點(diǎn)的經(jīng)緯度高度等坐標(biāo)信息,創(chuàng)建一個(gè)Point對(duì)象將這些位置信息存入,并將該點(diǎn)置入一個(gè)ArraList容器中保存下來,最終可通過Swing對(duì)話框?qū)@些點(diǎn)處理成飛行路線并可以對(duì)它們進(jìn)行編輯。

4 管道信息與航跡顯示

管道位置信息一般以文件形式存儲(chǔ),根據(jù)文件的特點(diǎn),使用Java程序編寫識(shí)別文件中石油管道位置信息,把獲取的位置信息置入一個(gè)ArraList容器中保存下來,最終把管道位置顯示在百度地圖中,可在地圖中清晰的看到管道的走向與位置。

地面站軟件通過與地面數(shù)據(jù)終端連接,實(shí)時(shí)接收無人機(jī)的飛行數(shù)據(jù),在無人機(jī)執(zhí)行巡檢任務(wù)時(shí),可在地圖中直觀觀察到飛機(jī)所在位置,并結(jié)合管道信息可快速定位無人機(jī)執(zhí)行的任務(wù)。

5 結(jié)語(yǔ)

采用Swing + JavaScript實(shí)現(xiàn)無人機(jī)地面站程序軟件設(shè)計(jì),使用戶可以通過Swing對(duì)話框進(jìn)行航跡規(guī)劃和航點(diǎn)修改,并完成飛行信息數(shù)據(jù)的保存和實(shí)時(shí)數(shù)據(jù)的顯示,從而用最直觀的方式滿足無人機(jī)巡檢任務(wù)中對(duì)無人機(jī)的控制和監(jiān)測(cè)。該地面站軟件在管道巡檢系統(tǒng)中具有快速啟動(dòng)、操作簡(jiǎn)單和使用靈活等特點(diǎn),對(duì)無人機(jī)管道巡檢地面站的設(shè)計(jì)具有重要的參考價(jià)值。

 

    作者簡(jiǎn)介:鞏玉良,男, 1976年生,畢業(yè)于中國(guó)石油大學(xué)(華東)油氣儲(chǔ)運(yùn)工程專業(yè),助理工程師,主要從事長(zhǎng)輸油氣管道保護(hù)及管理工作。聯(lián)系方式: 16685001237,2079885445@qq.com

上篇:

下篇:

關(guān)于我們
地址:甘肅省蘭州市廣場(chǎng)南路77號(hào)3026室 郵編:730030 郵箱:guandaobaohu@163.com
Copyrights © 2018- All Rights Reserved. 版權(quán)所有 管道保護(hù)網(wǎng) 隴ICP備18002104號(hào) 設(shè)計(jì)制作 宏點(diǎn)網(wǎng)絡(luò)
甘公網(wǎng)安備 62010202003034號(hào) 甘公網(wǎng)安備 62010202003034號(hào)
  • 95_95px;

    QQ群二維碼

  • 95_95px;

    微信二維碼

咨詢熱線:18719811719