数据集编辑 |
支持数据集新增对象、删除对象、更新对象。编辑结果获取及展示可在主线程和监听器类中两种方式来实现。
数据集新增对象。编辑结果可在主线程中进行获取及展示。
// 数据集编辑结果 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示例。