日本视频免费在线-日本视频免费看-日本视频免费观看-日本视频免费高清一本18-日本视频免费播放-日本视频免费

您當前的位置:首頁>>新聞中心>>行業動態

百度地圖在汽車衡行業中的應用一例

時間:2017-06-01 02:21:49   點擊數:

百度地圖在汽車衡行業中的應用一例

隨著“物聯網”的概念深入各行各業,其重要的分支領域—“位置應用”也在不斷發展。在地磅行業中,以稱重傳感器 + 稱重儀表 + GPS+ GPR S+ 電子地圖為主要組成部件的物聯網解決方案,已經成功的應用在稱重計量領域中。此文主要針對“百度地圖”,介紹了其在汽車衡物聯網中的一個典型應用案例??蔀轭愃频奈锫摼W方案提供參考。

隨著信息化社會的發展,“位置應用”已深入到人類生活的方方面面,應用場景包括手機導航社交網絡、車載導航、老年人關愛、應急救援、交通路線規劃、醫療定位、物流監控等。在地磅行業中也不例外。作者曾參與了一個“建筑環保砂漿 ”項目,其中就涉及到了 “稱重計量”和“位置應用”—兩者結合的需求。有了位置信息(即地理坐標) 后,就需要有電子地圖,來直觀呈現遠程設備的狀態。“百度地圖”是眾多電子地圖中的一員。它穩定可靠、開發文檔齊全,并免費向用戶提供二次開發 API 接口。本文將針對“環保砂漿的稱重計量”與“百度地圖”二者結合應用的方案展開描述。

一、砂漿計量系統的組成

 “砂漿站”向“工地”供應“砂漿”(新型環保砂漿) ,“工地”根據施工進度,對供應量 (主要參考重量) 進行控制。為了達到“環?!钡哪康?,施工現場嚴禁露天堆放物料。環保砂漿使用前,以干粉形式儲存 (所以也叫“干粉砂漿”),現場有專用的儲料罐。待到使用時,現場攪拌,用多少攪拌多少。攪拌設備和計量設備配合工作,完成砂漿的配制過程。砂漿罐計量控制系統的組成,如下圖 1 所示:

寬度1.png

系統由兩部分組成:一是攪拌電氣控制部分;二是稱重計量部分。兩者獨立工作,“計量部分”為“攪拌控制部分”提供重量參考。砂漿配置過程由人工操作電氣設備完成。

 計量部分涉及到“位置應用”。各部件分工如下:稱重傳感器負責重量數據采集 (每個罐 4  20t 傳感器),GPS 負責坐標信息采集,稱重儀表顯示重量,并將重量和位置信息通過 GPRS 傳送到遠程數據服務器端。用戶打開客戶端軟件,客戶端軟件將從服務器讀取重量和位置信息,在“百度地圖”上顯示覆蓋物 (即砂漿罐圖標)。用戶可以直觀的看到砂漿罐的地理位置和罐內儲料的當前余量,為后續砂漿運輸提供調度依據。“砂漿站”不用派人時刻駐守現場,節省人力資源,提高管理效率。

 二、GP S 坐標格式及轉換

1 GPS 通信數據具有一定的格式,坐標數值需要經過處理,才能被“百度地圖”API 接口使用 。   GPS 原始   11413.13562,  2955.83360,格式為:hhmm.mmmmm 是‘度’, m    ’)。 轉換成地理坐標后,經度為114+13.13562/60,緯度為 29+55.83360/60。然后調用“百度地圖”API 接口轉換成百度 DB09Ⅱ坐標類型。

 

2 GPS 坐標為什么要轉換?因為 GPS 原始坐標為 WGS84 坐標系,不能直接用于“百度地圖”。“百度地圖”采用的是 BD09Ⅱ坐標系。要在“百度地圖”上顯示 GPS 設備的正確位置怎么辦呢?“百度地圖”提供了 Web API 進行轉換,其鏈接地址為:

 

http://api.map.baidu.com/geoconv/v1/?coords=114.

 

2189273452129.575429778924&from=1&to=5&ak=

 

