コード例 #1
0
        private void FrmSelectField_Load(object sender, EventArgs e)
        {
            cbField.Items.Clear();
            if (m_pFeatureLayer == null || m_pFeatureLayer.FeatureClass == null)
            {
                return;
            }
            IFeatureClass pFeatureClass = m_pFeatureLayer.FeatureClass;

            ILayerFields pLayerFields = m_pFeatureLayer as ILayerFields;

            for (int k = 0; k < pLayerFields.FieldCount; k++)
            {
                IField pField     = pLayerFields.get_Field(k);
                string sFieldName = pField.Name;
                if (sFieldName.Equals("FID", StringComparison.OrdinalIgnoreCase) || sFieldName.Equals("OBJECTID", StringComparison.OrdinalIgnoreCase) ||
                    sFieldName.Equals("SHAPE", StringComparison.OrdinalIgnoreCase) || sFieldName.Equals("SHAPE_Length", StringComparison.OrdinalIgnoreCase) ||
                    sFieldName.Equals("SHAPE_Area", StringComparison.OrdinalIgnoreCase))
                {
                    continue;
                }
                cbField.Items.Add(pField.Name);
            }
            if (cbField.Items.Count > 0)
            {
                cbField.SelectedIndex = 0;
            }
            cbField.SelectedIndex = cbField.FindString(m_strDefFieldName);
            if (cbField.SelectedIndex != -1)
            {
                cbField.SelectedIndex = 0;
            }
        }
コード例 #2
0
        /// <summary>
        /// 选择了别的图层
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void comboBoxLayers_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (this.pEnumLayer == null)
            {
                return;
            }

            IField pField;
            int    currentFieldType;

            this.pEnumLayer.Reset();
            this.listBoxFields.Items.Clear();
            for (this.pLayer = this.pEnumLayer.Next(); this.pLayer != null; this.pLayer = this.pEnumLayer.Next())
            {
                if (this.pLayer.Name != this.comboBoxLayers.Text)
                {
                    continue;
                }
                this.pLayerFields = this.pLayer as ILayerFields;
                for (int i = 0; i < this.pLayerFields.FieldCount; i++)
                {
                    pField           = this.pLayerFields.get_Field(i);
                    currentFieldType = (int)pField.Type;
                    if (currentFieldType > 5)
                    {
                        continue;                      //不是可以查询的字段类型
                    }
                    this.listBoxFields.Items.Add(pField.Name);
                }
                break;
            }
            this.pFeatureLayer   = this.pLayer as IFeatureLayer;
            this.labelLayer.Text = this.comboBoxLayers.Text;
        }
コード例 #3
0
        private void InitDataLayer()
        {
            IFeatureLayer featureLayer = GetFeatLayerByName(comboBoxLayer.Text);
            //Query inteface for ILayerFields
            ILayerFields layerFields = (ILayerFields)featureLayer;

            int j = 0;

            comboBoxField.Items.Clear();
            comboBoxField.Enabled = true;
            //Loop through the fields
            for (int i = 0; i <= layerFields.FieldCount - 1; i++)
            {
                //Get IField interface
                IField field = layerFields.get_Field(i);
                //If the field is not the shape field
                if (field.Type != esriFieldType.esriFieldTypeGeometry)
                {
                    //Add field name to the control
                    comboBoxField.Items.Insert(j, field.Name);
                    //If the field name is the display field
                    if (field.Name == featureLayer.DisplayField)
                    {
                        //Select the field name in the control
                        comboBoxField.SelectedIndex = j;
                    }
                    j = j + 1;
                }
            }
        }
コード例 #4
0
ファイル: AEFieldComboBox.cs プロジェクト: moosexu/GISBase
        public void AddItems(IFeatureLayer m_pFeatureLayer)
        {
            Items.Clear();
            if (m_pFeatureLayer == null || m_pFeatureLayer.FeatureClass == null)
            {
                return;
            }
            IFeatureClass pFeatureClass = m_pFeatureLayer.FeatureClass;

            ILayerFields pLayerFields = m_pFeatureLayer as ILayerFields;

            for (int k = 0; k < pLayerFields.FieldCount; k++)
            {
                IField pField = pLayerFields.get_Field(k);
                if (GeoBaseLib.IsSysField(pField.Name))
                {
                    continue;
                }
                Items.Add(pField.Name);
            }
            if (Items.Count > 0)
            {
                SelectedIndex = 0;
            }
        }
コード例 #5
0
ファイル: uctrFields.cs プロジェクト: siszoey/geosufan
        /// <summary>
        /// 保存字段更改
        /// </summary>
        public void SaveFieldChange()
        {
            ILayerFields pLayerFields = (ILayerFields)m_pCurrentLayer;

            if (cboFields == null)
            {
                return;
            }
            cboFields.Items.Clear();
            cboFields.Text = null;
            //遍历所有的Item,并根据其Checked属性设置字段的显示与否
            for (int i = 0; i < lstFieldsView.Items.Count; i++)
            {
                IField pField;
                pField = lstFieldsView.Items[i].Tag as IField;
                IFieldInfo   pFieldInfo = pLayerFields.get_FieldInfo(i);
                ListViewItem fieldItem  = lstFieldsView.Items[i];
                pFieldInfo.Visible = fieldItem.Checked;
                if (fieldItem.Checked)
                {
                    cboFields.Items.Add(fieldItem.Name);
                }
            }
            if (cboFields.Items.Count > 0)
            {
                cboFields.SelectedIndex = 0;
            }
        }
