数据集查询 |
支持数据集缓冲区查询、几何查询、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示例。