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(); } } }
限定符和类型 | 方法和说明 |
---|---|
static ChartQueryResult[] |
query(DatasetGroup[] datasetGroups,
ChartQueryParameter[] queryParameters,
CursorType cursorType)
查询一个或多个海图数据集分组中符合指定的查询参数的物标对象,并返回相应的记录集。
|
static ChartQueryResult[] |
query(DatasetGroup[] datasetGroups,
Rectangle2D bounds,
ChartQueryParameter[] queryParameters,
CursorType cursorType)
在指定的空间范围内,查询一个或多个海图数据集分组中符合指定的查询参数的物标对象,并返回相应的记录集。
|
public static ChartQueryResult[] query(DatasetGroup[] datasetGroups, ChartQueryParameter[] queryParameters, CursorType cursorType)
datasetGroups
- 指定的海图数据集分组数组。至少包含一个数据集分组。queryParameters
- 指定的查询参数数组。至少包含一个查询参数对象。cursorType
- 指定的游标类型。当游标类型为动态时,记录集可以被修改,当游标类型为静态时,记录集为只读。NullPointerException
- 如果 datasetGroups 的长度为 0,或 queryParameters 的长度为 0ChartQuery
类的示例。public static ChartQueryResult[] query(DatasetGroup[] datasetGroups, Rectangle2D bounds, ChartQueryParameter[] queryParameters, CursorType cursorType)
datasetGroups
- 指定的海图数据集分组数组。至少包含一个数据集分组。bounds
- 指定的空间范围。queryParameters
- 指定的查询参数数组。至少包含一个查询参数对象。cursorType
- 指定的游标类型。当游标类型为动态时,记录集可以被修改,当游标类型为静态时,记录集为只读。NullPointerException
- 如果 datasetGroups 的长度为 0,或 queryParameters 的长度为 0ChartQuery
类的示例。Copyright © 2021–2024 SuperMap. All rights reserved.