数据集查询

发送反馈


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