久久99精品国产99久久6男男,精品香蕉伊思人在线观看,上着を完全に剥ぎ取り,亚洲欧美日韩精品,6080无码久久国产

這里寫(xiě)上圖片的說(shuō)明文字(前臺顯示)

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

管道研究

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

基于BaiduMap的無(wú)人機管道巡檢地面站的程序軟件設計

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

鞏玉良

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

 

 

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

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

 

 

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

1 簡(jiǎn)介

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

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

2 系統設計

2.1 JavaScript調用BaiduMap API

首先 ,在BaiduMap API首頁(yè)找到相關(guān)鏈接,填寫(xiě)有關(guān)信息得到一個(gè)密鑰,以便調用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)坐標

map.centerAndZoom(point, 15);

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

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

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

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

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

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

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

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

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

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

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

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

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

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());//地圖類(lèi)型

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

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

2.2 地圖事件

B a i d u M a p A P I 中 的 大 部 分 對 象 都 含 有addEventListener方法,我們可以通過(guò)該方法來(lái)監聽(tīng)對象事件。例如:

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

alert("click event");

});

當不再希望監聽(tīng)事件時(shí),可以將其移除。每個(gè)API對象提供了removeEventListener用來(lái)移除事件監聽(tīng)函數,詳情如下:

map.removeEventListener("click", functionA);

map.addEventListener("click", functionA);

地圖遮蓋物:

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

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

Label:表示地圖上的文本標注,您可以自定義標注的文本內容。

Polyline:表示地圖上的折線(xiàn)。

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

Circle:表示地圖上的圓。

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

標注示例如下:

var point = new BMap.Point(120.389472,36.072362); //默認可以通過(guò)Icon類(lèi)來(lái)指定自定義圖標

var point=new BMap.Point(point);

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

point.setLabel(label)//設置標注說(shuō)明

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

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

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

});

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;'>詳細信息</p>"); //彈出窗口

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

this.openInfoWindow(infoWindow);

});

加載百度地圖標注效果如圖 2所示。

2.3 Swing中嵌入瀏覽器

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

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

final JWebBrowser webBrowser = new

JWebBrowser(JWebBrowser.useXULRunnerRuntime());

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

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類(lèi)的功能為調用本機默認瀏覽器,核心代碼如下:

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è)務(wù)都是由Java對話(huà)框程序來(lái)實(shí)現的,所以我們需要在Java和JavaScript這兩種開(kāi)發(fā)語(yǔ)言上實(shí)現數據交互。在html頁(yè)面中使用JS來(lái)調用Java,而在Java中融入JS的函數。

Java代碼調用JS函數并傳遞參數只需要在調用JS函數時(shí)加入參數即可,當需要加入多個(gè)參數時(shí)追加拼接即可,其中注意str類(lèi)型在傳遞的時(shí)候參數要用單引號括起來(lái),具體如下:

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

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

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

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

3 航跡規劃

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

public class Point{

private double latitude; //緯度

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

private double speed; //速度

private double height; //高度

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

4 管道信息與航跡顯示

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

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

5 結語(yǔ)

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

 

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

上篇:

下篇:

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

    QQ群二維碼

  • 95_95px;

    微信二維碼

咨詢(xún)熱線(xiàn):18719811719
久久99精品国产99久久6男男,精品香蕉伊思人在线观看,上着を完全に剥ぎ取り,亚洲欧美日韩精品,6080无码久久国产