海图查询类。该类用于根据查询参数查询一个或多个海图数据集分组的记录,并且可以设置查询的空间范围。查询参数通过海图查询参数(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

请参见