コード例 #6
0
        private void LayerDisplaySetCtrl_Load(object sender, EventArgs e)
        {
            this.chkShowMapTip.Checked = this.ilayer_0.ShowTips;
            if (this.ilayer_0 is ILayerEffects)
            {
                this.txtPercent.Text = (this.ilayer_0 as ILayerEffects).Transparency.ToString();
            }
            else
            {
                this.txtPercent.Enabled = false;
            }
            if (this.ilayer_0 is IFeatureLayer)
            {
                this.chkScaleSymbols.Checked = (this.ilayer_0 as IFeatureLayer2).ScaleSymbols;
                this.chkScaleSymbols.Enabled = true;
                this.chkShowMapTip.Enabled   = true;
            }
            else
            {
                this.chkScaleSymbols.Enabled = false;
                this.chkShowMapTip.Enabled   = true;
            }
            ILayerFields fields = this.ilayer_0 as ILayerFields;

            this.cboFields.Properties.Items.Clear();
            this.cboFields.Properties.Items.Add("<无>");
            if (this.ilayer_0 is IHotlinkContainer)
            {
                int    num2         = 0;
                string hotlinkField = (this.ilayer_0 as IHotlinkContainer).HotlinkField;
                this.HyperLinkGroup.Visible = true;
                for (int i = 0; i < fields.FieldCount; i++)
                {
                    IField     field = fields.get_Field(i);
                    IFieldInfo info  = fields.get_FieldInfo(i);
                    if ((field.Type == esriFieldType.esriFieldTypeString) && info.Visible)
                    {
                        this.cboFields.Properties.Items.Add(new FieldWrapEx(field, info));
                        if (field.Name == hotlinkField)
                        {
                            num2 = this.cboFields.Properties.Items.Count - 1;
                        }
                    }
                }
                this.cboFields.SelectedIndex         = num2;
                this.rdoHyperLinkeType.SelectedIndex = (int)(this.ilayer_0 as IHotlinkContainer).HotlinkType;
            }
            else
            {
                this.HyperLinkGroup.Visible = false;
            }
            this.bool_0 = true;
        }
コード例 #7
0
        public SelectByAttribute(ILayer player)
        {
            InitializeComponent();
            this.featureLayer = (IFeatureLayer)player as IFeatureLayer;
            ILayerFields layerFields = (ILayerFields)featureLayer;

            for (int i = 0; i < layerFields.FieldCount; i++)
            {
                IField field = layerFields.get_Field(i);
                comboBox1.Items.Add(field.Name);
            }
        }
コード例 #8
0
        private bool getElevationTableAndField(ref Dictionary <int, string> FeatureLayerIDAndFieldNamesList, ref List <string> ElevationLayerNames)
        {
            IMap map = ArcMap.Document.FocusMap;
            // get the elevation layers in the focus map
            int        iLayerPos  = 0; //relying on layer index
            IEnumLayer enumLayers = map.get_Layers(null, true);
            ILayer     pLayer     = enumLayers.Next();

            while (pLayer != null)
            {
                iLayerPos++;//use the TOC index
                if (pLayer is ICadastralFabricSubLayer2)
                {
                    pLayer = enumLayers.Next();
                    continue;
                }
                if (!(pLayer is IFeatureLayer))
                {//filter for feature layers only
                    pLayer = enumLayers.Next();
                    continue;
                }

                ILayerFields pLyrFlds = pLayer as ILayerFields;
                for (int i = 0; i < pLyrFlds.FieldCount; i++)
                {
                    if (pLyrFlds.get_Field(i).Type == esriFieldType.esriFieldTypeDouble)
                    {
                        IFieldInfo pFldInfo = pLyrFlds.get_FieldInfo(i);
                        if (!pFldInfo.Visible)
                        {
                            continue;
                        }

                        string sFieldName = pLyrFlds.get_Field(i).Name;
                        if (sFieldName.ToLower().Contains("elevation") || sFieldName.ToLower() == ("z") || sFieldName.ToLower().Contains("height"))
                        {
                            if (!FeatureLayerIDAndFieldNamesList.ContainsKey(iLayerPos))
                            {
                                FeatureLayerIDAndFieldNamesList.Add(iLayerPos, sFieldName);
                                ElevationLayerNames.Add(pLayer.Name);
                            }
                            else
                            {
                                FeatureLayerIDAndFieldNamesList[iLayerPos] += "," + sFieldName;
                            }
                        }
                    }
                }
                pLayer = enumLayers.Next();
            }
            return(false);
        }
コード例 #9
0
        private void FormAtrribute_Load(object sender, EventArgs e)
        {
            try
            {
                pFeatureLayer = pLayer as IFeatureLayer;
                pFeatureClass = pFeatureLayer.FeatureClass;
                pLayerFields  = pFeatureLayer as ILayerFields;
                DataSet    ds = new DataSet("dsTest");
                DataTable  dt = new DataTable(pFeatureLayer.Name);
                DataColumn dc = null;
                for (int i = 0; i < pLayerFields.FieldCount; i++)
                {
                    dc = new DataColumn(pLayerFields.get_Field(i).Name);
                    //if (pLayerFields.get_Field(i).Editable == true)
                    //    dc.ReadOnly = false;
                    //else
                    //    dc.ReadOnly = true;

                    dt.Columns.Add(dc);
                    dc = null;
                }
                IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, false);
                IFeature       pFeature       = pFeatureCursor.NextFeature();
                while (pFeature != null)
                {
                    DataRow dr = dt.NewRow();
                    for (int j = 0; j < pLayerFields.FieldCount; j++)
                    {
                        if (pLayerFields.FindField(pFeatureClass.ShapeFieldName) == j)
                        {
                            dr[j] = pFeatureClass.ShapeType.ToString();
                        }
                        else
                        {
                            dr[j] = pFeature.get_Value(j);
                        }
                    }
                    dt.Rows.Add(dr);
                    pFeature = pFeatureCursor.NextFeature();
                }
                dataGridView1.DataSource = dt;
            }
            catch (Exception exc)
            {
                MessageBox.Show("读取属性表失败:" + exc.Message);
                this.Dispose();
            }
            finally
            {
                //this.Close();
            }
        }
