• GIS开发随笔(5)——StudioAT.MapNet.DLL中部分控件的用法


    在《GIS开发随笔(4)——使用MapNet控件和DataGrid实现图层数据互相查询》中我们讲述了如何使用MapNet控件来完成点、线、面的属性获取代码,下面我们就来研究一下在地图中,使用StudioAT.MapNet.DLL中提供的和MapNet控件绑定的几个主要的画方面、圆面、不规则图形面的工具是如何统计其中的元素的。通过MapNet控件的官方网站上的帮助页面http://www.studioat.it/StudioAT/Help/MapNet/MapNetWebHelp.htm我们可以知道这些工具的主要实现方法。
    1、画方面工具,工具名称“SelectByCircle”:
    2、画圆面工具,工具名称“SelectByRect”:
    3、画不规则图形面工具,工具名称“SelectByPolygon”:
    其中将这几个控件的同一个属性“MapNetControl”的值都设置为所要操控的MapNet控件名上,即将这几个控件和所要控制的MapNet控件绑定。
    在MapNet控件的“SelectByShape”事件中添加类似下面的代码:
     1private void MapNet1_SelectByShape(StudioAT.IGeometry shape)
     2        {
     3            IMapNet mapNet = this.MapNet1;
     4            ICollectionLayers myICL = mapNet.CollectionLayers;
     5            IGetFeatures myIGF = null;
     6            //根据图层读取数据到DataSet 
     7            ILayer myIL = myICL.FindById(this.DDL_LayerChoose.SelectedItem.Value);
     8            ISpatialFilter myISF = new SpatialFilter(shape, ArcXML.enuSpatialFilterRelation.area_intersection);
     9            ISpatialQuery2 myISQ2 = new SpatialQuery();
    10            myISQ2.SpatialFilter = myISF;
    11            DataSet myDs = myIL.Recordset(myISQ2,truefalse,myIGF);
    12            //更改列名
    13            try
    14            {
    15                                int GIS_IDindex = -1;
    16                int IDindex = -1;
    17                for (int k = 0; k < myDs.Tables[0].Columns.Count; k++)
    18                {
    19                    switch (myDs.Tables[0].Columns[k].ColumnName)
    20                    {
    21                        case "#ID#":
    22                            myDs.Tables[0].Columns[k].ColumnName = "序号";
    23                            IDindex = k;
    24                            break;
    25                        case "EnvelopeXMin":
    26                            myDs.Tables[0].Columns[k].ColumnName = "最小经度";
    27                            break;
    28                        case "EnvelopeXMax":
    29                            myDs.Tables[0].Columns[k].ColumnName = "最大经度";
    30                            break;
    31                        case "EnvelopeYMin":
    32                            myDs.Tables[0].Columns[k].ColumnName = "最小纬度";
    33                            break;
    34                        case "EnvelopeYMax":
    35                            myDs.Tables[0].Columns[k].ColumnName = "最大纬度";
    36                            break;
    37                        case "NAME":
    38                            myDs.Tables[0].Columns[k].ColumnName = "名称";
    39                            break;
    40                        case "GIS_ID":
    41                            GIS_IDindex = k;
    42                            break;
    43                        case "REMARK":
    44                            myDs.Tables[0].Columns[k].ColumnName = "备注";
    45                            break;
    46                        default:
    47                            break;
    48                    }

    49                }

    50    //下面的Grid并非是.Net2003中自己的Grid而是第三方控件所提供的名称:UWG_Result            
                            UWG_Result.DataSource = myDs;    

    51                UWG_Result.DataBind();
    52                UWG_Result.Columns[GIS_IDindex].Hidden = true;
    53                UWG_Result.Columns[IDindex].Hidden = true;
    54            }

    55            catch (Exception ex)
    56            {
    57                PageClass myPC = new PageClass();
    58                myPC.Alert(ex.Message,this);
    59            }

    60        }
    这样无论是画圆面、画方面还是画不规则图形面都会触发上述事件,从而能统计出在DropDownList控件中(上诉中有“DDL_LayerChoose”名称的为此控件)所选择的图层元素在所画的“shape”面中的个数以及每个元素的详细信息。
          不知道对大家是否有帮助,因为时间仓促这次的随笔就写到这里了,对上述代码还有什么独特见解的可以发表评论。
  • 相关阅读:
    第二次作业
    《自动化技术中的进给电气传动》读书笔记1.1-1.2
    证券投资分析
    微信官方文档概述
    联想拯救者Y7000电池无法充电问题
    Ubuntu用户权限管理
    证券市场基础知识
    Markdown All in One使用教程
    Markdown学习笔记
    第九周
  • 原文地址:https://www.cnblogs.com/lijigang/p/666180.html
Copyright © 2020-2023  润新知