Exemplo n.º 1
0
        /// <summary>
        /// 填充目标图层下拉框
        /// </summary>
        /// <param name="pLayer"></param>
        /// <param name="ricb"></param>
        private void AddLayersToTargetLayerComboBox(ILayer pLayer, RepositoryItemComboBox ricb)
        {
            if (pLayer is IGroupLayer)//如果是组合图层
            {
                ICompositeLayer groupLayer = (ICompositeLayer)pLayer;

                for (int j = 0; j < groupLayer.Count; j++)
                {
                    //递归
                    AddLayersToTargetLayerComboBox(groupLayer.get_Layer(j), ricb);
                }
            }
            else if (pLayer is IFeatureLayer) //如果是地理要素图层
            {
                //排除CAD图层
                if ((pLayer as IFeatureLayer).DataSourceType == "CAD Annotation Feature Class" || (pLayer as IFeatureLayer).DataSourceType == "CAD Point Feature Class" ||
                    (pLayer as IFeatureLayer).DataSourceType == "CAD Polyline Feature Class" || (pLayer as IFeatureLayer).DataSourceType == "CAD Polygon Feature Class")
                {
                    return;
                }
                //判断图层是否可编辑
                IDatasetEditInfo pEdit = (IDatasetEditInfo)((pLayer as IFeatureLayer).FeatureClass);
                if (!pEdit.CanEdit)
                {
                    return;
                }
                //将图层添加进ComBox
                Item item = new Item(pLayer.Name, pLayer);
                ricb.Items.Add(item);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 初始化控件
        /// </summary>
        private void initControls()
        {
            IFeatureLayer pFeaLayer = (IFeatureLayer)m_FeaLay;

            if (pFeaLayer == null)
            {
                return;
            }
            IDatasetEditInfo pEdit     = (IDatasetEditInfo)pFeaLayer.FeatureClass;
            ILayerEffects    pLayerEff = (ILayerEffects)m_FeaLay;

            //数据源
            IDataLayer        pDataLayer   = (IDataLayer)m_FeaLay;
            IDatasetName      pDatasetName = pDataLayer.DataSourceName as IDatasetName;
            IWorkspaceName    pWSName      = pDatasetName.WorkspaceName;
            IFeatureClassName pFCName      = pDatasetName as IFeatureClassName;

            string strDataSourceType = "";
            string strFeatureDataSet = "";

            if (pFCName.FeatureDatasetName == null)
            {
                strDataSourceType = "数据类型 :" + "个人空间数据库 要素类";
                strFeatureDataSet = "数 据 集 :" + "无";
            }
            else
            {
                strDataSourceType = "数据类型 :" + pFCName.FeatureDatasetName.Category + "(" + pFeaLayer.DataSourceType + ")";
                strFeatureDataSet = "数 据 集 :" + pFCName.FeatureDatasetName.Name;
            }
            string strFeatureClass = "要 素 类 :" + pDatasetName.Name;
            string strFeatureType  = "要素类型 :" + pFCName.FeatureType.ToString();
            string strGeometyrType = "几何类型 :" + pFCName.ShapeType.ToString();
            string strLocationPath = "位    置 :" + pWSName.PathName;
            string strRelativeBase = "相对路径 :" + pDataLayer.RelativeBase;

            this.txtSoureFile.Text = strDataSourceType + "\r\n" +
                                     strFeatureDataSet + "\r\n" +
                                     strFeatureClass + "\r\n" +
                                     strFeatureType + "\r\n" +
                                     strGeometyrType + "\r\n" +
                                     strRelativeBase + "\r\n" +
                                     strLocationPath;

            this.txtXMin.Text = m_FeaLay.AreaOfInterest.XMin.ToString(".##");
            this.txtXMax.Text = m_FeaLay.AreaOfInterest.XMax.ToString(".##");
            this.txtYMin.Text = m_FeaLay.AreaOfInterest.YMin.ToString(".##");
            this.txtYMax.Text = m_FeaLay.AreaOfInterest.YMax.ToString(".##");

            //基本信息
            this.txtLayerName.Text = m_FeaLay.Name;
            if (pEdit != null)
            {
                this.chkEdit.Checked = pEdit.CanEdit;
            }

            if (m_FeaLay.FeatureClass != null)
            {
                int dfIndex = -1;
                this.chkVisible.Checked = pFeaLayer.Visible;
                this.cboDisplayField.Properties.Items.Clear();

                for (int i = 0; i < m_FeaLay.FeatureClass.Fields.FieldCount; i++)
                {
                    IField pField = m_FeaLay.FeatureClass.Fields.get_Field(i);
                    if (pField.Name == pFeaLayer.DisplayField)
                    {
                        dfIndex = i;
                    }
                    Class.Item item = new Class.Item(pField.AliasName, pField.Name);
                    cboDisplayField.Properties.Items.Add(item);
                }
                this.cboDisplayField.SelectedIndex = dfIndex;
                this.txtTransparency.Text          = pLayerEff.Transparency.ToString();

                //this.txtScaleMin.Text = (pFeaLayer as ILayerGeneralProperties).LastMinimumScale.ToString();
                //this.txtScaleMax.Text = (pFeaLayer as ILayerGeneralProperties).LastMaximumScale.ToString();
                this.txtScaleMin.Text = pFeaLayer.MinimumScale.ToString();
                this.txtScaleMax.Text = pFeaLayer.MaximumScale.ToString();

                this.txtDescription.Text = (pFeaLayer as ILayerGeneralProperties).LayerDescription;
                if (pFeaLayer.MinimumScale == 0 && pFeaLayer.MaximumScale == 0)
                {
                    this.rdoGroupScale.SelectedIndex = 0;
                    txtScaleMin.Enabled = false;
                    txtScaleMax.Enabled = false;
                }
                else
                {
                    this.rdoGroupScale.SelectedIndex = 1;
                    txtScaleMin.Enabled = true;
                    txtScaleMax.Enabled = true;
                }

                chkShowTip.Checked = pFeaLayer.ShowTips;
                if (pFeaLayer is IGeoFeatureLayer)
                {
                    chkLabelAll.Checked = (pFeaLayer as IGeoFeatureLayer).DisplayAnnotation;
                }
                chkScaleSymbol.Checked = pFeaLayer.ScaleSymbols;

                m_pTableFields = pFeaLayer as ITableFields;

                //字段信息
                string strType = "";

                for (int i = 0; i < m_pTableFields.FieldCount; i++)
                {
                    IField     pField     = m_pTableFields.get_Field(i);
                    IFieldInfo pFieldInfo = m_pTableFields.get_FieldInfo(i);

                    switch (pField.Type)//类型
                    {
                    case esriFieldType.esriFieldTypeBlob:
                        strType = "二进制块";
                        break;

                    case esriFieldType.esriFieldTypeDate:
                        strType = "日期型";
                        break;

                    case esriFieldType.esriFieldTypeDouble:
                        strType = "双精度";
                        break;

                    case esriFieldType.esriFieldTypeGeometry:
                        strType = "几何形体";
                        break;

                    case esriFieldType.esriFieldTypeGlobalID:
                        strType = "GlobalID";
                        break;

                    case esriFieldType.esriFieldTypeGUID:
                        strType = "GUID";
                        break;

                    case esriFieldType.esriFieldTypeOID:
                        strType = "OID";
                        break;

                    case esriFieldType.esriFieldTypeRaster:
                        strType = "栅格";
                        break;

                    case esriFieldType.esriFieldTypeSingle:
                        strType = "单精度";
                        break;

                    case esriFieldType.esriFieldTypeSmallInteger:
                        strType = "短整形";
                        break;

                    case esriFieldType.esriFieldTypeString:
                        strType = "字符型";
                        break;
                    }
                    TreeListNode node = this.listViewFieldInfo.Nodes.Add(new object[] { pField.AliasName, pField.Name, strType });
                    node.Checked = pFieldInfo.Visible;
                }

                //初始化过滤条件面板
                initFilterCondition();
            }
        }