数据集编辑

发送反馈


支持数据集新增对象、删除对象、更新对象。编辑结果获取及展示可在主线程和监听器类中两种方式来实现。

数据集新增对象。编辑结果可在主线程中进行获取及展示。

    // 数据集编辑结果
    public EditFeaturesResult result;
    public void AddFeatures() throws InterruptedException, ExecutionException {
        // 构造数据集编辑参数
        EditFeaturesParameters parameters = new EditFeaturesParameters();       
        Point2D[] pts = { new Point2D(-40, 60), new Point2D(-80, 62), new Point2D(-40, 55), new Point2D(-40, 60) };
        Geometry geo = new Geometry();
        geo.type = GeometryType.REGION;
        geo.points = pts;             
        Feature feature = new Feature();
        feature.geometry = geo;        
        Feature[] features = { feature };
        parameters.editType = EditType.ADD;
        parameters.features = features;
        EditFeaturesService service = new EditFeaturesService(
                "http://MyServerIP:8090/iserver/services/data-world/rest/data/datasources/World/datasets/Countries");
        MyEditFeaturesEventListener listener = new MyEditFeaturesEventListener();
        // 和服务端异步通讯
        service.process(parameters, listener);
		// 等待监听器执行完毕
        try {
            listener.waitUntilProcessed();
        } catch (Exception e) {
            e.printStackTrace();
        }
        // 添加要素成功后,获取新增要素的ID值
        int[] desID = result.IDs;
    }
    // 监听器类
    class MyEditFeaturesEventListener extends EditFeaturesEventListener {
        @Override
        public void onEditFeaturesStatusChanged(Object sourceObject, EventStatus status) {
            // 返回结果
            result = (EditFeaturesResult) sourceObject;
        }
    }

数据集编辑对象。编辑结果可在主线程中进行获取。

    // 数据集编辑结果
    public EditFeaturesResult result;
    public void UpdateFeatures() throws InterruptedException, ExecutionException {
        // 构造数据集编辑参数
        EditFeaturesParameters parameters = new EditFeaturesParameters();
        // 编辑SMID =22的要素
        Point2D[] pts = { new Point2D(-40, 60), new Point2D(-80, 62), new Point2D(-40, 55), new Point2D(-40, 60) };
        Geometry geo = new Geometry();
        geo.type = GeometryType.REGION;
        geo.points = pts;       
        geo.id = 22;
        Feature feature = new Feature();
        feature.geometry = geo;
        Feature[] features = { feature };
        parameters.editType = EditType.UPDATE;
        parameters.features = features;
        EditFeaturesService service = new EditFeaturesService(
                "http://MyServerIP:8090/iserver/services/data-world/rest/data/datasources/World/datasets/Countries");
        MyEditFeaturesEventListener listener = new MyEditFeaturesEventListener();
        // 和服务端异步通讯
        service.process(parameters, listener);
		// 等待监听器执行完毕
        try {
            listener.waitUntilProcessed();
        } catch (Exception e) {
            e.printStackTrace();
        }
        // 结果验证:编辑成功,返回的操作结果的表述为:{"succeed": true}        
        assertTrue("Update Features are succeed",result.succeed);
    }
    // 监听器类
    class MyEditFeaturesEventListener extends EditFeaturesEventListener {
        @Override
        public void onEditFeaturesStatusChanged(Object sourceObject, EventStatus status) {
            // 返回结果
            result = (EditFeaturesResult) sourceObject;
        }
    }

数据集删除对象。编辑结果可在主线程中进行获取。

    // 数据集编辑结果
    public EditFeaturesResult result;
    public void DeleteFeatures() throws InterruptedException, ExecutionException {
        // 构造数据集编辑参数
        EditFeaturesParameters parameters = new EditFeaturesParameters();
        // 待删除要素的ID
        int[] ids = { 1, 2 };
        parameters.editType = EditType.DELETE;
        parameters.IDs = ids;
        EditFeaturesService service = new EditFeaturesService(
                "http://MyServerIP:8090/iserver/services/data-world/rest/data/datasources/World/datasets/Countries");
        MyEditFeaturesEventListener listener = new MyEditFeaturesEventListener();
        // 和服务端异步通讯
        service.process(parameters, listener);
		// 等待监听器执行完毕
        try {
            listener.waitUntilProcessed();
        } catch (Exception e) {
            e.printStackTrace();
        }
        // 结果验证:删除成功,返回的操作结果的表述如下:{"succeed": true}       
        assertTrue("Delete Features are succeed",result.succeed);
    }
    // 监听器类
    class MyEditFeaturesEventListener extends EditFeaturesEventListener {
        @Override
        public void onEditFeaturesStatusChanged(Object sourceObject, EventStatus status) {
            // 返回结果
            result = (EditFeaturesResult) sourceObject;
        }
    }

完整示例可参考Demo中的地物编辑EditFeatureDemo示例。