コード例 #10
0
        /// <summary>
        /// CellEndEdit
        /// can't edit existing fields' properties in this mode
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            string msg = String.Format("Finished Editing Cell at ({0}, {1})", e.ColumnIndex, e.RowIndex);

            this.Text = msg;

            ILayerFields layerfields = currentLayer as ILayerFields;
            int          num_fields  = layerfields.FieldCount;

            if (e.RowIndex < num_fields)
            {
                MessageBox.Show("You are not allowed to edit existing fields' names");
                this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = before;
            }
        }
コード例 #11
0
        private void attributeTable_Load(object sender, EventArgs e)
        {
            try
            {
                pFeatureLayer = pLayer as IFeatureLayer;
                pFeatureClass = pFeatureLayer.FeatureClass;
                pLayerFields  = pFeatureLayer as ILayerFields;
                DataSet   ds = new DataSet("dsTest");
                DataTable dt = new DataTable(pFeatureLayer.Name);

                DataColumn dc = null;
                for (int i = 0; i < pLayerFields.FieldCount; i++)
                {
                    dc = new DataColumn(pLayerFields.get_Field(i).Name);

                    dt.Columns.Add(dc);
                    dc = null;
                }
                IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, false);
                IFeature       pFeature       = pFeatureCursor.NextFeature();
                while (pFeature != null)
                {
                    DataRow dr = dt.NewRow();
                    for (int i = 0; i < pLayerFields.FieldCount; i++)
                    {
                        if (pLayerFields.FindField(pFeatureClass.ShapeFieldName) == i)
                        {
                            dr[i] = pFeatureClass.ShapeType.ToString();
                        }
                        else
                        {
                            dr[i] = pFeature.get_Value(i);
                        }
                    }

                    dt.Rows.Add(dr);
                    pFeature = pFeatureCursor.NextFeature();
                }

                dataGridView1.DataSource = dt;
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("读取属性表失败" + ex.Message);
                this.Dispose();
            }
        }
コード例 #12
0
 private void AttributeForm_Load(object sender, EventArgs e)
 {
     try
     {
         string tableName;
         tableName     = getValidFeatureClassName(pLayer.Name); //从图层名中获取图层名
         this.Text     = tableName + "属性表".ToString();          //替换窗体名称
         pFeatureLayer = pLayer as IFeatureLayer;
         pFeatureClass = pFeatureLayer.FeatureClass;
         pLayerFields  = pFeatureLayer as ILayerFields;
         DataTable  dt = new DataTable(pFeatureLayer.Name);//实例化数据表
         DataColumn dc = null;
         for (int i = 0; i < pLayerFields.FieldCount; i++)
         {
             //通过实例化获取数据表的字段名
             dc = new DataColumn(pLayerFields.get_Field(i).Name);
             dt.Columns.Add(dc);//在数据表得到列
             dc = null;
         }
         //
         IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, false);
         IFeature       pFeature       = pFeatureCursor.NextFeature();
         while (pFeature != null)//当要素不为空
         {
             DataRow dr = dt.NewRow();
             for (int j = 0; j < pLayerFields.FieldCount; j++)
             {// 在pLayerFields对象中找到pFeatureClass.ShapeFieldName的索引,并在数据表中显示该shape的类型。
                 if (pLayerFields.FindField(pFeatureClass.ShapeFieldName) == j)
                 {
                     dr[j] = pFeatureClass.ShapeType.ToString();// pFeatureClass.ShapeType得到类型值,然后转换为字符串。若没有该句就无法显示形状类型,效果见下页。
                 }
                 else
                 {
                     dr[j] = pFeature.get_Value(j);//直接返回这个值
                 }
             }
             dt.Rows.Add(dr);
             pFeature = pFeatureCursor.NextFeature();//游标下移
         }
         dataGridView1.DataSource = dt;
     }
     catch (Exception exc)
     {
         MessageBox.Show("读取属性表失败:" + exc.Message);
         this.Dispose();
     }
 }
コード例 #13
0
ファイル: FrmAttribute.cs プロジェクト: zyyfix/ArcEngine-WGIS
        private void FrmAttribute_Load(object sender, EventArgs e)
        {
            try
            {
                string tableName = pLayer.Name;
                this.Text     = tableName + "属性表".ToString();//替换窗体名称
                pFeatureLayer = pLayer as IFeatureLayer;
                pFeatureClass = pFeatureLayer.FeatureClass;
                pLayerFields  = pFeatureLayer as ILayerFields;
                DataTable  dt = new DataTable(pFeatureLayer.Name);
                DataColumn dc = null;
                for (int i = 0; i < pLayerFields.FieldCount; i++)
                {
                    dc = new DataColumn(pLayerFields.get_Field(i).Name);
                    dt.Columns.Add(dc);
                    dc = null;
                }
                IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, false);
                IFeature       pFeature       = pFeatureCursor.NextFeature();

                while (pFeature != null)
                {
                    DataRow dr = dt.NewRow();
                    for (int j = 0; j < pLayerFields.FieldCount; j++)
                    {
                        if (pLayerFields.FindField(pFeatureClass.ShapeFieldName) == j)
                        {
                            dr[j] = pFeatureClass.ShapeType.ToString();
                        }
                        else
                        {
                            dr[j] = pFeature.get_Value(j);
                        }
                    }
                    dt.Rows.Add(dr);
                    pFeature = pFeatureCursor.NextFeature();
                }
                dataGridView1.DataSource = dt;
            }
            catch (Exception exc)
            {
                MessageBox.Show("读取属性表失败:" + exc.Message);
                this.Dispose();
            }
        }
コード例 #14
0
        protected override void OnClick()
        {
            if (ArcMap.Document.FocusMap.LayerCount < 1)
            {
                MessageBox.Show("");
                return;
            }

            ILayerFields layerFields = ArcMap.Document.FocusMap.Layer[0] as ILayerFields;

            for (int i = 0; i < layerFields.FieldCount; i++)
            {
                IFieldInfo fieldInfo = layerFields.FieldInfo[i];
                fieldInfo.Alias = (fieldInfo.Alias.EndsWith(" esri"))
                    ? fieldInfo.Alias.Replace(" esri", string.Empty)
                    : fieldInfo.Alias + " esri";
            }
        }