你的密鑰

 

說明:coords 為坐標的經度、緯度;form 為轉換前的坐標類型, WGS84 坐標系;to 為轉換后的坐標類型, BD09 (百度經、緯度坐標);ak 為密鑰,開發者在使用“百度地圖”前,先要申請開發者密鑰。

 

鏈接請求的返回數據為 json 格式,如下:

 

{

 

status:0,

 

result:

 

[

{

 

x:114.23075303426,

 

y:29.579086201042

 

}

 

]

 

}

 

上面的 x,即為 BD09Ⅱ坐標,可以被“百度地圖”識別。調用地圖覆蓋物 API,就能將指定的圖片(支持 jpg,gif,png 等格式),顯示到地圖容器上。

 這個轉換鏈接是 Web 形式的,如果是 Web 應用程序開發,可以直接調用,很簡單。如果是桌面軟件開發,該如何處理呢?筆者使用的是

 

C++Builder,它提供了處理 http 協議的控件即

 

TIdHttp。在其他開發工具中也有類似的函數庫,如微軟已經封裝好的 WinInet 高級網絡協議函數庫,可供開發者開發基于 http 協議的應用程序。

 

作者寫了一個函數,實現坐標轉換,其中用到了 TIdHttp 控件,代碼如下:

AnsiString__fastcall BD09::GpsToBD (const

 

GPSpoint & GpsCoord)

 

{

 

TIdHTTP * bdhttp= new TIdHTTP(NULL); TMemoryStream * ms;

 

LPSTR lpBuf; AnsiString strText; try

 

{

 

AnsiString strUrl="http://api.map.baidu. com/geoconv/v1/?coords="+GpsCoord.X+","+GpsCoord. Y+"&from=1&to=5&ak=Xd93xc2Z";

ms=new TMemoryStream;

 

bdhttp- >Get(strUrl,ms);//g_Url 是地圖坐

 

 API

 

const int msSize=ms- >Size; lpBuf=new char[msSize]; ms- >Position=0;

ms- >Read(lpBuf,msSize);

 

strText=String (lpBuf,msSize);// 返回 json

 

字符串

}

 

__finally

 

{

 

delete ms; delete [] lpBuf; delete bdhttp; return strText;

}

 

}

 

上述代碼中用到了“百度地圖”坐標轉換鏈接 strUrl (即百度地圖 WebAPI),并展示了如何接收返回的數據。

 

三、“百度地圖”常用的 J a va s cript 函數介紹要完成“百度地圖”的二次開發,需要調用一些常用的地圖控制 JavascriptAPI,比如:(1 創建地圖容器

var map=new BMap.Map("allmap");// 創建地圖容

 

器對象(2 設置默認的地圖中心位置

 

地圖加載完畢后,顯示到地圖容器中時,無論如何,總有一個中心位置,用戶需要指定默認的地圖中心:

 

map.centerAndZoom (new BMap.Point 115.788,

 

39.2615, 14;// 北京位置(可設置為用戶所在城市)(3 滾輪縮放和地圖慣性拖拽map.enableScrollWheelZoomtrue;// 啟用滾輪放

 

大縮小,默認禁用

 

map.enableContinuousZoom();// 啟用地圖慣性拖

 

拽,默認禁用(4 添加地圖工具

 

var top_left_control=new BMap.ScaleControl ( {anchor:BMAP_ANCHOR_TOP_LEFT});// 左上角,添

加比例尺

 

var top_left_navigation=new BMap.Navigation Control(); // 左上角,添加默認縮放平移控件

 

var top_right_navigation=new BMap.Navigation Control({anchor: BMAP_ANCHOR_TOP_RIGHT, type: BMAP_NAVIGATION_CONTROL_SMALL}); // 右上

 

角,僅包含平移和縮放按鈕 map.addControl top_left_control);

map.addControl top_left_navigation) map.addControl top_right_navigation);

5 添加覆蓋物和標注文字

 

var pt0=new BMap.Point(x, y);//x,y 即為 DB9Ⅱ坐

 

 

var myIcon0=new BMap.Icon pic, new BMap.

 

Size43,94));// 圖標

 

