喜大普奔!!ArcGIS for Android 100.2 支持本地Shapefile文件的編輯啦!!!

對於Shapfile這一文件格式,ArcGIS Runtime SDK for Android 在100.2.0系列中推出了兩大重磅利好消息:
(1) 實現對本地 Shapfile 文件的加載、顯示和查詢
(2) 實現對本地 Shapefile 文件的編輯,即增刪改操作
毋庸置疑,對於廣大的ArcGIS移動端愛好者而言,支持Shapefile編輯操作絕對是一則振奮人心的好消息。

今天,我們就先來看看在ArcGIS Runtime SDK for Android中如何實現對Shapefile文件的要素添加。

本地Shapefile文件的加載和顯示

Shapefile的加載和顯示主要通過ShapefileFeatureTable和FeatureLayer這兩個類來實現。

// 構建ShapefileFeatureTable,引入本地存儲的shapefile文件
shapefileFeatureTable_Point = new ShapefileFeatureTable(Environment.getExternalStorageDirectory().getAbsolutePath() + "/ArcGIS/shapefile/center.shp");

// 構建FeatureLayer
FeatureLayer featureLayer = new FeatureLayer(shapefileFeatureTable_Point);

// 設置Shapefile文件的渲染方式
featureLayer.setRenderer(new SimpleRenderer(new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 20)));

// 添加到地圖的業務圖層組中
arcGISMap.getOperationalLayers().add(featureLayer);

本地Shapefile文件的編輯(以要素添加爲例)

這裏我們將直接傳入一個固定的點幾何以實現要素的添加。

// 調用isEditable和canAdd方法判斷文件是否支持編輯操作,是否可添加要素;否,則拋出信息
if (shapefileFeatureTable.isEditable()&&shapefileFeatureTable.canAdd()) {

    // 構建新增幾何
    Point mapPoint = new Point(140.0, 39.0, SpatialReference.create(4326));

    // 構建待增加的Feature對象,設置幾何,設置屬性        
    Feature feature = shapefileFeatureTable.createFeature();
    feature.setGeometry(mapPoint);
    feature.getAttributes().put("NAME", "測試點");

    // 調用addFeatureAsync方法增加要素
    final ListenableFuture<Void> addFeatureOper = shapefileFeatureTable.addFeatureAsync(feature);

    // 在操作完成的監聽事件中判斷操作是否成功
    addFeatureOper.addDoneListener(new Runnable() {
        @Override
         public void run() {
             try{
                 addFeatureOper.get();
                 if (addFeatureOper.isDone()){
                     Log.i("ShapefileEdit:", "Feature added!");
                 }
             }catch(InterruptedException interruptedExceptionException){
                // 處理異常
             }catch (ExecutionException executionException){
                // 處理異常
             }
          }
      });
}else{
    Log.i("ShapefileEdit:", "The Shapefile cann't be edited");
}

至此,我們就完成了ArcGIS for Android端 Shapefile文件的離線要素添加功能。
當然,除了要素增加,updateFeatureAsync()和deleteFeatureAsync()等方法則可以實現要素的更新和刪除。這些用法我們將在後續章節中進行講解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章