コード例 #15
0
ファイル: LayerAttributes.cs プロジェクト: Leopold-Z/Test
        private int ConstructDataSet(IFeatureLayer pFeatLyr)
        {
            ILayerFields  pFeatlyrFields = pFeatLyr as ILayerFields;
            IFeatureClass pFeatCls       = pFeatLyr.FeatureClass;
            int           rows           = 0;

            if (m_layerDataSet.Tables[pFeatLyr.Name] == null)
            {
                DataTable  pTable = new DataTable(pFeatLyr.Name);
                DataColumn pTableCol;
                for (int i = 0; i <= pFeatlyrFields.FieldCount - 1; i++)
                {
                    pTableCol = new DataColumn(pFeatlyrFields.get_Field(i).AliasName);
                    pTable.Columns.Add(pTableCol);
                    pTableCol = null;
                }

                IFeatureCursor features = pFeatLyr.Search(null, false);
                IFeature       feature  = features.NextFeature();
                while (feature != null)
                {
                    DataRow pTableRow = pTable.NewRow();
                    for (int i = 0; i <= pFeatlyrFields.FieldCount - 1; i++)
                    {
                        //pTableRow[i] = feature.get_Value(i);
                        if (pFeatlyrFields.FindField(pFeatCls.ShapeFieldName) == i)
                        {
                            pTableRow[i] = pFeatCls.ShapeType;
                        }
                        else
                        {
                            pTableRow[i] = feature.get_Value(i);
                        }
                    }
                    pTable.Rows.Add(pTableRow);
                    feature = features.NextFeature();
                }
                rows = pTable.Rows.Count;
                m_layerDataSet.Tables.Add(pTable);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(features);
            }
            return(rows);
        }
        private void cboLayer_SelectedIndexChanged(object sender, EventArgs e)
        {
            //Get IFeatureLayer interface
            IFeatureLayer featureLayer = (IFeatureLayer)Map.get_Layer(cboLayers.SelectedIndex);
            //Query interface for ILayerFields
            ILayerFields layerFields = (ILayerFields)featureLayer;

            int j = 0;

            cboFields.Items.Clear();
            cboFields.Enabled = true;

            if (m_Fields == null)
            {
                m_Fields = new List <IField>();
            }
            else
            {
                m_Fields.Clear();
            }

            //Loop through the fields
            for (int i = 0; i <= layerFields.FieldCount - 1; i++)
            {
                //Get IField interface
                IField field = layerFields.get_Field(i);
                //If the field is not the shape field
                if (IsValid(field))
                {
                    //Add field name to the control
                    cboFields.Items.Insert(j, field.AliasName);
                    m_Fields.Add(field);
                    //If the field name is the display field
                    if (field.Name == featureLayer.DisplayField)
                    {
                        //Select the field name in the control
                        cboFields.SelectedIndex = j;
                    }
                    j = j + 1;
                }
            }
        }
コード例 #17
0
ファイル: ModHistory.cs プロジェクト: siszoey/geosufan
        ////定义地图图层的表达式,针对组图层二级分组
        public static void setGpLyrsDefinitionOfHPoint(string in_sDefinition, ILayer in_Layer)
        {
            //ICompositeLayer
            IGroupLayer   pTmpGroupLyr = in_Layer as IGroupLayer;
            IFeatureLayer pTmpFeaLayer = in_Layer as IFeatureLayer;

            if (pTmpGroupLyr != null)
            {
                ICompositeLayer pComLayer = pTmpGroupLyr as ICompositeLayer;
                for (int i = 0; i < pComLayer.Count; i++)
                {
                    ILayer pLyr = pComLayer.get_Layer(i);
                    if (pLyr.Valid && pLyr.Visible)
                    {
                        if (pLyr is IFeatureLayer)
                        {
                            ILayerFields pLyrFds        = pLyr as ILayerFields;
                            int          idxValidDate   = pLyrFds.FindField("QSRQ"),
                                         idxInvalidDate = pLyrFds.FindField("ZZRQ");
                            if (idxInvalidDate != -1 && idxValidDate != -1)
                            {
                                IFeatureLayerDefinition2 pPFLD2 = pLyr as IFeatureLayerDefinition2;
                                pPFLD2.DefinitionExpression = in_sDefinition;
                            }
                        }
                    }
                }
                return;
            }
            if (pTmpFeaLayer != null)
            {
                ILayerFields pLyrFds        = pTmpFeaLayer as ILayerFields;
                int          idxValidDate   = pLyrFds.FindField("QSRQ"),
                             idxInvalidDate = pLyrFds.FindField("ZZRQ");
                if (idxInvalidDate != -1 && idxValidDate != -1)
                {
                    IFeatureLayerDefinition2 pPFLD2 = in_Layer as IFeatureLayerDefinition2;
                    pPFLD2.DefinitionExpression = in_sDefinition;
                }
            }
        }
コード例 #18
0
        private void cboDataField_SelectedIndexChanged(object sender, System.EventArgs e)
        {
            //Get IFeatureLayer interface
            IFeatureLayer featureLayer = (IFeatureLayer)axMapControl1.get_Layer(cboDataLayer.SelectedIndex);
            //Query interface for IlayerFields
            ILayerFields layerFields = (ILayerFields)featureLayer;

            //Loop through the fields
            for (int i = 0; i <= layerFields.FieldCount - 1; i++)
            {
                //Get IField interface
                IField field = layerFields.get_Field(i);
                //If the field name is the name selected in the control
                if (field.Name == cboDataField.Text)
                {
                    //Set the field as the display field
                    featureLayer.DisplayField = field.Name;
                    break;
                }
            }
        }
