com.supermap.chart
类 ChartQuery

java.lang.Object
  继承者 com.supermap.chart.ChartQuery

public class ChartQuery
extends java.lang.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();
                        }
                }
        }
 

方法摘要
static ChartQueryResult[] query(DatasetGroup[] datasetGroups, ChartQueryParameter[] queryParameters, CursorType cursorType)
          查询一个或多个海图数据集分组中符合指定的查询参数的物标对象,并返回相应的记录集。
static ChartQueryResult[] query(DatasetGroup[] datasetGroups, Rectangle2D bounds, ChartQueryParameter[] queryParameters, CursorType cursorType)
          在指定的空间范围内,查询一个或多个海图数据集分组中符合指定的查询参数的物标对象,并返回相应的记录集。
 
从类 java.lang.Object 继承的方法
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

方法详细信息

query

public static ChartQueryResult[] query(DatasetGroup[] datasetGroups,
                                       ChartQueryParameter[] queryParameters,
                                       CursorType cursorType)
查询一个或多个海图数据集分组中符合指定的查询参数的物标对象,并返回相应的记录集。

参数:
datasetGroups - 指定的海图数据集分组数组。至少包含一个数据集分组。
queryParameters - 指定的查询参数数组。至少包含一个查询参数对象。
cursorType - 指定的游标类型。当游标类型为动态时,记录集可以被修改,当游标类型为静态时,记录集为只读。
返回:
海图查询结果数组。
抛出:
java.lang.NullPointerException - 如果 datasetGroups 的长度为 0,或 queryParameters 的长度为 0
示例:
请参见 ChartQuery 类的示例。

query

public static ChartQueryResult[] query(DatasetGroup[] datasetGroups,
                                       Rectangle2D bounds,
                                       ChartQueryParameter[] queryParameters,
                                       CursorType cursorType)
在指定的空间范围内,查询一个或多个海图数据集分组中符合指定的查询参数的物标对象,并返回相应的记录集。

参数:
datasetGroups - 指定的海图数据集分组数组。至少包含一个数据集分组。
bounds - 指定的空间范围。
queryParameters - 指定的查询参数数组。至少包含一个查询参数对象。
cursorType - 指定的游标类型。当游标类型为动态时,记录集可以被修改,当游标类型为静态时,记录集为只读。
返回:
海图查询结果数组。
抛出:
java.lang.NullPointerException - 如果 datasetGroups 的长度为 0,或 queryParameters 的长度为 0
示例:
请参见 ChartQuery 类的示例。