999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Android平臺的GPS面積測量軟件開發

2017-06-15 20:08:26柳開弘王學文
科技創新導報 2017年11期

柳開弘+王學文

DOI:10.16660/j.cnki.1674-098X.2017.11.161

摘 要:為了提高現有土地面積測量方法效率,并為之提供一種操作簡單、易于普及的方法,該文提出一種基于Android平臺智能手機的土地面積測量軟件開發。該軟件一方面設計了手持GPS面積測量的改良方案,利用球面多邊形角盈計算其面積避免了坐標轉換過程中產生的誤差,并且能自動采集GPS樣本信息然后進行計算;一方面又利用百度地圖接口,設計出利用高清衛星圖像對樣本區域邊界勾勒并測量的方法,對于邊界清晰的區域可不用到實地測量。實際測量結果表明,該軟件可以滿足林業上對林地測量或其他工程測繪水平面積的精度要求。

關鍵詞:面積測量 Android軟件開發 全球定位系統(GPS)

中圖分類號:TP311.1 文獻標識碼:A 文章編號:1674-098X(2017)04(b)-0161-05

第四代移動通訊技術(4G)為移動設備帶來了更快的數據傳輸速率,也為計算機網路與電信網絡的融合提供了支持。隨著4G網絡的大范圍普及,移動設備終端不僅是通訊網絡的設備終端,也將成為互聯網的終端。因此,移動終端設備的應用和需求擁有龐大的發展空間。美國谷歌公司為此于2008年9月23日推出了一款基于Linux的自由及開放源代碼的操作系統——Android。其在硬件上融合了多種傳感器,如電子羅盤、重力感應、光線感應、陀螺儀、GPS等,并且為其提供了應用層的調用接口,使得Android軟件開發者可以便捷地調用這些傳感器來開發各種功能的軟件。

另一方面,利用GPS(全球定位系統簡稱)測量面積,是目前林地測量及其他工程測繪上普遍使用的方法。利用GPS的定位功能,在指定區域即可獲得該區域各點的GPS地理坐標,經過對多個點的地理坐標采集處理,可以計算出對應的面積。但是,傳統的GPS接收機功耗高、體積龐大、購置成本比較高。而且,在操作和使用方面需要經過專業的學習與培訓。因此,傳統的GPS面積測量難以在普通民用得以普及。而選擇在Android平臺上開發測面積APP,一方面,由于Android設備的普及,大部分人都擁有Android設備,并且其集成了高性能GPS模塊,使得GPS面積測量可以方便、快捷、便攜而且成本大大降低;另一方面,利用Android平臺的開放性優勢及設備的性能優勢,使GPS面積測量應用接入百度地圖開放平臺,衛星地圖、矢量地圖等可視化操作大大降低了用戶的學習成本,使得農民朋友們也可以輕松地使用上GPS面積測量。

1 傳統面積測量方法

(1)用皮尺或測繩人工丈量距離,用面積計算公式計算地塊面積。

(2)用羅盤儀、經緯儀等儀器測量距離,然后計算面積。羅盤儀或經緯儀測量即按照羅盤儀或經緯儀閉合導線方法,即定邊界點為測點,測定兩個變量即測距和測角(方位角),要求相鄰點之間必須通視,斜距的傾斜角超過5°時要水平校正,山地測量的閉合差應小于1/150,平地測量的閉合差應小于1/200[1]。再利用距離和角度把測點展繪到圖紙上,再把相鄰點用直線連接起來,然后利用電子求積儀計算面積;或者是利用數方格紙法計算面積(根據比例尺把圖紙面積換算成實際面積)。

(3)用GPS測量面積,GPS是(全球定位系統)的簡稱。測量時,持GPS接收機沿地塊邊界繞行一周,即可得到被測地塊的面積。