コード例 #19
0
        private void cboDataLayer_SelectedIndexChanged(object sender, System.EventArgs e)
        {
            //Disable field combo if feature layer is not selected and exit
            if (axMapControl1.get_Layer(cboDataLayer.SelectedIndex) is IFeatureLayer == false)
            {
                cboDataField.Items.Clear();
                cboDataField.Enabled = false;
                return;
            }

            //Get IFeatureLayer interface
            IFeatureLayer featureLayer = (IFeatureLayer)axMapControl1.get_Layer(cboDataLayer.SelectedIndex);
            //Query interface for ILayerFields
            ILayerFields layerFields = (ILayerFields)featureLayer;

            int j = 0;

            cboDataField.Items.Clear();
            cboDataField.Enabled = true;
            //Loop through the fields
            for (int i = 0; i <= layerFields.FieldCount - 1; i++)
            {
                //Get IField interface
                IField field = layerFields.get_Field(i);
                //If the field is not the shape field
                if (field.Type != esriFieldType.esriFieldTypeGeometry)
                {
                    //Add field name to the control
                    cboDataField.Items.Insert(j, field.Name);
                    //If the field name is the display field
                    if (field.Name == featureLayer.DisplayField)
                    {
                        //Select the field name in the control
                        cboDataField.SelectedIndex = j;
                    }
                    j = j + 1;
                }
            }
            ShowLayerTips();
        }
コード例 #20
0
        /// <summary>
        /// button: confirm
        /// to check the fields intended to be added
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            ILayerFields layerfields = currentLayer as ILayerFields;

            int num_fields = layerfields.FieldCount;
            int num_rows   = dataGridView1.RowCount;

            IFeatureLayer featurelayer = currentLayer as IFeatureLayer;

            for (int i = num_fields; i < num_rows - 1; i++)
            {
                //valid input:
                if (dataGridView1.Rows[i].Cells[0].Value != null && dataGridView1.Rows[i].Cells[1].Value != null)
                {
                    IFieldEdit fieldedit = new FieldClass();
                    fieldedit.Name_2      = dataGridView1.Rows[i].Cells[0].Value.ToString();
                    fieldedit.AliasName_2 = dataGridView1.Rows[i].Cells[0].Value.ToString();

                    switch (dataGridView1.Rows[i].Cells[1].Value.ToString())
                    {
                    case "Short Integer": fieldedit.Type_2 = esriFieldType.esriFieldTypeSmallInteger; break;

                    case "Long Integer": fieldedit.Type_2 = esriFieldType.esriFieldTypeInteger; break;

                    case "Float": fieldedit.Type_2 = esriFieldType.esriFieldTypeSingle; break;

                    case "Double": fieldedit.Type_2 = esriFieldType.esriFieldTypeDouble; break;

                    case "Text": fieldedit.Type_2 = esriFieldType.esriFieldTypeString; break;

                    case "Date": fieldedit.Type_2 = esriFieldType.esriFieldTypeDate; break;
                    }

                    featurelayer.FeatureClass.AddField((IField)fieldedit);
                }
            }

            this.Close();
        }
コード例 #21
0
ファイル: uctrFields.cs プロジェクト: siszoey/geosufan
        /// <summary>
        /// 初始化字段内容
        /// </summary>
        private void InitLayerFields()
        {
            IFields      pFields;
            ListViewItem fieldItem;

            pFields = m_pCurrentLayer.FeatureClass.Fields; //获取当前图层的所有字段
            ILayerFields pLayerFields = (ILayerFields)m_pCurrentLayer;

            //遍历并获取每个字段
            for (int i = 0; i < pFields.FieldCount; i++)
            {
                //根据字段属性设置Item
                fieldItem = new ListViewItem();
                IField     pField     = pFields.get_Field(i);
                IFieldInfo pFieldInfo = pLayerFields.get_FieldInfo(i);
                fieldItem.Name    = pField.Name;
                fieldItem.Text    = pField.Name;
                fieldItem.Tag     = pField;
                fieldItem.Checked = pFieldInfo.Visible;
                //设置Item的SubItems
                string[] subItems = new string[5];
                subItems[0] = pField.AliasName;
                subItems[1] = GetFieldType(pField.Type);
                subItems[2] = pField.Length.ToString();
                subItems[3] = pField.Precision.ToString();
                subItems[4] = pField.Scale.ToString();
                fieldItem.SubItems.AddRange(subItems);
                //添加Item到ListView
                lstFieldsView.Items.Add(fieldItem);
                if (fieldItem.Checked)
                {
                    cboFields.Items.Add(fieldItem.Name);
                }
            }
            if (cboFields.Items.Count > 0)
            {
                cboFields.SelectedIndex = 0;
            }
        }
コード例 #22
0
        /// <summary>
        /// Load Existing Fields
        /// </summary>
        private void Load_ExistingFields()
        {
            //ILayerFields
            ILayerFields layerfields = currentLayer as ILayerFields;

            //add exited through ILayerFields
            for (int i = 0; i < layerfields.FieldCount; i++)
            {
                int index = this.dataGridView1.Rows.Add();

                dataGridView1.Rows[index].Cells[0].Value = layerfields.Field[i].Name.ToString();

                switch (layerfields.Field[i].Type)
                {
                case esriFieldType.esriFieldTypeOID:
                    dataGridView1.Rows[index].Cells[1].Value    = Column2.Items[6];
                    dataGridView1.Rows[index].Cells[1].ReadOnly = true;
                    break;

                case esriFieldType.esriFieldTypeGeometry:
                    dataGridView1.Rows[index].Cells[1].Value    = Column2.Items[7];
                    dataGridView1.Rows[index].Cells[1].ReadOnly = true;
                    break;

                case esriFieldType.esriFieldTypeSmallInteger: dataGridView1.Rows[index].Cells[1].Value = Column2.Items[0]; break;

                case esriFieldType.esriFieldTypeInteger: dataGridView1.Rows[index].Cells[1].Value = Column2.Items[1]; break;

                case esriFieldType.esriFieldTypeSingle: dataGridView1.Rows[index].Cells[1].Value = Column2.Items[2]; break;

                case esriFieldType.esriFieldTypeDouble: dataGridView1.Rows[index].Cells[1].Value = Column2.Items[3]; break;

                case esriFieldType.esriFieldTypeString: dataGridView1.Rows[index].Cells[1].Value = Column2.Items[4]; break;

                case esriFieldType.esriFieldTypeDate: dataGridView1.Rows[index].Cells[1].Value = Column2.Items[5]; break;
                }
            }
        }
