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; } }
/// <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; }
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; } } }
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; } }
/// <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; } }
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; }
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); } }
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); }
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(); } }
/// <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; } }
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(); } }
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(); } }
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(); } }
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"; } }
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; } } }
////定义地图图层的表达式,针对组图层二级分组 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; } } }
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; } } }
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(); }
/// <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(); }
/// <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; } }
/// <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; } } }
/// <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; } } }
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("终点管底高程", "终点管底高程"); } } } }
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; }
/// <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 = ""; }
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; } }
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 = "点"; } }
/// <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); } }
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(); * } */ }
/// <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; }
/// <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); } }