(4)利用全站儀測定地塊面積,先用獨立坐標假定測站點坐標,安置全站儀,利用假定的測站點坐標設置測站,利用角度定后視的方法,再拿棱鏡繞著邊界走一圈,全站儀瞄準棱鏡邊測邊記錄點的坐標。在儀器里,計算面積有兩種方法:一種是直接在儀器里利用面積求算功能求算面積;另一種是利用SD卡導出數據,利用插件轉換X、Y坐標,最后利用CASS9.2軟件求算地塊面積。

2 當前面積測繪存在的問題

對于測量工作人員來說,當前的測量方式雖然已達到測量要求的精確度,但是亦存在許多的問題。第一,當前的測量方法都必須到現場進行測量,工作量大,野外作業辛苦,人力物力消耗都很大,特別是林業部門要測量林地面積時交通不便,要走到現場都需要花費很多時間,測量的山頭地塊有樹木遮擋視線,也會給測繪帶來更多的困難。第二,當前測量方式的工作效率不夠高,而且多人協作上比較麻煩,需要花費很多時間對數據進行處理。

對于普通民眾特別是農民朋友來說,用皮尺或羅盤儀等比較傳統的方式一方面精準度難以達到要求,一方面也需要花費大量的人力;而先進的測量方式又需要購置專業的設備以及需要經過相應的培訓,因此當前的面積測繪方法難以在普通民眾上普及。

3 開發應用軟件

根據以上存在的問題,筆者在學習計算機編程時就考慮如何依托現今科技發達的手段,開發出一種既可以為一線測繪人員帶來便利又能滿足工作項目的精度要求,并且在使用操作上大大簡化使得在一般民用上得以普及推廣的面積測量軟件系統。

文中所設計的基于Android平臺與智能手機的GPS面積測量軟件系統構成上大體可分為3個部分:Android操作系統、百度地圖SDK、Bmob后端云。

3.1 Android操作系統

基于Linux開發出的Android操作系統的最大特點就是開源,系統功能齊全,使用穩定。Andorid系統架構采用分層思想,與它的操作系統架構十分相似。Android的系統架構可以分為4個部分,即:Linux內核層、Android運行庫、應用框架層、應用程序層[2]。此次開發的軟件就是在應用程序層上進行的開發,其在應用框架中提供了眾多的組件以及接口,使我們可以對GPS進行集成開發。

3.2 百度地圖SDK

百度地圖SDK是一套基于Android 2.1及以上版本設備的應用程序接口。開發者可以使用該接口開發適用于iOS或Android系統移動設備的地圖應用,通過調用該接口,輕松訪問百度地圖的數據和服務,構建功能豐富、交互性強的地圖類應用程序[3]。

百度地圖SDK在同類服務中具有巨大優勢,其整體框架清晰合理,接口設計符合開發者使用邏輯,各方面設計人性化、規范化;在性能上進行了多方面優化處理,使得使用過程中CPU占用率、內存等方面系統資源占用率低;并且,百度地圖SDK還提供了高精度定位接口,其通過GPS、基站、WiFi聯合定位的高精準定位方法,適用于室內、室外多種定位場景,具有出色的定位性能——定位精度高、覆蓋率廣、網絡定位請求流量小、定位速度快,其高精度定位模式定位成功率高達99.5%。百度地圖SDK為文章所設計軟件的可視化操作及高精度定位功能提供了重要支持。

3.3 Bmob后端云

Bomb后端云是由比目網絡科技提供的一體化網絡后端服務平臺,利用其提供的SDK,在APP中進行調用,便可以很方便地進行網絡數據的儲存和下載以及云端數據庫的編輯。

Bmob云數據庫支持String、Number、Boolean、Date、Array等常用的數據類型[4],為文章所設計軟件的云端同步功能提供了重要支持。

4 軟件總體設計

4.1 開發環境配置

此次開發使用了Android Studio作為軟件開發平臺,開發語言為Java,使用Android 6.0 SDK。

實際測量所使用的Android智能終端為:小米 Redmi 3S。配置為驍龍430 8核處理器4×1.4GHz+4×1.1GHz,2GB LPDDR3內存,采用Android 6.0.1系統。全面支持GPS、AGPS、GLONASS、北斗定位4大定位系統,為該次軟件開發調試提供了很好的硬件測試環境。