コード例 #23
0
        /// <summary>
        /// UserDeletingRow
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
        {
            ILayerFields  layerfields  = currentLayer as ILayerFields;
            IFeatureLayer featurelayer = currentLayer as IFeatureLayer;

            int num_fields = layerfields.FieldCount;
            int num_rows   = dataGridView1.RowCount;

            if (e.Row.Index < num_fields)
            {
                DialogResult dr = MessageBox.Show("Are you sure to delete the existing field?", "REMINDER", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (dr == DialogResult.Yes)
                {
                    //todeletefield: e.Row.Index
                    IField todeletefield = layerfields.Field[e.Row.Index];
                    featurelayer.FeatureClass.DeleteField(todeletefield);
                }
                else
                {
                    e.Cancel = true;
                }
            }
        }
コード例 #24
0
ファイル: ResultDialog.cs プロジェクト: secondii/Yutai
        private void method_0(IFeatureLayer featureLayer)
        {
            ILayerFields layerField = (ILayerFields)featureLayer;
            int          fieldCount = featureLayer.FeatureClass.Fields.FieldCount;
            Regex        regex      = new Regex("^[\\u4e00-\\u9fa5]+$");

            for (int i = 0; i < fieldCount; i++)
            {
                string name = layerField.get_Field(i).Name;
                if (!this.dataGridView3.Columns.Contains(name))
                {
                    this.dataGridView3.Columns.Add(name, name);
                    if (name == "起点管顶高程")
                    {
                        this.dataGridView3.Columns.Add("起点管底高程", "起点管底高程");
                    }
                    if (name == "终点管顶高程")
                    {
                        this.dataGridView3.Columns.Add("终点管底高程", "终点管底高程");
                    }
                }
            }
        }
コード例 #25
0
        public void Refresh(DataGridView _data, IFeatureLayer pFLayer)
        {
            pFeatureLayer = pFLayer;
            pFeatureClass = pFeatureLayer.FeatureClass;
            pLayerFields  = pFeatureLayer as ILayerFields;
            DataSet    ds = new DataSet("dsTests");
            DataTable  dt = new DataTable(pFeatureLayer.Name);
            DataColumn dc = null;

            for (int i = 0; i < pLayerFields.FieldCount; i++)
            {
                dc = new DataColumn(pLayerFields.get_Field(i).Name);
                dt.Columns.Add(dc);
                dc = null;
            }
            IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, false);
            IFeature       pFeature       = pFeatureCursor.NextFeature();

            while (pFeature != null)
            {
                DataRow dr = dt.NewRow();
                for (int j = 0; j < pLayerFields.FieldCount; j++)
                {
                    if (pLayerFields.FindField(pFeatureClass.ShapeFieldName) == j)
                    {
                        dr[j] = pFeatureClass.ShapeType.ToString();
                    }
                    else
                    {
                        dr[j] = pFeature.get_Value(j);
                    }
                }
                dt.Rows.Add(dr);
                pFeature = pFeatureCursor.NextFeature();
            }
            _data.DataSource = dt;
        }
コード例 #26
0
ファイル: FrmSearchByAttr.cs プロジェクト: moosexu/GISBase
        /// <summary>
        /// 选择了别的图层
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void comboBoxLayers_SelectedIndexChanged(object sender, EventArgs e)//根据所选择的图层得到该图层的可查询字段
        {
            if (this.pEnumLayer == null)
            {
                return;
            }

            IField pField;
            int    currentFieldType;

            this.pEnumLayer.Reset();
            this.listBoxFields.Items.Clear();
            for (this.pLayer = this.pEnumLayer.Next(); this.pLayer != null; this.pLayer = this.pEnumLayer.Next())
            {
                if (this.pLayer.Name != this.comboBoxLayers.Text)
                {
                    continue;
                }
                this.pLayerFields = this.pLayer as ILayerFields;
                for (int i = 0; i < this.pLayerFields.FieldCount; i++)
                {
                    pField           = this.pLayerFields.get_Field(i);
                    currentFieldType = (int)pField.Type;
                    //sxw
                    if (currentFieldType == 7 || currentFieldType == 8 || currentFieldType == 9 || currentFieldType == 10 || currentFieldType == 11 || currentFieldType == 12)
                    {
                        continue;                                                                                                                                                       //不是可以查询的字段类型esriFieldTypeString
                    }
                    //sxw
                    this.listBoxFields.Items.Add(pField.Name);
                }
                break;
            }
            this.pFeatureLayer      = this.pLayer as IFeatureLayer;
            this.labelLayer.Text    = this.comboBoxLayers.Text;
            textBoxWhereClause.Text = "";
        }
コード例 #27
0
ファイル: AEFieldComboBox.cs プロジェクト: moosexu/GISBase
        public void AddItems(IFeatureLayer m_pFeatureLayer, seismicGCBaseRelativeYearFieldFormat format = seismicGCBaseRelativeYearFieldFormat.seismicGCBRYFTypeYRS)
        {
            m_nFieldFormat = format;
            Items.Clear();
            if (m_pFeatureLayer == null || m_pFeatureLayer.FeatureClass == null)
            {
                return;
            }
            IFeatureClass pFeatureClass = m_pFeatureLayer.FeatureClass;

            ILayerFields pLayerFields = m_pFeatureLayer as ILayerFields;

            for (int k = 0; k < pLayerFields.FieldCount; k++)
            {
                IField pField = pLayerFields.get_Field(k);
                if (GeoBaseLib.IsSysField(pField.Name))
                {
                    continue;
                }
                if (m_nFieldFormat == seismicGCBaseRelativeYearFieldFormat.seismicGCBRYFTypeYRS)
                {
                    if (pField.Name.Contains("YRS"))
                    {
                        Items.Add(pField.Name);
                    }
                }
                else if (m_nFieldFormat == seismicGCBaseRelativeYearFieldFormat.seismicGCBRYFTypeNone)
                {
                    Items.Add(pField.Name);
                }
            }
            if (Items.Count > 0)
            {
                SelectedIndex = 0;
            }
        }
