com.supermap.chart

类 ChartQuery



  • public class ChartQuery
    extends Object
    海图查询类。该类用于根据查询参数查询一个或多个海图数据集分组的记录,并且可以设置查询的空间范围。查询参数通过海图查询参数(ChartQueryParameter)类设置,包括查询哪些类型的物标、查询的过滤条件以及产品规范物标信息。
    示范代码:
    以下代码示范了如何进行海图查询。

    假设在目录 D:\Data 下存在数据源 Charts.udb,该数据源中存有两个海图的数据集分组:GB4X0000_52000 和 GB4X1111_52000。现想要对这两个数据集分组进行海图查询。要查询的物标为:物标属性 COLOUR 等于 4 的灯标(LIGHTS),物标属性 CATSLC 等于 7 的线状岸线结构物(SLCONS),以及所有的线状、面状障碍物(OBSTRN)。使用如下代码时,请确保存在相应的海图数据。

            /**
             * 海图查询。
             */
            private void queryChartExample()
            {
                    //新建一个工作空间
                    Workspace workspace = new Workspace();
                    
                    //获取数据源
                    DatasourceConnectionInfo info = new DatasourceConnectionInfo("D:/Data/Chart.udb", "ChartQuery", "");
                    Datasource datasource = workspace.getDatasources().open(info);
    
                    //获取要查询的存有海图数据的数据集分组
                    DatasetGroup group1 = datasource.getRootGroup().getChildGroups().get("GB4X0000_52000");
                    DatasetGroup group2 = datasource.getRootGroup().getChildGroups().get("GB4X1111_52000");
                    DatasetGroup[] datasetGroups = new DatasetGroup[] { group1, group2 };
    
                    //灯标,几何类型为点状
                    ChartQueryParameter parameter1 = new ChartQueryParameter();
                    parameter1.setAttributeFilter("COLOUR=4");
                    FeatureInfoSpec featureInfo1 = DictionaryManagerChart.getFeatureInfoSpec("LIGHTS");
                    parameter1.setFeatureInfo(featureInfo1);
    
                    //岸线结构物,其几何类型可能是线、面,这里只查线
                    ChartQueryParameter parameter2 = new ChartQueryParameter();
                    parameter2.setAttributeFilter("CATSLC=7");
                    FeatureInfoSpec featureInfo2 = DictionaryManagerChart.getFeatureInfoSpec("SLCONS");
                    parameter2.setFeatureInfo(featureInfo2);
                    parameter2.setQueryRegion(false);
    
                    //障碍物,其几何类型可能是点、线、面,这里只查线、面状
                    ChartQueryParameter parameter3 = new ChartQueryParameter();
                    parameter3.setAttributeFilter("");
                    FeatureInfoSpec featureInfo3 = DictionaryManagerChart.getFeatureInfoSpec("OBSTRN");
                    parameter3.setFeatureInfo(featureInfo3);
                    parameter3.setQueryPoint(false);
    
                    ChartQueryParameter[] parameters = new ChartQueryParameter[] { parameter1, parameter2, parameter3 };
    
                    //调用 Query 方法进行海图查询,并返回海图查询结果对象数组
                    ChartQueryResult[] results = ChartQuery.query(datasetGroups, parameters, CursorType.STATIC);
    
                    //输出在每个数据集分组中查找到的记录集的记录数
                    for (int i = 0; i < results.length; i++)
                    {
                            ChartQueryResult result = results[i];
                            System.out.println((i + 1) + ":在数据集分组 " + result.getDatasetGroupName() + "中:");
                            for (int j = 0; j < result.getRecordsets().length; j++)
                            {
                                    Recordset recordset = result.getRecordsets()[j];
                                    S57DatasetExtInfo datasetInfo = new S57DatasetExtInfo(recordset.getDataset());
                                    System.out.println("物标" + datasetInfo.getFeatureAcronym() + ":共查询到" + recordset.getRecordCount() + "条记录");
                                    datasetInfo.dispose();
                            }
                    }
            }
     
    • 方法详细资料

      • query

        public static ChartQueryResult[] query(DatasetGroup[] datasetGroups,
                                               ChartQueryParameter[] queryParameters,
                                               CursorType cursorType)
        查询一个或多个海图数据集分组中符合指定的查询参数的物标对象,并返回相应的记录集。
        参数:
        datasetGroups - 指定的海图数据集分组数组。至少包含一个数据集分组。
        queryParameters - 指定的查询参数数组。至少包含一个查询参数对象。
        cursorType - 指定的游标类型。当游标类型为动态时,记录集可以被修改,当游标类型为静态时,记录集为只读。
        返回:
        海图查询结果数组。
        抛出:
        NullPointerException - 如果 datasetGroups 的长度为 0,或 queryParameters 的长度为 0
        示范代码:
        请参见 ChartQuery 类的示例。
      • query

        public static ChartQueryResult[] query(DatasetGroup[] datasetGroups,
                                               Rectangle2D bounds,
                                               ChartQueryParameter[] queryParameters,
                                               CursorType cursorType)
        在指定的空间范围内,查询一个或多个海图数据集分组中符合指定的查询参数的物标对象,并返回相应的记录集。
        参数:
        datasetGroups - 指定的海图数据集分组数组。至少包含一个数据集分组。
        bounds - 指定的空间范围。
        queryParameters - 指定的查询参数数组。至少包含一个查询参数对象。
        cursorType - 指定的游标类型。当游标类型为动态时,记录集可以被修改,当游标类型为静态时,记录集为只读。
        返回:
        海图查询结果数组。
        抛出:
        NullPointerException - 如果 datasetGroups 的长度为 0,或 queryParameters 的长度为 0
        示范代码:
        请参见 ChartQuery 类的示例。

Copyright © 2021–2024 SuperMap. All rights reserved.