海图查询类。该类用于根据查询参数查询一个或多个海图数据集分组的记录,并且可以设置查询的空间范围。查询参数通过海图查询参数(ChartQueryParameter)类设置,包括查询哪些类型的物标、查询的过滤条件以及产品规范物标信息。
命名空间:
SuperMap.Chart程序集: SuperMap.Chart (in SuperMap.Chart)
版本: dll
语法
C# |
---|
public static class ChartQuery |
备注
示例
以下代码示范了如何进行海图查询。
假设在目录 D:\Data 下存在数据源 Charts.udb,该数据源中存有两个海图的数据集分组:GB4X0000_52000 和 GB4X1111_52000。现想要对这两个数据集分组进行海图查询。要查询的物标为:物标属性 COLOUR 等于 4 的灯标(LIGHTS),物标属性 CATSLC 等于 7 的线状岸线结构物(SLCONS),以及所有的线状、面状障碍物(OBSTRN)。使用如下代码时,请确保存在相应的海图数据。
CopyC#
/// <summary> /// 海图查询。 /// </summary> private void QueryChartExample() { //新建一个工作空间 Workspace workspace = new Workspace(); //获取数据源 DatasourceConnectionInfo info = new DatasourceConnectionInfo(@"D:\Data\Chart.udb", "ChartQuery", ""); Datasource datasource = workspace.Datasources.Open(info); //获取要查询的存有海图数据的数据集分组 DatasetGroup group1 = datasource.RootGroup.ChildGroups["GB4X0000_52000"]; DatasetGroup group2 = datasource.RootGroup.ChildGroups["GB4X1111_52000"]; DatasetGroup[] datasetGroups = new DatasetGroup[] { group1,group2}; //灯标,几何类型为点状 ChartQueryParameter parameter1 = new ChartQueryParameter(); parameter1.AttributeFilter = "COLOUR=4"; FeatureInfoSpec featureInfo1 = DictionaryManagerChart.GetFeatureInfoSpec("LIGHTS"); parameter1.FeatureInfo=featureInfo1; //岸线结构物,其几何类型可能是线、面,这里只查线 ChartQueryParameter parameter2 = new ChartQueryParameter(); parameter2.AttributeFilter = "CATSLC=7"; FeatureInfoSpec featureInfo2 = DictionaryManagerChart.GetFeatureInfoSpec("SLCONS"); parameter2.FeatureInfo = featureInfo2; parameter2.IsQueryRegion = false; //障碍物,其几何类型可能是点、线、面,这里只查线、面状 ChartQueryParameter parameter3 = new ChartQueryParameter(); parameter3.AttributeFilter = ""; FeatureInfoSpec featureInfo3 = DictionaryManagerChart.GetFeatureInfoSpec("OBSTRN"); parameter3.FeatureInfo = featureInfo3; parameter3.IsQueryPoint = false; ChartQueryParameter[] parameters = new ChartQueryParameter[] { parameter1,parameter2,parameter3}; //调用 Query 方法进行海图查询,并返回海图查询结果对象数组 ChartQueryResult[] results = ChartQuery.Query(datasetGroups, parameters, CursorType.Static); //输出在每个数据集分组中查找到的记录集的记录数 for (Int32 i = 0; i < results.Length; i++) { ChartQueryResult result=results[i]; Console.WriteLine((i+1) +":在数据集分组 "+ result.DatasetGroupName+"中:"); for (Int32 j = 0; j < result.Recordsets.Length; j++) { Recordset recordset = result.Recordsets[j]; S57DatasetExtInfo datasetInfo = new S57DatasetExtInfo(recordset.Dataset); Console.WriteLine("物标" + datasetInfo.FeatureAcronym + ":共查询到" + recordset.RecordCount + "条记录"); } } }
继承层次
System..::.Object
SuperMap.Chart..::.ChartQuery
SuperMap.Chart..::.ChartQuery