コード例 #28
0
ファイル: YtEditTemplate.cs プロジェクト: secondii/Yutai
        public void Init(IFeatureLayer ifeatureLayer_1)
        {
            this.FeatureLayer = ifeatureLayer_1;
            ILayerFields featureLayer = this.FeatureLayer as ILayerFields;

            for (int i = 0; i < featureLayer.FieldCount; i++)
            {
                IField field = featureLayer.Field[i];
                if (!field.Required)
                {
                    esriFieldType type = field.Type;
                    if (field.Editable)
                    {
                        if ((type == esriFieldType.esriFieldTypeGeometry || type == esriFieldType.esriFieldTypeBlob ||
                             type == esriFieldType.esriFieldTypeRaster
                            ? false
                            : type != esriFieldType.esriFieldTypeOID))
                        {
                            if (field.IsNullable)
                            {
                                this.sortedList_0.Add(field.Name, "<空>");
                            }
                            else if (
                                !(type == esriFieldType.esriFieldTypeInteger ||
                                  type == esriFieldType.esriFieldTypeSingle ||
                                  type == esriFieldType.esriFieldTypeSmallInteger
                                    ? false
                                    : type != esriFieldType.esriFieldTypeDouble))
                            {
                                this.sortedList_0.Add(field.Name, "0");
                            }
                            else if (type == esriFieldType.esriFieldTypeString)
                            {
                                this.sortedList_0.Add(field.Name, "");
                            }
                            else if (type == esriFieldType.esriFieldTypeDate)
                            {
                                this.sortedList_0.Add(field.Name, DateTime.Now.ToShortDateString());
                            }
                        }
                    }
                }
                else if (ifeatureLayer_1 is IFDOGraphicsLayer && string.Compare(field.Name, "SymbolID", true) == 0)
                {
                    if (!field.IsNullable)
                    {
                        this.sortedList_0.Add("SymbolID", "0");
                    }
                    else
                    {
                        this.sortedList_0.Add("SymbolID", "<空>");
                    }
                }
            }
            this.Name = this.FeatureLayer.Name;
            esriGeometryType shapeType = this.FeatureLayer.FeatureClass.ShapeType;

            if (this.FeatureLayer.FeatureClass.FeatureType == esriFeatureType.esriFTAnnotation)
            {
                this.Label = "注记";
            }
            else if (shapeType == esriGeometryType.esriGeometryPolyline)
            {
                this.Label = "线";
            }
            else if (shapeType == esriGeometryType.esriGeometryPolygon)
            {
                this.Label = "面";
            }
            else if ((shapeType == esriGeometryType.esriGeometryPoint
                ? true
                : shapeType == esriGeometryType.esriGeometryMultipoint))
            {
                this.Label = "点";
            }
        }