var marker0=new BMap.Marker (pt0, {icon: myIcon0}); // 創建標注

 

map.addOverlaymarker0;// 將標注添加到地圖

 

 

6 點擊地圖覆蓋物,彈出提示框

 

var infoWindow0=new BMap.InfoWindow(tip);

 

marker0.addEventListener("click", function(){this.

 

openInfoWindowinfoWindow0;setTimeoutfunction()

 

{// 定時器

 

map.closeInfoWindow();

 

}, 5000);});

 

var pt0=new BMap.Point(x, y);

 

var infoWindow0 = new BMap.InfoWindow(tip);

 

map.openInfoWindow(infoWindow0,pt0);

 

四、地圖的顯示

 

有了地圖 API 函數,如何才能將地圖顯示在我們的軟件里呢?如,將地圖顯示在一個 Windows窗口上。因為“百度地圖”本身是 Web 形式的,即 B/S 模式的。而我們的軟件是在 Windows 桌面上運行的,即是 C/S 模式的。所以,首要解決的問題是:如何將 B/S 模式轉換為 C/S 模式,即在Windows 窗口上顯示 web 頁面。至于是用 C/S 模式好,還是用 B/S 模式好?這個問題不是本文討論的重點。筆者只是根據自己擅長的技術選擇 C/S 模式。

 作者的解決方法是:“IE 瀏覽器控件 +

 

HTML 頁面”的方案。C++Builder  IE 瀏覽器控

 

件名是 CppWebBrowserVC++ 中的 IE 瀏覽器控件名是 Microsoft Web Browser。他們都封裝了 IE 

 

,可以快速開發出屬于自己的專用瀏覽器 (如:

 

360 雙核瀏覽器,其中有一個核即為 IE 內核),并可將 Web 頁面嵌入到 Windows 窗口中。在瀏覽器控件中,如何控制地圖并響應Web 頁面上的鼠標事件呢?實際上 Windows 同時提供了瀏覽器控件的交互 COM 接口,包含在 #include 頭文件中 (可參考 COM/COM+ 編程原理)。在開發中有一個特別重要的功能需求:即要能在 C++ 中調用 Javascript 代碼,讓 IE 控件中的頁面產生動作。如:改變地圖中心、刪除 / 添加地圖覆蓋物、更新信息提示等。C++  Javascript 腳本驅動代碼如下: bool__stdcall RunJS  IHTMLDocument2 *spDoc, LPSTR lpScript,LPSTR lpLang

 

{

 

IHTMLWindow2 *pWin;

 

VARIANT vRet;

 

bool bRet = false;

 

IEForm- >CppWebBrowser1- >Document - >QueryInterface (::IID_IHTMLDocument2, reinterpret _cast(&spDoc));

if(spDoc != NULL)

 

{

 

try

 

{

 

spDoc- >get_parentWindow(&pWin); if(pWin != NULL)

{

 

try

 

{

 

pWin- >execScript (WideString(lpScript), WideString(lpLang), &vRet);

bRet=true;

 

}

 

__finally

 

{

 

pWin=NULL;

 

}

 

}

 

}

 

__finally

 

{

 

spDoc == NULL;

 

}

 

}

return bRet;

 

}

 

因為微軟提供了標準 COM 交互接口,所以

 

Windows 平臺上的開發工具,調用方法都類似。

 

HTML 文件是一個普通的 Web 頁面文件,中間嵌入“百度地圖”容器,并包含了控制地圖的Javascript 函數。在桌面軟件中,利用 RunJS 函數可以調用這些 Javascript 代碼。Javascript 代碼和 IE

 內核交互,控制頁面內容。HTML 文件的具體格式可以參考“百度地圖”開發文檔。在 HTML 文件中,須包含這樣一行語句:

 

 

包含了這行代碼后,才能調用“百度地圖”的 API 接口函數。HTML 文件可以放在服務器端,也可以放在客戶端。如果放在服務器端,服務器上要安裝“Web 服務器”軟件。如:IIS、Apache等,其中的一種。

