/// <summary>
/// 添加字段,以及计算几何面积
/// </summary>
/// <param name="pFeatureLayer">矢量图层</param>
/// <param name="fieldName">添加的字段名称,如:相交面积</param>
private void AddCalculateField(IFeatureLayer pFeatureLayer, string fieldName)
{
//获取预审生成图层
IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass;
IField pField = null;
IFieldEdit pFieldEdit = null;
if (pFeatureClass.Fields.FindField(fieldName) < 0)
{
pField = new FieldClass();
pFieldEdit = pField as IFieldEdit;
pFieldEdit.Type_2 = esriFieldType.esriFieldTypeDouble;
pFieldEdit.Name_2 = fieldName;
pFieldEdit.IsNullable_2 = true;
pFeatureClass.AddField(pField);
}
IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, false);
IFeature pFeature = pFeatureCursor.NextFeature();
while (pFeature != null)
{
//设置坐标系统,计算几何需要坐标系统
pFeature.Shape.Project(m_spatialReference);
IArea pArea = (IArea)pFeature.Shape;
double area = pArea.Area;
int index = pFeature.Fields.FindField(fieldName);
pFeature.set_Value(index, area);
pFeature.Store();
System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeature);
pFeature = pFeatureCursor.NextFeature();
}
System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeatureCursor);
}
IFeatureClass pFeatureClass = m_FeatureLayer.FeatureClass;
IGeoDataset pGeoDataset = pFeatureClass as IGeoDataset;
ISpatialReference m_spatialReference = pGeoDataset.SpatialReference;