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