4.2 百度地圖配置

該次開發基于百度地圖SDK v4.0.0,首先配置百度地圖圖層mMapView.getMap();該次開發中,為了提高用戶的可視化操作體驗,提供了矢量地圖BaiduMap.MAP_TYPE_NORMAL,以及衛星地圖BaiduMap.MAP_TYPE_SATELLITE,供用戶選擇。

百度地圖定位功能的實現主要使用BMapManager、MapView、LocationClient、LocationData、LocationClientOption、MyLocationOverlay這6類。BMapManager這類作用在整個地圖的生命周期中,程序開發的時候要先對其進行初始化操作;MapView作用在展示地圖界面;LocationClient為定位服務的客戶端。宿主程序在客戶端聲明此類,并調用它;LocationData作用于接收定位所得的數據參數;MyLocationOverlay則作用于顯示當前位置。

4.3 測繪功能的實現

在該程序中,將主要提供兩種測繪方式,分別為勾勒邊界法和手持設備移動法。

4.3.1 勾勒邊界法

該方法建議配合高清衛星圖像進行直觀的操作,用戶在地圖圖層上需要設點的位置進行點擊,便可以放置一個錨點,錨點可以確認所需測量多邊形的一個頂點,然后由多個頂點構成所需測量的區域。放置錨點的設計放置在地圖點擊響應事件bdMap.setOnMapClickListener中,在里面的onMapClick函數中,配置一個BitmapDescriptor對象并且放置在點擊事件傳入的LatLng坐標上,使之實現點擊地圖即可放置一個錨點。BitmapDescriptor對象具有長按拖動功能,用戶可以在錨點放置完畢后再進行相應的調整適配。當錨點的位置最后放置完畢后,通過BitmapDescriptor的點擊事件,確定所測量區域的頂點,使用DotOptions來配置各個頂點。并且將所有頂點所對應的經緯度LatLng依次添加進path數組中,用于接下來的數據處理。

4.3.2 手持設備移動法