コード例 #29
0
        /// <summary>
        /// 获得当前字段的唯一值
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonGetValue_Click(object sender, EventArgs e)
        {
            try
            {
                if (this.listBoxFields.SelectedIndex == -1)
                {
                    return;
                }

                string currentFieldName = this.listBoxFields.Text;//当前字段名
                string currentLayerName = this.comboBoxLayers.Text;
                this.pEnumLayer.Reset();
                for (this.pLayer = this.pEnumLayer.Next(); this.pLayer != null; this.pLayer = this.pEnumLayer.Next())
                {
                    if (this.pLayer.Name == currentLayerName)
                    {
                        break;
                    }
                }
                this.pLayerFields = this.pLayer as ILayerFields;
                IField        pField     = this.pLayerFields.get_Field(this.pLayerFields.FindField(currentFieldName));
                esriFieldType pFieldType = pField.Type;

                //对Table中当前字段进行排序,把结果赋给Cursor
                ITable     pTable     = this.pLayer as ITable;
                ITableSort pTableSort = new TableSortClass();
                pTableSort.Table  = pTable;
                pTableSort.Fields = currentFieldName;
                pTableSort.set_Ascending(currentFieldName, true);
                pTableSort.set_CaseSensitive(currentFieldName, true);
                pTableSort.Sort(null);//排序
                ICursor pCursor = pTableSort.Rows;

                //字段统计
                IDataStatistics pDataStatistics = new DataStatisticsClass();
                pDataStatistics.Cursor = pCursor;
                pDataStatistics.Field  = currentFieldName;
                System.Collections.IEnumerator pEnumeratorUniqueValues = pDataStatistics.UniqueValues; //唯一值枚举
                int uniqueValueCount = pDataStatistics.UniqueValueCount;                               //唯一值的个数

                this.listBoxValues.Items.Clear();
                string currentValue = null;
                pEnumeratorUniqueValues.Reset();
                if (pFieldType == esriFieldType.esriFieldTypeString)
                {
                    while (pEnumeratorUniqueValues.MoveNext())
                    {
                        currentValue = pEnumeratorUniqueValues.Current.ToString();
                        this.listBoxValues.Items.Add("'" + currentValue + "'");
                    }
                }
                else
                {
                    while (pEnumeratorUniqueValues.MoveNext())
                    {
                        currentValue = pEnumeratorUniqueValues.Current.ToString();
                        this.listBoxValues.Items.Add(currentValue);
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
コード例 #30
0
        private void btnShowAllValue_Click(object sender, EventArgs e)
        {
            if (cmbFields.Text == "")
            {
                MessageBox.Show("请选择字段名", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }
            listBoxValue.Items.Clear();
            IFeatureLayer pFeatureLayer;

            pFeatureLayer = (IFeatureLayer)pMap.get_Layer(iLayerIndex);

            IFeatureCursor pFeatureCursor;

            pFeatureCursor = pFeatureLayer.FeatureClass.Search(null, false);

            IFeature pFeature;

            pFeature = pFeatureCursor.NextFeature();



            //对Table中当前字段进行排序,把结果赋给Cursor

            ITable pTable = pFeatureLayer as ITable;

            ITableSort pTableSort = new TableSortClass();

            pTableSort.Table = pTable;

            pTableSort.Fields = cmbFields.Text;

            pTableSort.set_Ascending(cmbFields.Text, true);

            pTableSort.set_CaseSensitive(cmbFields.Text, true);

            pTableSort.Sort(null);

            ICursor pCursor = pTableSort.Rows;


            //数值统计

            IDataStatistics pData = new DataStatisticsClass();

            pData.Cursor = pCursor;

            pData.Field = cmbFields.Text;



            System.Collections.IEnumerator pEnumeratorUniqueValues = pData.UniqueValues; //唯一值枚举
            int uniqueValueCount = pData.UniqueValueCount;                               //唯一值的个数

            this.listBoxValue.Items.Clear();

            string fldValue = null;

            pEnumeratorUniqueValues.Reset();

            ILayerFields pFields = pFeatureLayer as ILayerFields;

            if (pFields.get_Field(pFields.FindField(cmbFields.Text)).Type == esriFieldType.esriFieldTypeString)
            {
                while (pEnumeratorUniqueValues.MoveNext())
                {
                    fldValue = pEnumeratorUniqueValues.Current.ToString();
                    this.listBoxValue.Items.Add("'" + fldValue + "'");
                }
            }
            else if (cmbFields.Text == "shape")
            {
                fldValue = Convert.ToString(pFeature.Shape.GeometryType);
                this.listBoxValue.Items.Add(fldValue);
            }
            else
            {
                while (pEnumeratorUniqueValues.MoveNext())
                {
                    fldValue = pEnumeratorUniqueValues.Current.ToString();
                    this.listBoxValue.Items.Add(fldValue);
                }
            }



            /* while(pFeature!=null)
             * {
             *   string fldValue;
             *   if (cmbFields.Text == "Shape")
             *   {
             *       fldValue = Convert.ToString(pFeature.Shape.GeometryType);
             *   }
             *   else
             *       fldValue = Convert.ToString(pFeature.get_Value(iFieldIndex));
             *
             *   listBoxValue.Items.Add(fldValue);
             *   pFeature = pFeatureCursor.NextFeature();
             * } */
        }
コード例 #31
0
        /// <summary>
        /// 选择了别的图层
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void comboBoxLayers_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (this.pEnumLayer == null) return;

            IField pField;
            int currentFieldType;
            this.pEnumLayer.Reset();
            this.listBoxFields.Items.Clear();
            for (this.pLayer = this.pEnumLayer.Next(); this.pLayer != null; this.pLayer = this.pEnumLayer.Next())
            {
                if (this.pLayer.Name != this.comboBoxLayers.Text) continue;
                this.pLayerFields = this.pLayer as ILayerFields;
                for (int i = 0; i < this.pLayerFields.FieldCount; i++)
                {
                    pField = this.pLayerFields.get_Field(i);
                    currentFieldType = (int)pField.Type;
                    if (currentFieldType > 5) continue;//不是可以查询的字段类型
                    this.listBoxFields.Items.Add(pField.Name);
                }
                break;
            }
            this.pFeatureLayer = this.pLayer as IFeatureLayer;
            this.labelLayer.Text = this.comboBoxLayers.Text;
        }
コード例 #32
0
        /// <summary>
        /// 获得当前字段的唯一值
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonGetValue_Click(object sender, EventArgs e)
        {
            try
            {
                if (this.listBoxFields.SelectedIndex == -1) return;

                string currentFieldName = this.listBoxFields.Text;//当前字段名
                string currentLayerName=this.comboBoxLayers.Text;
                this.pEnumLayer.Reset();
                for (this.pLayer = this.pEnumLayer.Next(); this.pLayer != null; this.pLayer = this.pEnumLayer.Next())
                {
                    if (this.pLayer.Name == currentLayerName) break;
                }
                this.pLayerFields = this.pLayer as ILayerFields;
                IField pField = this.pLayerFields.get_Field(this.pLayerFields.FindField(currentFieldName));
                esriFieldType pFieldType = pField.Type;

                //对Table中当前字段进行排序,把结果赋给Cursor
                ITable pTable = this.pLayer as ITable;
                ITableSort pTableSort = new TableSortClass();
                pTableSort.Table = pTable;
                pTableSort.Fields = currentFieldName;
                pTableSort.set_Ascending(currentFieldName, true);
                pTableSort.set_CaseSensitive(currentFieldName, true);
                pTableSort.Sort(null);//排序
                ICursor pCursor = pTableSort.Rows;

                //字段统计
                IDataStatistics pDataStatistics = new DataStatisticsClass();
                pDataStatistics.Cursor = pCursor;
                pDataStatistics.Field = currentFieldName;
                System.Collections.IEnumerator pEnumeratorUniqueValues = pDataStatistics.UniqueValues;//唯一值枚举
                int uniqueValueCount = pDataStatistics.UniqueValueCount;//唯一值的个数

                this.listBoxValues.Items.Clear();
                string currentValue = null;
                pEnumeratorUniqueValues.Reset();
                if (pFieldType == esriFieldType.esriFieldTypeString)
                {
                    while (pEnumeratorUniqueValues.MoveNext())
                    {
                        currentValue = pEnumeratorUniqueValues.Current.ToString();
                        this.listBoxValues.Items.Add("'" + currentValue + "'");
                    }
                }
                else
                {
                    while (pEnumeratorUniqueValues.MoveNext())
                    {
                        currentValue = pEnumeratorUniqueValues.Current.ToString();
                        this.listBoxValues.Items.Add(currentValue);
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }