郭紅操,陳 川,馬 煜,陳柄任,陳柏行,袁勇軍
(1.成都市規(guī)劃編制研究和應用技術中心,四川成都 610041;2.四川省第一測繪工程院,四川成都 610100)
測繪質量是測繪產業(yè)發(fā)展的生命線,不僅關系到國民經濟持續(xù)快速健康發(fā)展,而且關系到國家主權、國防安全和民族利益,直接影響著廣大人民群眾的切身利益,提高測繪質量水平是促進經濟社會科學發(fā)展的必然要求。目前測繪產品的質檢方式包括內業(yè)和外業(yè)2 種,傳統(tǒng)的外業(yè)質檢通常是由檢驗人員室內將抽取的樣本數(shù)據(jù)打印成紙質文件,帶到實地進行巡視檢驗,在巡視過程中將檢查信息記錄在紙質圖表上,這種方式不僅數(shù)據(jù)攜帶不方便,并且受紙張大小限制,攜帶數(shù)據(jù)量有限,在外業(yè)記錄過程中存在涂改困難、不易保存等諸多缺陷。因此,需要一種效率和準確率更高的數(shù)據(jù)采集方式來支持測繪產品的外業(yè)巡檢工作。
隨著ArcGIS 移動端技術不斷發(fā)展,ArcGIS Runtime SDK for Android 版本已經從10.X 系列更新至100.X 系列,目前100.X 版本可以直接對Shapefile 文件進行可視化和編輯。利用ArcGIS 移動端開發(fā)技術,可將測繪產品樣本數(shù)據(jù)轉成Shapefile 格式,從電腦端拷貝到移動端設備,由檢驗人員帶到實地進行外業(yè)巡視檢驗,通過外業(yè)巡檢軟件瀏覽數(shù)據(jù)并將檢查信息記錄在移動端設備里。
本文的測繪產品外業(yè)巡檢系統(tǒng)的設計與實現(xiàn),將基于ArcGIS Runtime SDK for Android 100.4 和ArcObjects SDK10.2.2 二次開發(fā)技術,采用C/S 架構設計方式,實現(xiàn)外業(yè)巡檢及檢查記錄自動化輸出。
測繪產品巡檢系統(tǒng)是指將已預處理好的樣本數(shù)據(jù)攜帶至現(xiàn)場對測繪成果進行檢驗,并通過外業(yè)檢查將其屬性信息和空間信息記錄在巡檢系統(tǒng)中,這里的測繪成果是通過測量采集、計算、繪制編輯等手段形成的圖形、表格等資料,常見數(shù)據(jù)格式包括矢量數(shù)據(jù)、柵格數(shù)據(jù)等。
測繪產品巡檢是指基于已有的測繪成果,在成果現(xiàn)場對測繪成果進行比對檢查,檢查成果圖形及相關屬性信息是否和現(xiàn)場情況一致,對測繪成果有錯漏的地方進行標注,并記錄其空間信息和屬性信息。隨著測繪的應用越來越廣泛,這里的測繪成果數(shù)據(jù)不僅包括傳統(tǒng)的地形圖、影像圖等,還包括行業(yè)應用成果,如,城市道路部件調查成果、河湖劃定成果等。如上所述,測繪產品巡檢系統(tǒng)可分為以下4 個模塊:
1)實現(xiàn)文件地理數(shù)據(jù)庫和柵格影像的分幅裁剪、外業(yè)調繪底圖制作、檢查記錄表的輸出、樣本質量的評價,包括數(shù)據(jù)裁剪、制作tpk、輸出檢查意見記錄表等功能。
2)實現(xiàn)對已有測繪產品的瀏覽,系統(tǒng)兼容并支持多種測繪產品格式,包括柵格數(shù)據(jù)、矢量數(shù)據(jù)、視頻、圖片等,具體表現(xiàn)為可以在移動端上對成果實現(xiàn)移動、縮放、屬性標注、圖層控制、測量、符號化等功能。
3)實現(xiàn)檢查信息的記錄和標注,實現(xiàn)矢量數(shù)據(jù)的選擇、繪制、保存、刪除等編輯功能,支持點、線、面3 種數(shù)據(jù)類型,可以記錄檢查信息的屬性和空間信息。
4)實現(xiàn)空間位置實時定位,可以實現(xiàn)離線GPS定位和網(wǎng)絡定位2 種方式,同時顯示圖形北方向。
此次測繪產品外業(yè)巡檢系統(tǒng)硬件配置為華為M5 平板電腦,處理器4×A73,處理頻率2.1 GHz,運行內存4GB,開發(fā)工具采用Android Studio,開發(fā)語言采用Java,結合成都市數(shù)字城管基礎數(shù)據(jù)普查更新檢驗項目的需求,系統(tǒng)設計結構如圖1 所示。
圖1 系統(tǒng)結構圖
2.2.1 數(shù)據(jù)瀏覽
數(shù)據(jù)加載:此系統(tǒng)采用離線方式加載、訪問測繪成果數(shù)據(jù),其中支持包括shp、tif、mp4、jpg 等格式的數(shù)據(jù),工作背景底圖主要采用衛(wèi)星影像和道路數(shù)據(jù),將這2 種數(shù)據(jù)疊加,在ArcMap 中進行切片處理,制作成tpk 的文件,以便在實地查找位置。
MapView mMapView = findViewById(R. id.map);
ShapefileFeatureTable shapeTable=new ShapefileFeatureTable(path2);
FeatureLayer Layer_sanbao = new FeatureLayer(shapeTable);
mMapView.getMap().getOperationalLayers().add(Layer_sanbao);
屬性標注:采用單一屬性和多種屬性標注的方法,多種屬性標注樣式采用分子式,要素屬性標注位于要素正上方,檢查記錄的標注位于要素正下方,使用不同的顏色區(qū)別,如圖2 所示。
圖2 編輯視圖
LabelDefinition labelsanbao=LabelDefinition.fromJson(otherLabelsJsonsanbao);
Layer_sanbao.getLabelDefinitions().add(labelsanbao);
hapefileLayer_sanbao.setLabelsEnabled(true);
圖層管理:采用批量和單選2 種方式控制視圖中各個圖層的開關顯示,支持控制矢量圖層、柵格圖層等。
數(shù)據(jù)視圖:在視圖中可以用手直接觸摸屏幕,滿足移動、放大、縮小、旋轉等需求,并實時顯示當前視圖比例尺和正北方向,同時實現(xiàn)多種要素的符號化顯示。
LocationDisplay locationDisplay=mMapView.getLocationDisplay();
Envelope envel=Layer_sanbao.getFullExtent();
mMapView.setViewpointAsync(new Viewpoint(penvel));
CheckBox checkboxsb=contentView.findViewById(R.id.cb_sanbao);
checkboxsb.setChecked(true);
2.2.2 數(shù)據(jù)編輯
實現(xiàn)點、線、面3 種要素的繪制、刪除、選擇、保存等操作,此系統(tǒng)直接編輯Shapefile 矢量數(shù)據(jù),減少了數(shù)據(jù)轉換的工作,并可采集當前要素實地照片,作為檢查記錄的輔助資料。
SketchEditor mainSketchEditor mainSketchEditor=new SketchEditor();
ListenableFuture<FeatureQueryResult>selectR=
Layer_sanbao.getSelectedFeaturesAsync();
FeatureQueryResult result=selectR.get();
Iterator<Feature>iterator=result.iterator();
while(iterator.hasNext()){
Feature feature=iterator.next();
feature.getAttributes().put("ErrorType",et_cuowuleix.getText().toString());
feature.getAttributes().put("ErrorDescribe",et_miaoshuleix.getText().toString());
final ListenableFuture<Void>addFeatureFuture=
Layer_sanbao.getFeatureTable().updateFeatureAsync(feature);
mainSketchEditor.stop();}
2.2.3 空間定位
定位方式:此系統(tǒng)采用離線定位和網(wǎng)絡定位2種方式獲取當前實時位置。離線定位是根據(jù)平板電腦GPS 模塊獲取衛(wèi)星信號而計算獲取位置的方式,網(wǎng)絡定位是平板電腦在連接互聯(lián)網(wǎng)的狀態(tài)下,根據(jù)互聯(lián)網(wǎng)信號計算獲取位置的方式。
locationDisplay.setAutoPanMode(LocationDisplay.AutoPanMode.RECENTER);
ActivityCompat.requestPermissions(MainActi.this,reqPermissions,requestCode);
mMapView.setViewpointCenterAsync(locationDisplay.getMapLocation(),200);
測量工具:此系統(tǒng)可以實現(xiàn)測量距離、測量面2種測量功能,測量結果實時顯示在界面上,根據(jù)距離可以判斷視圖上的要素的相對位置。
Geometry geometry=mainSketchEditor.getGeometry();
Polyline ply=(Polyline)GeometryEngine.project(geometry,SpatialReference.
create(3857));
String tv="Lengh:"+Math.round(GeometryEngine.length(ply))+"m";
Polygon polygon=(Polygon)GeometryEngine.project(polygonGeometry,
SpatialReference.create(3857));
LinearUnit linearUnit=(LinearUnit)
SpatialReference.create(3857).getUnit();
AreaUnit unit=newAreaUnit(linearUnit);
String tv="Area:"+Math.round(Math.abs(GeometryEngine.area(polygon)))+"m2";
本次系統(tǒng)已經在成都市數(shù)字城管基礎數(shù)據(jù)普查更新檢驗項目中應用,該項目的檢驗數(shù)據(jù)包括gdb 矢量數(shù)據(jù)、jpg 照片等,其中gdb 矢量數(shù)據(jù)中涉及城管部件點、城管部件線、單元網(wǎng)格、門前三包、興趣點、社區(qū)界線等若干圖層,要素類型涉及點、線、面3 種。本次為了輔助檢驗人員檢驗判斷實地位置,同時收集了數(shù)字正射影像、道路數(shù)據(jù)。檢驗人員使用測繪產品外業(yè)巡檢系統(tǒng)時,可離線訪問工作目錄中存儲的tpk 和已經處理后的Shapefile 樣本數(shù)據(jù),并在平板電腦中繪制檢查點、檢查線、檢查面等圖形,同時記錄相關檢查屬性,包括要素錯誤類型、錯誤描述等信息,并存儲在工作目錄中,有效提高測繪產品的外業(yè)檢驗效率。
2.3.1 數(shù)據(jù)準備
tpk 是ArcGIS10.1 推出的一種新的數(shù)據(jù)文件類型,主要是用于將切片文件打包形成離線地圖包,可以用于在移動設備中使用離線切片。切片是由多個256× 256 像素的圖片組成,tpk 具體來說屬于zip 格式壓縮文件的一種,它是切片圖片按一定規(guī)則組織后對其進行壓縮并修改文件擴展名制作而成,本次tpk 數(shù)據(jù)的制作平臺采用ArcGIS10.2.2 軟件。該數(shù)據(jù)具備體積小、加載速度快的優(yōu)點,同時由于移動端設備硬件配置性能限制,本次把影像數(shù)據(jù)切片打包到本地,即從移動端本地加載地圖,檢驗人員可以在外業(yè)質檢系統(tǒng)中很流暢地對tpk 數(shù)據(jù)進行加載、瀏覽、放大、縮小等操作。
通過數(shù)據(jù)裁剪、制作tpk 等功能,可以將總的gdb 數(shù)據(jù)庫、數(shù)字正射影像,根據(jù)分幅結合圖或者行政界線進行裁剪,形成每個樣本數(shù)據(jù)組織目錄,樣本目錄包含裁剪后的shp 文件夾和調繪底圖數(shù)據(jù)(tpk)。本次制作tpk 數(shù)據(jù)的數(shù)據(jù)源是數(shù)字正射影像和道路矢量數(shù)據(jù),將道路名稱進行標注,檢驗人員可以根據(jù)底圖上的道路名稱迅速判斷當前所在位置,其中tpk 命名格式為樣本名稱+“.tpk”,其中shp 文件夾內包含城管部件點、城管部件線、興趣點、界線4 個圖層。
2.3.2 加載編輯
使用軟件的加載數(shù)據(jù)功能,數(shù)據(jù)加載成功后,軟件頂部會顯示樣本名稱,地圖視圖中包含1 個影像圖層、4 個矢量(城管部件點、城管部件線、興趣點、界線)圖層,其中屬性默認標注為名稱+材質+狀態(tài),標注位置在點正上方,顏色為紅色。
不同的部件對應不同的符號,其中社區(qū)界線為紅色、工地面為藍色。視圖右上角有指北針,軟件右上方顯示當前比例尺,“標注屬性”功能為實現(xiàn)不同字段的屬性標注,分別有3 種標注樣式。
“采集照片”功能實現(xiàn)采集要素相對應的實景照片,需選中一個要素,點擊該按鈕,則彈出拍照界面,可以調用平板電腦的拍攝功能,采集的照片名稱和選中的要素是多對一的關系。拍照結束,照片保存在樣本數(shù)據(jù)中的photo 文件夾內,若目錄內無photo 文件夾則會自動新建,照片名稱為標識碼+拍照時間。
“興趣點照片”功能實現(xiàn)在選中興趣點之后,點擊該按鈕則打開該興趣點對應的實景照片。
“開關天地圖”功能是在連接無線網(wǎng)的狀態(tài)下,加載數(shù)據(jù)時底圖數(shù)據(jù)可以調用天地圖在線服務,若關閉天地圖,則調用的底圖數(shù)據(jù)為離線tpk 文件。
“全圖顯示”功能實現(xiàn)視圖范圍縮放至全圖,全圖范圍以城管部件點的外接矩形為準。
“圖層管理”功能實現(xiàn)控制城管部件點、城管部件線、興趣點、門前三包4 個矢量圖層顯示和關閉,包括全選、全不選、單選3 種方式。
“測量”功能實現(xiàn)測量長度和測量面積2 種方式,測量結果在軟件的右上方比例尺位置顯示量測結果,長度單位是m,面積單位是m2。
界面右側為編輯屬性欄,可以分別對部件點、部件線、興趣點、門前三包圖層單獨編輯,例如點擊部件點,則鎖定其他圖層,部件點則處于可編輯狀態(tài),編輯的方式包括繪制、選中、保存、刪除4 種。
右側要素屬性顯示框中的“標識碼”為設置不可編輯,其中“錯誤類型”和“錯誤描述”兩欄屬性支持可選列表和自由錄入2 種方式,以保證檢驗描述的規(guī)范性,其中“錯誤描述”可選列表與選擇的“錯誤類型”對應,例如選擇的“錯誤類型”為“部件材質錯誤”,則“錯誤描述”的可選列表為部件材質的選項,若錯誤描述被選擇并進行要素保存后,則該選項自動排序第一位,以便于檢驗人員下一次選擇。
為避免檢驗人員對外業(yè)數(shù)據(jù)進行誤刪,刪除功能僅限對錯誤記錄進行操作,以提高數(shù)據(jù)的安全性。
若在視圖中進行新增繪制要素,軟件會根據(jù)uuid 的規(guī)則自動生成一個32 位唯一文本字符串作為更改要素的標識碼。在視圖中點擊相應位置,選擇“錯誤類型”“錯誤描述”,選擇保存,即可將新增要素保存在對應的shp 圖層中,并顯示到視圖中。
選擇按鈕,實現(xiàn)在圖上進行點選,以點擊位置為中心,周圍5 個像素以內的要素自動被選中,若要素位置很近或者重疊,會有多個要素被選中,則會彈出被選中要素列表提示選擇其中一個進行編輯,選中該要素后進行高亮顯示,并將該要素屬性顯示到右側屬性框中,繼而進行檢查信息編輯,錯誤標識結束,點擊保存,可將“錯誤類型”“錯誤描述”等檢查記錄保存在該要素屬性中。
視圖左方有圓形按鈕為定位功能,支持網(wǎng)絡定位和衛(wèi)星定位2 種方式,使用之前首先將平板的“位置信息”打開,在定位信息穩(wěn)定之后,點擊定位按鈕則視圖會自動縮放到當前位置。
2.3.3 內業(yè)數(shù)據(jù)處理
內業(yè)數(shù)據(jù)處理軟件主要包括外業(yè)質檢前的數(shù)據(jù)準備工作,包括數(shù)據(jù)裁剪、制作tpk 等,前面已經有介紹。內業(yè)處理還包括對外業(yè)檢查記錄的處理工作,即檢查意見記錄表的輸出和整理。
本次檢驗項目的評價標準是參照GB/T 24356《測繪成果質量檢查與驗收》,軟件根據(jù)外業(yè)矢量檢查記錄進行自動化輸出符合CMA 體系的檢查意見記錄表,同時在表中會對每項檢查記錄進行扣分計算,如表1 所示。錯漏分類包括A 類、B 類、C 類、D類4 種,每類對應分數(shù)分別是42 分、12 分、4 分、1分。軟件自動計算可有效避免人工計算的誤差,提高資料整理的準確性和效率。
表1 檢查意見記錄表
鑒于本次系統(tǒng)的設計、實現(xiàn)、應用,在測繪產品的外業(yè)檢驗中采用ArcGIS 移動端開發(fā)技術可以明顯提高工作效率,同時ArcGIS Runtime SDK for Android 100.4 版本能夠實現(xiàn)對本地Shapefile 文件的編輯。相比之前的開發(fā)工具,Android Studio、UI編輯器,具備速度更快、UI 更漂亮、更加智能等多種優(yōu)點,因此ArcGIS for Android 開發(fā)工作更為便捷。隨著平板電腦硬件配置不斷提高,本次采用的華為M5 處理器已經達到八核,移動端設備的硬件性能已經不再是限制移動端軟件開發(fā)的瓶頸,因此在測繪產品外業(yè)巡檢中采用ArcGIS 移動技術的方式是未來發(fā)展的主要趨勢。