該方法用戶可以手持設備對所需測量區域邊緣行走一圈,便可在地圖圖層中繪出該區域的大致輪廓。該方法實現方法為,配置一個TimerTas抽象類,設定好事件時間任務并且相隔5 s觸發(如行動速度較快則相應降低觸發時間以保證精確度。在每個時間任務里,獲取當前的經緯度LatLng,然后配置DotOptions作為所測量區域的頂點,并且將當前的經緯度LatLng添加進path數組中,用于接下來的數據處理。

4.4 計算區域面積算法

4.4.1 球體幾何簡介

球體幾何的產生是因為對歐幾里得的《幾何原本》的第五公設提出異議而產生的新的幾何,因此,對球體表面多邊形的計算也與歐幾里得幾何不同[5]。球面多邊形就是封閉的球面折線,在球面多邊形中,各個劣大圓弧稱為球面多邊形的邊;相鄰兩邊的公共端點稱為球面多邊形的頂點;以相鄰兩邊的公共端點(即球面多邊形的頂點)為頂點、相鄰兩邊所在大圓弧為邊的球面角稱為球面多邊形的角。具有3條邊的球面多邊形稱為球面三角形;具有n條邊的球面多邊形稱為球面n邊形。球面多邊形的面積公式是球面幾何的基本公式之一,其可用下面公式計算:S=eR2,式中R為球半徑,e為球面多邊形的球面角盈(即球面多邊形的內角和與其相應的平面多邊形內角和的差值)。亦可化為如下公式:

其中,S為所求球面多邊形面積,R為球體半徑,δ為球面多邊形的球面內角和,n為該多邊形的邊數。

4.4.2 面積計算算法設計

坐標兩兩之間可構成一個向量,筆者首先設計一個以經緯度為坐標參數表示的向量的方位角函數。對于球體幾何來說,假定當前兩點的坐標經緯度分別是(λ1,φ1)和(λ2,φ2),則其經度差值為?φ。已知atan2為方位角函數,那么可得到球體幾何中通過兩點經緯度計算其構成向量的方位角公式:

在程序設計中,筆者將其設計為Vector函數,參數為兩個坐標的值,返回計算出的方位角。其主要代碼如下:

double angle =-Math.atan2(Math.sin(lon1 - lon2)*Math.cos(lat2),Math.cos(lat1)*Math.sin(lat2)-Math.sin(lat1)*Math.cos(lat2)*Math.cos(lon1 - lon2));

其次,設計內角函數Angle,依次傳入3個坐標,從幾何角度上,3個有序坐標前兩者與后兩者分別組成向量,形成夾角。那么形成向量的過程中調用上述的Vector函數計算該向量的方位角,然后將兩個返回的方位角相減,得到兩向量夾角,即其中一個內角,主要代碼設計如下:

double vector21 = Vector(p2, p1);

double vector23 = Vector(p2, p3);

double angle = vector21 - vector23;

最后,設計總的球面多邊形面積計算函數Spherical PolygonArea,傳入處理后的坐標數組,循環分別取出3個坐標值傳入Angle函數中并求和,最終根據公式計算出總的面積。主要代碼設計如下:

for (int i = 0; i < points.size(); ++i) {

int j = (i + 1) % points.size(); int k = (i + 2) % points.size();

totalAngle += Angle(points.get(i), points.get(j), points.get(k)); }

double planarTotalAngle = (points.size() - 2) * 180.0; double OverAngle = totalAngle - planar-TotalAngle;

return OverAngle * radiansUnit * earthRadi-usMeters * earthRadiusMeters;

4.4.3 GPS誤差處理

偏移點可定義為該GPS測量點精度與平均測量精度相差很大的數據點,對于樣本方差來說,這些點對其影響最大。由于外界因素或氣候不佳等原因影響,會對GPS傳感器造成干擾,從而產生了GPS測量偏移點,無法保證所有的數據均在理想范圍內。那么,對于這些有偏差的值,我們可以選擇從數據中剔除。

對于誤差點的判斷算法,筆者根據Haversine公式設計了誤差判別算法。該公式由James Andrew于1805年首次提出,給定球體上兩點之間的經緯度即可算出該兩點之間的大圓距離,該公式如下:

其中,hav表達式為

假設在一次測量中,從點A移動到點B,這兩點的經緯度分別為A(Lat,Lng1),B(Lat2,Lng2)。那么,設ΔLat=Lat2-Lat2、ΔLng=Lng2-Lng2。根據Haversine公式,化為兩坐標點球面距離的算式

其中,R為地球半徑,d為所求距離。

根據上述公式,只需要統計出手持設備移動測量方式的GPS采樣間隔時間(默認為5 s)所能移動的距離值。

根據上述統計,得到行走5 s所移動的距離值范圍在2~10 m之間,取上一次定位得到的經緯度LatLng與該次定位獲取的經緯度LatLng值進行運算,得到的d值若大于10 m或小于2 m則可選擇刪除。

4.5 云同步功能實現

在該軟件的設計中,通過Bmob后端云服務,實現了對路徑測量的云端保存以及還原,為測量任務的保存以及多人協作測量提供了支持。

4.5.1 云數據庫表的設計

在工程新建一個數據對象Model_User,其為繼承自BmobUser的子類,并對應于Bmob后臺的一個數據表,在表的主要設計中,objectId為每條記錄在數據表中的唯一標識,添加記錄時自動生成。username與password為用戶設定。Path用于儲存測量區域邊角節點列表。

4.5.2 云同步功能設計

在云同步功能啟用之前,需要用戶進行注冊或登陸,新建Model_User對象bu2,通過調用bu2.login(new SaveListener(){}方法進行登陸,并把登陸后回調的Model_User對象通過((App)getApplication()).model_User=model_user方法進行傳遞。當用戶通過手動勾勒邊界法或手持設備移動法對所需測量區域邊緣進行勾勒后,啟用云端上傳功能,調用BmobUser類內的update函數,上傳當前勾勒的邊緣節點path。相應的,通過調用BmobQuery類的getObject函數,可下載之前上傳的節點。

5 軟件使用效果

5.1 軟件使用測試

筆者以標準足球場(面積為7 140 m2)作為參考,使用該軟件進行對比測量。

5.1.1 勾勒邊界法

此方法主要適用于非實地考察情況,把軟件切換至衛星地圖,在地圖上拖至此次測量的樣本區域——廣西梧州高中足球場。從衛星地圖上看到樣本區域的邊界輪廓十分清晰。適合于樣本區域邊界勾勒。經過軟件勾勒并計算后,得到的面積值約為7 229.64 m2,與標準值7 140 m2相比,誤差為1.2%。

5.1.2 手持設備移動測量

此方法與傳統GPS測量方法相似,此方法測量樣本為桂林電子科技大學足球場,打開該軟件的自動測量功能,然后圍繞該足球場行走一圈,從矢量地圖上可以看到GPS采樣數據形成的輪廓。

使用手持設備移動測量方法對樣本進行5次測量,得到的測量值及偏差如表3所示,測量精度均超過95%,達到了滿足林業上對林地測量或其他工程測繪水平面積的精度要求。

5.2 軟件使用效果對比

經過測試使用后,與傳統測量面積方法對比:(1)用皮尺或測繩人工丈量距離,用面積計算公式計算地塊面積的方法最耗時間,效率最低。(2)用羅盤儀、經緯儀等儀器測量距離,然后計算面積這種方法在測量面積比較大時與第一種方法比較效率會比較高些。(3)GPS的成本是羅盤儀的1/10,工效則是羅盤儀的10倍。可見采用GPS比前兩種方法都省時、省力、省費用,是林業企業降低成本提高經濟效益的有效途徑,現在在林地測量上還普遍使用。(4)利用全站儀測定地塊面積,它是在電子經緯儀的基礎上增加了電子測距的功能,使得儀器不僅能夠測角,而且也能測距,并且測量的距離長、時間短、精度高,智能化程度高,功能強大,操作方便,并可為用戶量身定制測量程序,滿足各種專業測量和工程測量的需求,這在工程測繪制圖這方面普遍使用。但該方法人力成本較大,需要專業人員進行操作,不適于民用推廣。

筆者所開發的手機測面積軟件,在實際測量效果中,精度可達到95%以上,可滿足林業上對林地測量或其他工程測繪水平面積的精度要求。而且操作簡單,安裝在普通智能手機中使用,大大節約了成本,不需要專門數據處理,由軟件直接得出測量結果,大大提高了效率。因此在市場上具有很強的推廣應用價值,前景廣闊。

6 總結與展望

6.1 總結

文章針對現有的土地測量方法的不足之處,并且結合目前Android平臺的巨大優勢,提出了基于Andorid平臺GPS面積測量APP開發方案。該軟件提供了手持設備移動測量和手動勾勒邊界兩種不同的方法供用戶選擇,彌補了現有GPS測量方式單一的缺陷。在手持設備移動測量方法中,利用球面多邊形的角盈計算面積,最大程度地避免了在經緯度轉換過程中出現的誤差,然后通過Haversine公式設計了偏移點處理方法,使得在數據處理上保證了準確度。并且,手持設備移動測量法相比于傳統手持GPS測量法,還集成了百度地圖接口,在可視化矢量地圖中看到GPS邊界采樣點的位置。在手動勾勒邊界法中,利用百度地圖提供的高清衛星地圖,對區域邊界清晰的區域直接在GPS衛星地圖上對其邊界進行勾勒計算,免去了人工到達現場的工作。在上述測繪方法完成過程中,該軟件還支持云端保存及同步,使得面積測量工作可以保存至云端或與他人協作。隨著云端平臺的發展,面積測量行業數據共享并上傳至云端平臺是測繪數字化必然發展的趨勢。

6.2 展望

由于時間和個人能力有限,文章對Android平臺GPS面積測量APP開發的理解和分析還不夠深入,系統功能也有待完善。Android是一個擁有巨大潛力的平臺,結合現在非常熱門的云計算能力,基于Android平臺的GPS面積測量APP在未來可演變為只通過Android進行數據的采樣,然后將所收集到的數據全部上傳至云端服務器進行運算處理,強大的云運算能力可將采集到的數據進行多次的分析優化,為最終面積運算結果提供更高的精準度。

參考文獻

[1] 劉義.GPS在采伐小班面積測量上的應用[J].森林工程,2002(3):10-11.

[2] 劉士潤,崔忠偉,韋萍萍,等.基于Android的“智慧旅游”手機APP開發[J].電子技術與軟件工程,2015(8):85-86.

[3] 張波,趙雙明.基于Android平臺的百度地圖開發研究[J].軟件導刊,2015(7):96-99.

[4] 周冉,高玉竹.Bmob云平臺在AndroidApp開發中的應用[J].微型機與應用,2015(1):26-28.

[5] 劉世澤.球面多邊形面積[J].高等函授學報:自然科學版,2005(1):25-26,30.

主站蜘蛛池模板: 午夜无码一区二区三区在线app| 国产亚洲男人的天堂在线观看| 亚洲a级毛片| 国产一区二区福利| 国产一区在线视频观看| 国产成人8x视频一区二区| 精品国产成人高清在线| 免费一级毛片完整版在线看| 精品久久高清| 国产欧美日韩另类| 狠狠色噜噜狠狠狠狠色综合久| 国产精品成人免费综合| 多人乱p欧美在线观看| 久久天天躁夜夜躁狠狠| 波多野结衣无码中文字幕在线观看一区二区 | 日韩欧美国产综合| 在线视频亚洲色图| 综合社区亚洲熟妇p| 午夜啪啪网| 久久99久久无码毛片一区二区| 热久久这里是精品6免费观看| 亚洲国产欧美国产综合久久| 男女猛烈无遮挡午夜视频| 真实国产乱子伦高清| 丝袜久久剧情精品国产| 国产网站免费| 亚洲国产成人自拍| 91网址在线播放| 九九这里只有精品视频| 69国产精品视频免费| 国产精品人成在线播放| 美女啪啪无遮挡| 欧美自慰一级看片免费| 素人激情视频福利| 无码福利日韩神码福利片| 国产女人在线观看| 国产网站在线看| 老司机久久精品视频| 国产免费好大好硬视频| 国产一在线| 国产精品自拍露脸视频| 亚洲最大在线观看| 亚洲天堂网2014| 国产在线麻豆波多野结衣| 国产精品一区二区不卡的视频| 国产哺乳奶水91在线播放| a欧美在线| 国产日韩欧美视频| 欧美一级色视频| 国产丝袜第一页| 国产特一级毛片| 久久精品国产在热久久2019| 日韩人妻精品一区| 国产日本欧美在线观看| 亚洲国产中文精品va在线播放| 国产微拍一区| 黄色a一级视频| 在线人成精品免费视频| 亚洲欧美综合在线观看| 亚洲AⅤ永久无码精品毛片| 欧美在线视频不卡| 扒开粉嫩的小缝隙喷白浆视频| 免费人成网站在线观看欧美| a级毛片免费播放| 国产精品视频免费网站| 黄色网在线| 久久国产亚洲欧美日韩精品| 亚洲人成影视在线观看| 538精品在线观看| 国产精品人成在线播放| 人妻中文久热无码丝袜| 国产91精选在线观看| 亚洲成人黄色在线| 91破解版在线亚洲| 精品无码一区二区三区在线视频| 在线欧美日韩国产| 亚洲色欲色欲www网| 日韩中文精品亚洲第三区| 香蕉视频在线观看www| 久久国产精品麻豆系列| 广东一级毛片| 国产免费一级精品视频 |