五、“百度地圖”在砂漿稱重系統中的應用作者在 “建筑環保砂漿 ”項目中,使用了“百度地圖”。在任意一臺能連上 Internet 網絡的電

 

腦上,打開專用的客戶端軟件,軟件就能接收服務器的數據,并在地圖上顯示出各個工地的所有砂漿罐的“當前位置”和“實時重量”信息。地圖接口調用的流程如下:

寬度2.png

寬度3.png

 

要用好“百度地圖”,除了掌握 C++ 編程技術外,還需要了解和掌握多種前端和后端的編程技術,如: HTML 標記語言、Javascript 腳本語言、Web 服務器架設、客戶端和服務器端的 Socket 通信、瀏覽器控件的 COM 交互接口、“百度地圖”的 API 功能函數、內存數據庫等。文中已經介紹了基本的調用流程和關鍵的知識點。

 作者在“建筑環保砂漿”項目中—稱重計量部分,使用了“百度地圖”。經實踐檢驗,達到了預期的效果?!鞍俣鹊貓D”雖然是免費的,但也有一些限制。如:API 接口調用次數的限制。普通 API 接口:每個 IP 每天調用上限 2000 次;坐標逆向轉換 API (即 Geocoding API 調用次數為:每個 IP 每天調用 6000 次限制 (具體請參考“百度地圖”的相關政策)。超過使用次數之后,將返回{"status":302,"message":" 天配額超限,限制訪問 "}

“建筑環保砂漿”項目中,地圖接口 API 調用不算頻繁,所以基本是夠用的。如果需要更高頻

次的調用,需要和“百度”公司協商。

 本文重點介紹的是“百度地圖”的應用。對于其他的電子地圖,開發過程也基本相同。當前市面上,除“百度地圖”外,還有多種商業電子地圖可供選用。如:國外的谷歌地圖;國內的搜狗地圖、高德地圖、騰訊地圖等。他們都提供了二次開發接口,且大多是免費的。具體選用哪種,要結合項目的實際需求和“地圖服務商”的服務質量,綜合考慮。

 我想,隨著 “物聯網 ”(Internet of thingsIoT 的技術普及,關于“地理位置”的應用,需求也會越來越多。除了 PC 端的應用外,移動端的應用也是方興未艾。在汽車衡行業中,應用也會更加廣泛。目前,國內地磅公司中,如:耀華、柯力已經推出了成熟的產品和解決方案,起到了行業“橋頭堡”的作用,其他公司也會極積跟進,加大研發力度并開拓相關市場。

 

 


主站蜘蛛池模板: 日本 在线 | 三级爱爱 | 国产97免费视频 | 亚洲第一第二区 | 亚洲免费视频一区 | 日本三级成人午夜视频网 | 亚洲 另类色区 欧美日韩 | 亚洲在线视频一区 | 外国毛片在线观看 | 亚洲日韩欧美综合 | 国产特黄特色a级在线视频 国产特黄一级毛片特黄 | 51国产午夜精品免费视频 | 国产成人久视频免费 | 国产96福利视频在线观看 | 国产成年女一区二区三区 | 12至16末成年毛片视频 | 日本老熟 | 国产成人午夜性视频影院 | 欧美激情一区二区三区视频高清 | 69视频免费看 | 免费高清性色生活片 | 四虎精品永久在线网址 | 日本三级aaa | 午夜高清福利 | 欧美日韩国产在线 | 免费人成黄页网站在线观看国产 | 成人国产一区二区三区精品 | 日韩欧美亚洲国产精品字幕久久久 | 欧美e片成 人 在线播放乱妇 | 欧美精品亚洲精品日韩一区 | 国产精品一区二区欧美视频 | 亚洲国产精品久久久天堂 | 国产观看精品一区二区三区 | 亚洲最大的视频网站 | 日韩欧美aa级草草免费视频 | 日本黄色免费视频 | 久久精品国产欧美成人 | 福利视频欧美一区二区三区 | 午夜影院免费观看 | 日本一区二区三区视频在线观看 | 日本在线视频一区二区 |