数据集查询 |
支持数据集缓冲区查询、几何查询、ID 查询、SQL查询、字段查询及字段统计。处理查询结果及展示可在主线程和监听器类中两种方式来实现。
数据集缓冲区查询。查询结果可在主线程中进行获取及展示。
// 数据集查询结果 public GetFeaturesResult result; public void GetFeaturesByBuffer() throws InterruptedException, ExecutionException { // 构造查询参数 GetFeaturesByBufferParameters parameters = new GetFeaturesByBufferParameters(); String[] dtnames = { "World:Rivers" }; Point2D[] pts = { new Point2D(0, 0), new Point2D(0, 5), new Point2D(5, 5), new Point2D(5, 0) }; Geometry geo = new Geometry(); geo.points = pts; geo.type = GeometryType.REGION; parameters.datasetNames = dtnames; parameters.bufferDistance = 100; parameters.geometry = geo; parameters.attributeFilter = "SMID<10"; GetFeaturesByBufferService service = new GetFeaturesByBufferService("http://MyServerIP:8090/iserver/services/data-world/rest/data"); MyGetFeaturesEventListener listener = new MyGetFeaturesEventListener(); // 和服务端异步通讯 service.process(parameters, listener); // 等待监听器执行完毕 try { listener.waitUntilProcessed(); } catch (Exception e) { e.printStackTrace(); } // 处理查询结果 int querycount = result.featureCount; Feature[] queryfeatures=result.features; String[] queryfeatureUriList=result.featureUriList; } // 监听器类 class MyGetFeaturesEventListener extends GetFeaturesEventListener { @Override public void onGetFeaturesStatusChanged(Object sourceObject, EventStatus status) { // 返回结果 result = (GetFeaturesResult) sourceObject; } }
数据集几何查询。查询结果可在监听器类中进行获取及展示。
// 数据集查询结果 public GetFeaturesResult result; public void GetFeaturesByGeometry() { // 构造查询参数 GetFeaturesByGeometryParameters parameters = new GetFeaturesByGeometryParameters(); String[] dtnames = { "World:Ocean" }; Point2D[] pts = { new Point2D(-99.13, -41.21) }; Geometry geo = new Geometry(); geo.points = pts; geo.type = GeometryType.POINT; parameters.datasetNames = dtnames; parameters.spatialQueryMode = SpatialQueryMode.INTERSECT; parameters.geometry = geo; GetFeaturesByGeometryService service = new GetFeaturesByGeometryService("http://MyServerIP:8090/iserver/services/data-world/rest/data"); MyGetFeaturesEventListener listener = new MyGetFeaturesEventListener(); // 和服务端异步通讯 service.process(parameters, listener); } // 监听器类 class MyGetFeaturesEventListener extends GetFeaturesEventListener { @Override public void onGetFeaturesStatusChanged(Object sourceObject, EventStatus status) { // 返回结果 result = (GetFeaturesResult) sourceObject; // 处理查询结果 int querycount = result.featureCount; Feature[] queryfeatures=result.features; String[] queryfeatureUriList=result.featureUriList; } }
数据集ID查询。查询结果可在主线程中进行获取及展示。
// 数据集查询结果 public GetFeaturesResult result; public void GetFeaturesByIDs() throws InterruptedException, ExecutionException { // 构造查询参数 GetFeaturesByIDsParameters parameters = new GetFeaturesByIDsParameters(); String[] dtnames = { "World:Rivers" }; int[] ids = { 1, 2, 5 }; parameters.datasetNames = dtnames; parameters.IDs = ids; GetFeaturesByIDsService service = new GetFeaturesByIDsService("http://MyServerIP:8090/iserver/services/data-world/rest/data"); MyGetFeaturesEventListener listener = new MyGetFeaturesEventListener(); // 和服务端异步通讯 service.process(parameters, listener); // 等待监听器执行完毕 try { listener.waitUntilProcessed(); } catch (Exception e) { e.printStackTrace(); } // 处理查询结果 int querycount = result.featureCount; Feature[] queryfeatures=result.features; String[] queryfeatureUriList=result.featureUriList; } // 监听器类 class MyGetFeaturesEventListener extends GetFeaturesEventListener { @Override public void onGetFeaturesStatusChanged(Object sourceObject, EventStatus status) { // 返回结果 result = (GetFeaturesResult) sourceObject; } }
数据集SQL查询。查询结果可在主线程中进行获取及展示。
// 数据集查询结果 public GetFeaturesResult result; public void GetFeaturesBySQL() throws InterruptedException, ExecutionException { // 构造查询参数 GetFeaturesBySQLParameters parameters = new GetFeaturesBySQLParameters(); String[] dtnames = { "World:Rivers" }; QueryParameter query=new QueryParameter(); query.attributeFilter="SMID<10"; parameters.queryParameter=query; parameters.datasetNames = dtnames; GetFeaturesBySQLService service = new GetFeaturesBySQLService("http://MyServerIP:8090/iserver/services/data-world/rest/data"); MyGetFeaturesEventListener listener = new MyGetFeaturesEventListener(); // 和服务端异步通讯 service.process(parameters, listener); // 等待监听器执行完毕 try { listener.waitUntilProcessed(); } catch (Exception e) { e.printStackTrace(); } // 处理查询结果 int querycount = result.featureCount; Feature[] queryfeatures=result.features; String[] queryfeatureUriList=result.featureUriList; } // 监听器类 class MyGetFeaturesEventListener extends GetFeaturesEventListener { @Override public void onGetFeaturesStatusChanged(Object sourceObject, EventStatus status) { // 返回结果 result = (GetFeaturesResult) sourceObject; } }
数据集字段查询。查询结果可在主线程中进行获取。
// 数据集字段结果 public GetFieldsResult result; public void GetFields() throws InterruptedException, ExecutionException { // 构造查询参数 FieldParameters parameters = new FieldParameters(); parameters.datasource = "World"; parameters.dataset = "Ocean"; GetFieldsService service = new GetFieldsService("http://MyServerIP:8090/iserver/services/data-world/rest/data"); MyGetFieldsEventListener listener = new MyGetFieldsEventListener(); // 和服务端异步通讯 service.process(parameters, listener); // 等待监听器执行完毕 try { listener.waitUntilProcessed(); } catch (Exception e) { e.printStackTrace(); } // 处理查询结果 String[] queryFieldNames=result.fieldNames; String[] queryChildUriList=result.childUriList; } // 监听器类 class MyGetFieldsEventListener extends GetFieldsEventListener { @Override public void onGetFieldsStatusChanged(Object sourceObject, EventStatus status) { // 返回结果 result = (GetFieldsResult) sourceObject; } }
数据集字段统计。查询结果可在主线程中进行获取。
// 数据集字段统计结果 public FieldStatisticResult result; public void FieldStatistic() throws InterruptedException, ExecutionException { // 构造查询参数 FieldParameters parameters = new FieldParameters(); parameters.datasource = "World"; parameters.dataset = "Ocean"; parameters.field = "WRLD30_ID"; parameters.statisticMode = "AVERAGE"; FieldStatisticService service = new FieldStatisticService("http://MyServerIP:8090/iserver/services/data-world/rest/data"); MyFieldStatisticEventListener listener = new MyFieldStatisticEventListener(); // 和服务端异步通讯 service.process(parameters, listener); // 等待监听器执行完毕 try { listener.waitUntilProcessed(); } catch (Exception e) { e.printStackTrace(); } // 字段统计结果获取 String statisticMode=result.mode; double statisticresult=result.result; } // 监听器类 class MyFieldStatisticEventListener extends FieldStatisticEventListener { @Override public void onFieldStatisticStatusChanged(Object sourceObject, EventStatus status) { // 返回结果 result = (FieldStatisticResult) sourceObject; } }
完整示例可参考Demo中的数据查询DataQueryDemo示例。