/// <summary> /// 把DataTable转为ITable ,tempPath 不含文件名的w文件夹路径 /// </summary> /// <param name="mTable"></param> /// <returns></returns> private ITable DataTableToITable(DataTable mTable, string xFieldName, string yFieldName, string tempPath) { try { #region 新建表字段 IField pField = null; IFields fields = new FieldsClass(); IFieldsEdit fieldsEdit = (IFieldsEdit)fields; fieldsEdit.FieldCount_2 = 2; //添加X字段 pField = new FieldClass(); IFieldEdit fieldEdit = (IFieldEdit)pField; fieldEdit.Name_2 = "X"; fieldEdit.AliasName_2 = "X"; //设置字段类型 fieldEdit.Type_2 = esriFieldType.esriFieldTypeDouble; fieldEdit.Editable_2 = true; fieldsEdit.set_Field(0, pField); //添加Y字段 IField pField1 = new FieldClass(); IFieldEdit fieldEdit1 = (IFieldEdit)pField1; fieldEdit1.Name_2 = "Y"; fieldEdit1.AliasName_2 = "Y"; fieldEdit1.Type_2 = esriFieldType.esriFieldTypeDouble; fieldEdit1.Editable_2 = true; fieldsEdit.set_Field(1, pField1); #endregion ShapefileWorkspaceFactoryClass class2 = new ShapefileWorkspaceFactoryClass(); ESRI.ArcGIS.Geodatabase.IWorkspace pWorkspace = class2.OpenFromFile(tempPath, 0); IFeatureWorkspace pFWS = pWorkspace as IFeatureWorkspace; //删除已有的 if (System.IO.File.Exists(tempPath + "点数据.dbf")) { System.IO.File.Delete(tempPath + "点数据.dbf"); } //创建空表 ITable pTable = pFWS.CreateTable("点数据", fieldsEdit, null, null, ""); //遍历DataTable中数据,然后转换为ITable中的数据 int xRowIndex = pTable.Fields.FindField("X"); int yRowIndex = pTable.Fields.FindField("Y"); for (int k = 0; k < mTable.Rows.Count; k++) { //ITable 的记录 IRow row = pTable.CreateRow(); DataRow pRrow = mTable.Rows[k]; row.set_Value(xRowIndex, pRrow[xFieldName]); row.set_Value(yRowIndex, pRrow[yFieldName]); row.Store(); } return(pTable); } catch { return(null); } }
private void AddSimpleField(IFieldsEdit fieldsEdit, esriFieldType type, string name, string aliasName) { IField field = new FieldClass(); IFieldEdit fieldEdit = field as IFieldEdit; fieldEdit.Type_2 = type; fieldEdit.Name_2 = name; fieldEdit.AliasName_2 = aliasName; fieldsEdit.AddField(field); }
public void addFiled(string fieldName, esriFieldType esriFieldType, ref IFieldsEdit pFieldsEdit) { IField pField = new FieldClass(); IFieldEdit pFieldEdit = (IFieldEdit)pField; pFieldEdit.Name_2 = fieldName; pFieldEdit.Type_2 = esriFieldType; pFieldEdit.Length_2 = 50; pFieldsEdit.AddField(pField); }
private IFields CreateChainFields() { IFields flds = new FieldsClass(); IFieldsEdit eflds = flds as IFieldsEdit; eflds.FieldCount_2 = 7; IField oid_field = new FieldClass(); IFieldEdit eOid = (IFieldEdit)oid_field; eOid.Name_2 = "ObjectID"; eOid.AliasName_2 = "ObjectID"; eOid.Type_2 = esriFieldType.esriFieldTypeOID; eflds.set_Field(0, oid_field); //Create A geometry Definition for the layer IGeometryDef geomDef = new GeometryDefClass(); IGeometryDefEdit egeomDef = (IGeometryDefEdit)geomDef; egeomDef.GeometryType_2 = esriGeometryType.esriGeometryPolyline; egeomDef.SpatialReference_2 = ArcMap.Document.FocusMap.SpatialReference; IField shap = new FieldClass(); IFieldEdit eshape = (IFieldEdit)shap; eshape.Type_2 = esriFieldType.esriFieldTypeGeometry; eshape.Name_2 = "Shape"; eshape.AliasName_2 = "Shape"; eshape.GeometryDef_2 = geomDef; eflds.set_Field(1, shap); IField FromLeft = CreateIntegerField("FromLeft"); eflds.set_Field(2, FromLeft); IField ToLeft = CreateIntegerField("ToLeft"); eflds.set_Field(3, ToLeft); IField FromRight = CreateIntegerField("FromRight"); eflds.set_Field(4, FromRight); IField ToRight = CreateIntegerField("ToRight"); eflds.set_Field(5, ToRight); IField CLID = CreateIntegerField("CLID"); eflds.set_Field(6, CLID); return(flds); }
public IFeatureClass CreateShapeFile(string strFileName, ISpatialReference pSRF) { try { DirectoryInfo di = new DirectoryInfo(txtFileName.Text); string filefolder = di.Parent.FullName; ClsGDBDataCommon cdc = new ClsGDBDataCommon(); //cdc.OpenFromShapefile(filefolder); IFields pFields = new FieldsClass(); IFieldsEdit pFieldsEdit = (IFieldsEdit)pFields; //设置字段 IField pField = new FieldClass(); IFieldEdit pFieldEdit = (IFieldEdit)pField; //创建类型为几何类型的字段 pFieldEdit.Name_2 = "shape"; pFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry; IGeometryDef pGeoDef = new GeometryDefClass(); IGeometryDefEdit pGeoDefEdit = (IGeometryDefEdit)pGeoDef; pGeoDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPoint; pGeoDefEdit.HasM_2 = false; pGeoDefEdit.HasZ_2 = false; pGeoDefEdit.SpatialReference_2 = pSRF; pFieldEdit.Name_2 = "SHAPE"; pFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry; pFieldEdit.GeometryDef_2 = pGeoDef; pFieldEdit.IsNullable_2 = true; pFieldEdit.Required_2 = true; pFieldsEdit.AddField(pField); ClsGDBDataCommon comm = new ClsGDBDataCommon(); IWorkspace inmemWor = comm.OpenFromShapefile(filefolder); // ifeatureworkspacee IFeatureWorkspace pFeatureWorkspace = inmemWor as IFeatureWorkspace; IFeatureClass pFeatureClass = pFeatureWorkspace.CreateFeatureClass(di.Name, pFields, null, null, esriFeatureType.esriFTSimple, "shape", ""); return(pFeatureClass); //IFeatureLayer pFeatureLayer = new FeatureLayerClass(); //pFeatureLayer.FeatureClass = pFeatureClass; //pFeatureLayer.Name = System.IO.Path.GetFileNameWithoutExtension(di.Name); //m_mapControl.AddLayer(pFeatureLayer as ILayer, 0); //m_mapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); } catch (SystemException ee) { MessageBox.Show(ee.Message); return(null); } }
//字段集 private IFields CreateFieldsCollectionForFeatueClass(ISpatialReference spatialReference, esriGeometryType geometryType, string className) { //Use the feature class description to return the required fields in a fields collection. IFeatureClassDescription fcDesc = new FeatureClassDescriptionClass(); IObjectClassDescription ocDesc = (IObjectClassDescription)fcDesc; //Create the fields using the required fields method. IFields fields = ocDesc.RequiredFields; //Locate the shape field with the name from the feature class description. int shapeFieldIndex = fields.FindField(fcDesc.ShapeFieldName); IField shapeField = fields.get_Field(shapeFieldIndex); //Modify the GeometryDef object before using the fields collection to create a //feature class. IGeometryDef geometryDef = shapeField.GeometryDef; IGeometryDefEdit geometryDefEdit = (IGeometryDefEdit)geometryDef; //Alter the feature class geometry type to the type we need. geometryDefEdit.GeometryType_2 = geometryType; geometryDefEdit.HasZ_2 = true; geometryDefEdit.HasM_2 = true; geometryDefEdit.GridCount_2 = 1; //Set the first grid size to zero and allow ArcGIS to determine a valid grid size. geometryDefEdit.set_GridSize(0, 0); geometryDefEdit.SpatialReference_2 = spatialReference; //添加地质属性概率字段 if (geometryType == esriGeometryType.esriGeometryPoint) { //Create a user-defined double field for "probability" IFieldsEdit fieldsEdit = (IFieldsEdit)fields; IField incomeField = new FieldClass(); IFieldEdit incomeFieldEdit = (IFieldEdit)incomeField; incomeFieldEdit.AliasName_2 = "probability"; incomeFieldEdit.Editable_2 = true; incomeFieldEdit.IsNullable_2 = false; incomeFieldEdit.Name_2 = "probability"; incomeFieldEdit.Precision_2 = 2; incomeFieldEdit.Scale_2 = 5; incomeFieldEdit.Type_2 = esriFieldType.esriFieldTypeDouble; fieldsEdit.AddField(incomeField); //Create a user-defined double field for "RegardP" IFieldsEdit fieldsEdit1 = (IFieldsEdit)fields; IField incomeField1 = new FieldClass(); IFieldEdit incomeFieldEdit1 = (IFieldEdit)incomeField1; incomeFieldEdit1.AliasName_2 = "RegardP"; incomeFieldEdit1.Editable_2 = true; incomeFieldEdit1.IsNullable_2 = false; incomeFieldEdit1.Name_2 = "RegardP"; incomeFieldEdit1.Precision_2 = 2; incomeFieldEdit1.Scale_2 = 5; incomeFieldEdit1.Type_2 = esriFieldType.esriFieldTypeDouble; fieldsEdit1.AddField(incomeField1); } return(fields); }
/// <summary> /// 检查字段集合中是否存在指定类型的字段 /// </summary> /// <param name="fieldsEdit"></param> /// <param name="fieldType"></param> /// <returns></returns> public static bool IsExistFieldType(this IFieldsEdit fieldsEdit, esriFieldType fieldType) { for (int i = 0; i < fieldsEdit.FieldCount; i++) { if (fieldsEdit.get_Field(i).Type == fieldType) { return(true); } } return(false); }
//创建线图层 public IFeatureClass CreatLineFC(IFeatureDataset pFeatureDataset, IFeatureClass pPointFClass) { try { //建立shape字段 IFields pFields = new FieldsClass(); IFieldsEdit pFieldsEdit = (IFieldsEdit)pFields; IField pField = new FieldClass(); IFieldEdit pFieldEdit = (IFieldEdit)pField; pFieldEdit.Name_2 = "SHAPE"; pFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry; //设置Geometry definition IGeometryDef pGeometryDef = new GeometryDefClass(); IGeometryDefEdit pGeometryDefEdit = (IGeometryDefEdit)pGeometryDef; pGeometryDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPolyline; //点、线、面 pGeometryDefEdit.SpatialReference_2 = ClsGDBDataCommon.CreateProjectedCoordinateSystem(); pFieldEdit.GeometryDef_2 = pGeometryDef; pFieldsEdit.AddField(pField); //新建字段 pField = new FieldClass(); pFieldEdit = (IFieldEdit)pField; pFieldEdit.Name_2 = "Length"; //点类型 pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString; pFieldEdit.IsNullable_2 = true; pFieldsEdit.AddField(pField); IFeatureClass pFeatureClass = pFeatureDataset.CreateFeatureClass(textBoxX3.Text + "_GmpLine", pFields, null, null, esriFeatureType.esriFTSimple, "SHAPE", ""); FrmPointToLine frmP2L = new FrmPointToLine(m_pMapCtl.Object as IMapControl3); IFeatureLayer PFLayer = new FeatureLayerClass(); PFLayer.FeatureClass = pPointFClass; IPointCollection pPointColl = frmP2L.ReadPoint(PFLayer); List <IPolyline> LineList = CreatePolyline(pPointColl); for (int i = 0; i < LineList.Count; i++) { if (LineList[i].Length > 0) { IFeature pFeature = pFeatureClass.CreateFeature(); pFeature.Shape = LineList[i]; string sLength = ((int)(LineList[i].Length * 100.0) / 100.0).ToString() + "m"; pFeature.set_Value(pFeature.Fields.FindField("Length"), sLength); pFeature.Store(); } } return(pFeatureClass); } catch (System.Exception ex) { return(null); } }
UID myUID; // UID for the Thumbnail Builder. /// <summary> /// The following function creates a field called "ThumbNail" and adds it to the existing /// fields in the mosaic dataset catalog as a blob. /// </summary> /// <param name="myFields">List of fields added to the Mosaic Catalog</param> private static void AddingNewField(IFields myFields) { IField pField = new FieldClass(); // Create a new field object IFieldEdit objectIDFieldEditor = (IFieldEdit)pField; // Set the field editor for this field objectIDFieldEditor.Name_2 = "ThumbNail"; // Set the name of the field objectIDFieldEditor.Type_2 = esriFieldType.esriFieldTypeBlob; // Set the type of the field as Blob IFieldsEdit fieldsEditor = (IFieldsEdit)myFields; // Add the newly created field to list of existing fields fieldsEditor.AddField(pField); return; }
public static void AddField(this IFeatureClass featureClass, IField addField) { IClass pClass = featureClass as IClass; IFieldsEdit fieldsEdit = featureClass.Fields as IFieldsEdit; //IField field = new FieldClass(); //IFieldEdit2 fieldEdit = field as IFieldEdit2; //fieldEdit.Type_2 = addField.Type; //fieldEdit.Name_2 = addField.Name; //fieldEdit.AliasName_2 = addField.AliasName; pClass.AddField(addField); }
public IFeatureClass CreateFeatureClass(string string_0, esriGeometryType esriGeometryType_0, ISpatialReference ispatialReference_0, bool bool_0, bool bool_1, int int_0) { IFeatureWorkspace mWorkspace = (IFeatureWorkspace)this.m_Workspace; IFieldsEdit fieldsClass = (IFieldsEdit)(new Fields() as IFieldsEdit); FieldEdit.AddDefaultField(fieldsClass, esriGeometryType_0, ispatialReference_0, bool_0, bool_1, int_0); IFeatureClass featureClass = mWorkspace.CreateFeatureClass(string_0, fieldsClass, null, null, esriFeatureType.esriFTSimple, "Shape", ""); return(featureClass); }
/// <summary> /// 生成signature文件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void SC_CreateSampleFiles_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (SC_dataGridView.Rows.Count == 0) { return; } SaveFileDialog SaveSignatureFile = new SaveFileDialog(); SaveSignatureFile.Title = "生成Signature文件"; SaveSignatureFile.Filter = "样本文件|*.gsg"; if (SaveSignatureFile.ShowDialog() == DialogResult.OK) { IGeoDataset inputraster = SampleLayerCombox.Tag as IGeoDataset; //在临时文件夹生成featureclass,根据featureclass生成signature文件 //判断临时文件夹下是否有重名 int changefilename = 0; while (System.IO.File.Exists(Application.StartupPath + "\\temp\\TempSample" + changefilename + ".shp")) { changefilename++; } //新建featureclass字段 IFields pFields = new FieldsClass(); IFieldsEdit pFieldsEdit = pFields as IFieldsEdit; IField pField = new FieldClass(); IFieldEdit pFieldEdit = pField as IFieldEdit; pFieldEdit.Name_2 = "Shape"; pFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry; //设置geometry definition IGeometryDef pGeometryDef = new GeometryDefClass(); IGeometryDefEdit pGeometryDefEdit = pGeometryDef as IGeometryDefEdit; pGeometryDefEdit.GeometryType_2 = ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon; pGeometryDefEdit.SpatialReference_2 = inputraster.SpatialReference; pFieldEdit.GeometryDef_2 = pGeometryDef; pFieldsEdit.AddField(pField); IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactory(); IFeatureWorkspace pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(Application.StartupPath + "\\temp", 0) as IFeatureWorkspace; IFeatureClass featureclass = pFeatureWorkspace.CreateFeatureClass("TempSample" + changefilename + ".shp", pFields, null, null, esriFeatureType.esriFTSimple, "Shape", ""); //根据单元格tag中存储的多边形生成对应要素 for (int i = 0; i < SC_dataGridView.Rows.Count; i++) { IFeature feature = featureclass.CreateFeature(); feature.Shape = SC_dataGridView.Rows[i].Cells["color"].Tag as IPolygon; feature.Store(); } //生成signature文件 IGeoDataset Sampledataset = featureclass as IGeoDataset; IMultivariateOp Multivariateop = new RasterMultivariateOpClass(); Multivariateop.CreateSignatures(inputraster, Sampledataset, SaveSignatureFile.FileName + ".gsg", true); } }
private static IFieldsEdit CreateField(IFieldsEdit fieldsEdit, string fieldName, esriFieldType esriFieldType) { // ReSharper disable UseObjectOrCollectionInitializer IFieldEdit fieldEdit = new FieldClass(); fieldEdit.Type_2 = esriFieldType; fieldEdit.Name_2 = fieldName; fieldEdit.AliasName_2 = fieldName; fieldsEdit.AddField(fieldEdit); return(fieldsEdit); // ReSharper restore UseObjectOrCollectionInitializer }
public void CreateLineShpFile(string fileName, ISpatialReference pSRF) { //判断需要生成的线文件是否存在,若不存在则创建文件,若存在则将新添加的线写入文件 if (File.Exists(fileName)) { MessageBox.Show("file already exist, please change file name!"); return; } else { string pLineFile = fileName; string pFilePath = System.IO.Path.GetDirectoryName(pLineFile); string pFileName = System.IO.Path.GetFileName(pLineFile); //打开工作空间 IWorkspaceFactory pWSF = new ShapefileWorkspaceFactoryClass(); IFeatureWorkspace pWS = (IFeatureWorkspace)pWSF.OpenFromFile(pFilePath, 0); //判断文件是否存在,若不存在则创建文件 if (!(File.Exists(fileName))) { const string strShapeFieldName = "shape"; //设置字段集 IFields pFields = new FieldsClass(); IFieldsEdit pFieldsEdit = (IFieldsEdit)pFields; //设置字段 IField pField = new FieldClass(); IFieldEdit pFieldEdit = (IFieldEdit)pField; //创建类型为几何类型的字段 pFieldEdit.Name_2 = strShapeFieldName; pFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry; //为esriFieldTypeGeometry类型的字段创建几何定义,包括类型和空间参照 IGeometryDef pGeoDef = new GeometryDefClass(); //The geometry definition for the field if IsGeometry is TRUE. IGeometryDefEdit pGeoDefEdit = (IGeometryDefEdit)pGeoDef; pGeoDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPolyline; pGeoDefEdit.SpatialReference_2 = pSRF; pFieldEdit.GeometryDef_2 = pGeoDef; pFieldsEdit.AddField(pField); //add length field pField = new FieldClass(); pFieldEdit = (IFieldEdit)pField; pFieldEdit.Name_2 = "length"; pFieldEdit.Type_2 = esriFieldType.esriFieldTypeDouble; pFieldEdit.IsNullable_2 = true; pFieldsEdit.AddField(pField); //创建shapefile线图层 pWS.CreateFeatureClass(pFileName, pFields, null, null, esriFeatureType.esriFTSimple, strShapeFieldName, ""); } } }
private void button2_Click(object sender, EventArgs e) { //工作空间 IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); IFeatureWorkspace pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(pFilePath, 0) as IFeatureWorkspace; //创建字段集2 IFeatureClassDescription fcDescription = new FeatureClassDescriptionClass(); //创建必要字段 IObjectClassDescription ocDescription = (IObjectClassDescription)fcDescription; //必要字段 IFields pFields = new FieldsClass(); pFields = ocDescription.RequiredFields; //要素类的几何类型、坐标系 int shapeFileIndex = pFields.FindField(fcDescription.ShapeFieldName); IField pField = pFields.get_Field(shapeFileIndex); IGeometryDef pGeometryDef = pField.GeometryDef; IGeometryDefEdit pGeometryDefEdit = (IGeometryDefEdit)pGeometryDef; pGeometryDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPoint; ISpatialReferenceFactory pSpatialReferenceFactory = new SpatialReferenceEnvironmentClass(); //更改为可选的坐标系 IProjectedCoordinateSystem pProjectedCoordinateSystem = pSpatialReferenceFactory.CreateProjectedCoordinateSystem( (int)esriSRProjCS4Type.esriSRProjCS_Xian1980_GK_Zone_21); pGeometryDefEdit.SpatialReference_2 = pProjectedCoordinateSystem; //自定义字段 IFieldsEdit pFieldsEdit = (IFieldsEdit)pFields; addField(pFieldsEdit, "FID"); addField(pFieldsEdit, "Row"); addField(pFieldsEdit, "Column"); addField(pFieldsEdit, "Number"); //传入字段 IFieldChecker pFieldChecker = new FieldCheckerClass(); IEnumFieldError pEnumFieldError = null; IFields validatedFields = null; pFieldChecker.ValidateWorkspace = (IWorkspace)pFeatureWorkspace; pFieldChecker.Validate(pFields, out pEnumFieldError, out validatedFields); //创建要素类 IFeatureClass pFeatureClass = pFeatureWorkspace.CreateFeatureClass(pFileName, validatedFields , ocDescription.InstanceCLSID, ocDescription.ClassExtensionCLSID, esriFeatureType.esriFTSimple, fcDescription.ShapeFieldName, ""); MessageBox.Show("创建要素类成功"); }
public void AddTabField(IFieldsEdit ifieldsEdit_0, IntPtr intptr_0) { int num = TabRead._mitab_c_get_field_count(intptr_0); for (int i = 0; i < num; i++) { IFieldEdit field = new ESRI.ArcGIS.Geodatabase.Field() as IFieldEdit; field.Name_2 = TabRead._mitab_c_get_field_name(intptr_0, i); int num3 = TabRead._mitab_c_get_field_type(intptr_0, i); int num4 = TabRead._mitab_c_get_field_width(intptr_0, i); int num5 = TabRead._mitab_c_get_field_precision(intptr_0, i); switch (num3) { case 1: case 7: field.Type_2 = esriFieldType.esriFieldTypeString; field.Length_2 = num4; break; case 2: field.Type_2 = esriFieldType.esriFieldTypeInteger; field.Precision_2 = num4; break; case 3: field.Type_2 = esriFieldType.esriFieldTypeSmallInteger; field.Precision_2 = num4; break; case 4: field.Type_2 = esriFieldType.esriFieldTypeDouble; field.Precision_2 = num4; field.Scale_2 = num5; break; case 5: field.Type_2 = esriFieldType.esriFieldTypeSingle; field.Precision_2 = num4; break; case 6: field.Type_2 = esriFieldType.esriFieldTypeDate; break; default: { continue; } } ifieldsEdit_0.AddField(field); } }
private void addField(IFieldsEdit xFieldsEdit, string fieldName) { IField xField = new FieldClass(); IFieldEdit xFieldEdit = (IFieldEdit)xField; xFieldEdit.Name_2 = fieldName; //默认设置要素字段名 xFieldEdit.Type_2 = esriFieldType.esriFieldTypeInteger; //数值精度 xFieldEdit.Precision_2 = 7; xFieldEdit.Scale_2 = 3; xFieldsEdit.AddField(xField); }
/// <summary> /// 新建面图层 /// </summary> public IFeatureClass CreatePolygonLayer(IPolygon polygon) { //LocalFilePath = sfdPoint.FileName; FilePath = Application.StartupPath + "\\tempSHP"; FileName = "test"; IFields pFields = new FieldsClass(); IFieldsEdit pFieldsEdit = pFields as IFieldsEdit; IField pField = new FieldClass(); IFieldEdit pFieldEdit = pField as IFieldEdit; pFieldEdit.Name_2 = "SHAPE"; pFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry; IGeometryDef pGeometryDef = new GeometryDefClass(); IGeometryDefEdit pGeometryDefEdit = pGeometryDef as IGeometryDefEdit; pGeometryDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPolygon; pFieldEdit.GeometryDef_2 = pGeometryDef; pFieldsEdit.AddField(pField); pField = new FieldClass(); pFieldEdit = pField as IFieldEdit; pFieldEdit.Name_2 = "HEIGHT"; pFieldEdit.Type_2 = esriFieldType.esriFieldTypeDouble; pFieldsEdit.AddField(pField); IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); IFeatureWorkspace pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(FilePath, 0) as IFeatureWorkspace; IFeatureClass feaC = pFeatureWorkspace.CreateFeatureClass(FileName, pFields, null, null, esriFeatureType.esriFTSimple, "SHAPE", ""); IFeature pFeature = feaC.CreateFeature(); pFeature.Shape = polygon as IGeometry; pFeature.Store(); IFeatureCursor feaCur = feaC.Search(null, true); pFeature = feaCur.NextFeature(); while (pFeature != null) { //pFeature.set_Value(2, "181"); pFeature.Store(); pFeature = feaCur.NextFeature(); } //m_mapControl.AddShapeFile(FilePath, FileName); //m_mapControl.ActiveView.Refresh(); return(feaC); }
public IFeatureClass CreateShapefile(string sParentDirectory, string sWorkspaceName, string sFileName) { if (System.IO.Directory.Exists(sParentDirectory + sWorkspaceName)) { System.IO.Directory.Delete(sParentDirectory + sWorkspaceName, true); } IWorkspaceFactory workspaceFactory = new ShapefileWorkspaceFactoryClass(); IWorkspaceName workspaceName = workspaceFactory.Create(sParentDirectory, sWorkspaceName, null, 0); ESRI.ArcGIS.esriSystem.IName name = workspaceName as ESRI.ArcGIS.esriSystem.IName; IWorkspace workspace = (IWorkspace)name.Open(); IFeatureWorkspace featureWorkspace = workspace as IFeatureWorkspace; IFields fields = new FieldsClass(); IFieldsEdit fieldsEdit = fields as IFieldsEdit; IFieldEdit fieldEdit = new FieldClass(); fieldEdit.Name_2 = "OID"; fieldEdit.AliasName_2 = "序号"; fieldEdit.Type_2 = esriFieldType.esriFieldTypeOID; fieldsEdit.AddField((IField)fieldEdit); IGeometryDefEdit geoDefEdit = new GeometryDefClass(); ISpatialReference spatialReference = m_map.SpatialReference; geoDefEdit.SpatialReference_2 = spatialReference; geoDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPolygon; fieldEdit = new FieldClass(); string sShapeFieldName = "Shape"; fieldEdit.Name_2 = sShapeFieldName; fieldEdit.AliasName_2 = "形状"; fieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry; fieldEdit.GeometryDef_2 = geoDefEdit; fieldsEdit.AddField((IField)fieldEdit); IFeatureClass featureClass = featureWorkspace.CreateFeatureClass(sFileName, fields, null, null, esriFeatureType.esriFTSimple, "Shape", ""); if (featureClass == null) { return(null); } return(featureClass); }
/// <summary> /// 创建指定名称的FeatureClass 适用于创建Stops和Barriers /// </summary> /// <param name="workspace"></param> /// <param name="name"></param> /// <param name="spatialReference">与主窗体上的axMapcontrol的连接吧...</param> public static IFeatureClass CreateFeatureClass(IFeatureWorkspace workspace, string name, ISpatialReference spatialReference = null) { if (spatialReference == null) { spatialReference = ApplicationV.GlobalMapControl.ActiveView.FocusMap.SpatialReference; } //创建字段集 IFeatureClassDescription fcDescription = new FeatureClassDescriptionClass(); IObjectClassDescription ocDescription = (IObjectClassDescription)fcDescription; //创建字段组 IFields pFields = new FieldsClass(); IFieldsEdit pFieldsEdit = (IFieldsEdit)pFields; IField Field_OID = new FieldClass(); IFieldEdit Field_OID_EDIT = Field_OID as IFieldEdit; Field_OID_EDIT.Name_2 = "OBJECTID"; Field_OID_EDIT.Type_2 = esriFieldType.esriFieldTypeOID; Field_OID_EDIT.IsNullable_2 = false; Field_OID_EDIT.Required_2 = false; pFieldsEdit.AddField(Field_OID); //创建一个必要的东西 IGeometryDef geoDef = new GeometryDefClass(); IGeometryDefEdit geoDefEdit = (IGeometryDefEdit)geoDef; geoDefEdit.AvgNumPoints_2 = 5; geoDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPoint; geoDefEdit.GridCount_2 = 1; geoDefEdit.HasM_2 = false; geoDefEdit.HasZ_2 = false; geoDefEdit.SpatialReference_2 = spatialReference; //创建SHAPE字段 IField Field_SHAPE = new FieldClass(); IFieldEdit pFieldEdit_SHAPE = (IFieldEdit)Field_SHAPE; pFieldEdit_SHAPE.Name_2 = "SHAPE"; pFieldEdit_SHAPE.Type_2 = esriFieldType.esriFieldTypeGeometry; pFieldEdit_SHAPE.GeometryDef_2 = geoDef; //放入组 pFieldsEdit.AddField(Field_SHAPE); //正式创建要素类 return(workspace.CreateFeatureClass(name, pFields, ocDescription.ClassExtensionCLSID, ocDescription.ClassExtensionCLSID, esriFeatureType.esriFTSimple, fcDescription.ShapeFieldName, "")); }
public static bool CreateLogTable() { if (m_sysTable == null) { return(false); } //InitStaticFields(); Exception err; ITable pTable = m_sysTable.OpenTable(m_LogNAME, out err); if (pTable != null) { return(true);//若日志表已存在,返回true } IFields pFields = new FieldsClass(); IFieldsEdit pFieldsEdit = pFields as IFieldsEdit; IField pField = new FieldClass(); IFieldEdit pEdit = pField as IFieldEdit; pEdit.Name_2 = "logTime"; pEdit.Type_2 = esriFieldType.esriFieldTypeString; pEdit.Length_2 = 30; pFieldsEdit.AddField(pField); pField = new FieldClass(); pEdit = pField as IFieldEdit; pEdit.Name_2 = "logUser"; pEdit.Type_2 = esriFieldType.esriFieldTypeString; pEdit.Length_2 = 50; pFieldsEdit.AddField(pField); pField = new FieldClass(); pEdit = pField as IFieldEdit; pEdit.Name_2 = "logIP"; pEdit.Type_2 = esriFieldType.esriFieldTypeString; pEdit.Length_2 = 30; pFieldsEdit.AddField(pField); pField = new FieldClass(); pEdit = pField as IFieldEdit; pEdit.Name_2 = "logEVENT"; pEdit.Type_2 = esriFieldType.esriFieldTypeString; pEdit.Length_2 = 255; pFieldsEdit.AddField(pField); IFieldChecker pFieldChecker = new FieldCheckerClass();//检查字段有效性 pFieldChecker.ValidateWorkspace = m_gisDb.WorkSpace; IFields pValidFields = null; IEnumFieldError pEFE = null; pFieldChecker.Validate(pFields, out pEFE, out pValidFields); return(m_sysTable.CreateTable(m_LogNAME, pValidFields, out err)); }
/// <summary> /// 根据属性不同建立空的shp文件 /// </summary> /// <param name="CADfeatureClass">待转换的CAD要素类</param> /// <param name="ShpPath">存储新建空shp文件的路径</param> /// <returns>返回创建好的FeatureClass列表</returns> private List <IFeatureClass> ExportFeatureClassByAtt(IFeatureClass CADfeatureClass, string ShpPath, List <string> FieldName) { List <string> AttList = new List <string>(); List <IFeatureClass> feaClassList = new List <IFeatureClass>(); IFeatureClass target_FeatureClass; ISpatialReferenceFactory spatialReferenceFactory = new SpatialReferenceEnvironmentClass(); string s = CADfeatureClass.ShapeType.ToString(); //定义属性字段 DataManager DM = new DataManager(); IFields pFields = new FieldsClass(); IFieldsEdit pFieldsEdit = (IFieldsEdit)pFields; IField pField = new FieldClass(); IFieldEdit pFieldEdit = (IFieldEdit)pField; //设置地理属性字段,点线面,空间参考等 pFieldEdit.Name_2 = "shape"; pFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry; IGeometryDef pGeoDef = new GeometryDefClass(); IGeometryDefEdit pGeoDefEdit = pGeoDef as IGeometryDefEdit; pGeoDefEdit.GeometryType_2 = CADfeatureClass.ShapeType; pGeoDefEdit.HasM_2 = true; pGeoDefEdit.HasZ_2 = true; ISpatialReference spatialReference = DataManager.getSpatialReference(CADfeatureClass); pFieldEdit.GeometryDef_2 = pGeoDef; pFieldsEdit.AddField(pField); //遍历各字段设置其他属性字段 for (int i = 2; i < CADfeatureClass.Fields.FieldCount; i++) { pField = new FieldClass(); pFieldEdit = (IFieldEdit)pField; pFieldEdit.Name_2 = CADfeatureClass.Fields.Field[i].Name; pFieldEdit.AliasName_2 = CADfeatureClass.Fields.Field[i].AliasName; pFieldEdit.Type_2 = CADfeatureClass.Fields.Field[i].Type; pFieldsEdit.AddField(pField); } AttList = getUniqueValue(CADfeatureClass, "Layer"); int n = FieldName.Count; for (int i = 0; i < n; i++) { //建立空的shapefile target_FeatureClass = DM.CreateVoidShp(ShpPath, FieldName[i], pFields, spatialReference); feaClassList.Add(target_FeatureClass); } return(feaClassList); }
//创建shapefile public IFeatureClass CreateShapefile(string shpPath, string shpName, ISpatialReference shpRef, string shpType) ///////////模式 { IFeatureClass feaCls = null; ////////模式 IFields fields = new Fields(); IFieldsEdit fieldsEdit = fields as IFieldsEdit; IField field = new Field(); // IFieldEdit fieldEdit = field as IFieldEdit; // fieldEdit.Name_2 = "OID"; //遵守规定。。。但是都有??? fieldEdit.Type_2 = esriFieldType.esriFieldTypeOID; // fieldsEdit.AddField(field); // fieldEdit = new FieldClass(); fieldEdit.Name_2 = "NAME"; //遵守规定。。。但是都有??? fieldEdit.Type_2 = esriFieldType.esriFieldTypeString; fieldsEdit.AddField(fieldEdit as IField); //定义一个图形shape字段, //先给出几何图形的定义,包括设置图形类型和空间参考 IGeometryDefEdit geoDefEdit = new GeometryDefClass(); if (shpType == "point") { geoDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPoint; } if (shpType == "polyline") { geoDefEdit.GeometryType_2 = esriGeometryType.esriGeometryLine; } if (shpType == "polygon") { geoDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPolygon; } geoDefEdit.SpatialReference_2 = shpRef; //几何类型有空间参考属性 fieldEdit = new FieldClass(); fieldEdit.Name_2 = "Shape"; //遵守规定。。。但是都有??? fieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry; //图形参考在这里定义 ,要说明几何类型 fieldEdit.GeometryDef_2 = geoDefEdit as IGeometryDef; //////!重头戏!真有趣啊 因为是几何类型,所以在字段编辑的属性再加上几何ref fieldsEdit.AddField(fieldEdit as IField); IWorkspaceFactory workspaceFactory = new ShapefileWorkspaceFactory(); IWorkspace workspace = workspaceFactory.OpenFromFile(shpPath, 0); //调用工厂的方法; IFeatureWorkspace shpWorkspace = (IFeatureWorkspace)workspace; feaCls = shpWorkspace.CreateFeatureClass(shpName, fields, null, null, esriFeatureType.esriFTSimple, "Shape", ""); //此处发现更替路径创建会报错 return(feaCls); //////////////模式 }
/// <summary> /// 创建shape图层 /// </summary> /// <param name="strShpPath"></param> /// <param name="strFtName"></param> /// <returns></returns> public static IFeatureClass CreateShpFile(string strShpPath, string strFtName, string strAliasFtName, ISpatialReference pSpatial) { string connectionstring = "DATABASE=" + strShpPath; IWorkspaceFactory2 pFactory = (IWorkspaceFactory2) new ShapefileWorkspaceFactoryClass(); IWorkspace workspace = pFactory.OpenFromString(connectionstring, 0); IFeatureWorkspace ipFtWs = (IFeatureWorkspace)workspace; //创建字段IFields IFields pFields = new FieldsClass(); IFieldsEdit pFieldsEdit = (IFieldsEdit)pFields; ///创建几何类型字段 IField pField = new FieldClass(); IFieldEdit pFieldEdit = (IFieldEdit)pField; ////设置FID字段 //IFieldEdit ipFldEdit = new FieldClass(); //(__uuidof(Field)); //ipFldEdit.Name_2 = "FID"; //ipFldEdit.AliasName_2 = "唯一标志码"; //ipFldEdit.Type_2 = esriFieldType.esriFieldTypeOID; //pFieldsEdit.AddField(ipFldEdit); pFieldEdit.Name_2 = "Shape"; pFieldEdit.AliasName_2 = "几何类型"; pFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry; IGeometryDef pGeomDef = new GeometryDefClass(); IGeometryDefEdit pGeomDefEdit = (IGeometryDefEdit)pGeomDef; pGeomDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPoint; pGeomDefEdit.SpatialReference_2 = pSpatial; pFieldEdit.GeometryDef_2 = pGeomDef; pFieldsEdit.AddField(pField); IFeatureClass _featureClass = ipFtWs.CreateFeatureClass(strFtName, pFields, null, null, esriFeatureType.esriFTSimple, "Shape", ""); //更新图层别名 //IClassSchemaEdit ipEdit = (IClassSchemaEdit)_featureClass; //ipEdit.AlterAliasName(strAliasFtName); pFactory = null; workspace = null; ipFtWs = null; return(_featureClass); }
private IFeatureClass CreateShapeFile(string strOutFileSource, string strOutFileName, ISpatialReference spatialReference, esriGeometryType pGeometryType) { try { //Setting Output Data IWorkspaceFactory wsfOutput = new ShapefileWorkspaceFactoryClass(); IWorkspace wsOutput = wsfOutput.OpenFromFile(strOutFileSource, 0); IFeatureWorkspace fwOutput = wsOutput as IFeatureWorkspace; IFields pFields = new FieldsClass(); IFieldsEdit pFieldsEdit = pFields as IFieldsEdit; IField oidField = new FieldClass(); IFieldEdit oidFieldEdit = (IFieldEdit)oidField; oidFieldEdit.Name_2 = "OID"; oidFieldEdit.Type_2 = esriFieldType.esriFieldTypeOID; pFieldsEdit.AddField(oidField); IGeometryDef geometryDef = new GeometryDefClass(); IGeometryDefEdit geometryDefEdit = (IGeometryDefEdit)geometryDef; geometryDefEdit.GeometryType_2 = pGeometryType; if (spatialReference != null) { geometryDefEdit.SpatialReference_2 = spatialReference; } IField geometryField = new FieldClass(); IFieldEdit geometryFieldEdit = (IFieldEdit)geometryField; geometryFieldEdit.Name_2 = "Shape"; geometryFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry; geometryFieldEdit.GeometryDef_2 = geometryDef; pFieldsEdit.AddField(geometryField); IFieldChecker fieldChecker = new FieldCheckerClass(); IEnumFieldError enumFieldError = null; IFields validatedFields = null; fieldChecker.ValidateWorkspace = (IWorkspace)fwOutput; fieldChecker.Validate(pFields, out enumFieldError, out validatedFields); IFeatureClass fcOutput = fwOutput.CreateFeatureClass(strOutFileName, validatedFields, null, null, esriFeatureType.esriFTSimple, "Shape", ""); return(fcOutput); } catch (Exception ex) { MessageBox.Show("Fail to create a new shapefile."); return(null); } }
// //create fields needed in roi shp file // private IFields CreateFields() { IObjectClassDescription objectClassDescription = new FeatureClassDescriptionClass(); IFields requiredFields = objectClassDescription.RequiredFields; IFieldsEdit fieldsEdit = requiredFields as IFieldsEdit; IField field1 = new FieldClass(); IFieldEdit fieldEdit1 = field1 as IFieldEdit; fieldEdit1.Name_2 = "CLASS_NAME"; fieldEdit1.Type_2 = esriFieldType.esriFieldTypeString; fieldEdit1.Length_2 = 50; fieldsEdit.AddField(field1); return(requiredFields); }
public IFeatureClass CreateFeatureClassToAccessDB(string featureClassName, UID classExtensionUID, IFeatureWorkspace featureWorkspace) { //创建字段集合 IFields pFields = new FieldsClass(); IFieldsEdit pFieldsEdit = (IFieldsEdit)pFields; //定义单个的字段 IField pField = new FieldClass(); IFieldEdit pFieldEdit = (IFieldEdit)pField; pFieldEdit.Name_2 = "OID"; pFieldEdit.Type_2 = esriFieldType.esriFieldTypeOID; pFieldsEdit.AddField(pField); //为要素类创建几何定义和空间参考 IGeometryDef geometryDef = new GeometryDefClass(); IGeometryDefEdit pGeoDefEdit = geometryDef as IGeometryDefEdit; pGeoDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPoint; //指定创建的要素类的要素类型 ISpatialReferenceFactory spatialReferenceFactory = new SpatialReferenceEnvironmentClass(); ISpatialReference spatialReference = spatialReferenceFactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_Beijing1954); ISpatialReferenceResolution spatialReferenceResolution = (ISpatialReferenceResolution)spatialReference; spatialReferenceResolution.ConstructFromHorizon(); ISpatialReferenceTolerance spatialReferenceTolerance = (ISpatialReferenceTolerance)spatialReference; spatialReferenceTolerance.SetDefaultXYTolerance(); pGeoDefEdit.SpatialReference_2 = spatialReference; //设置要素类的空间参考 //将几何字段添加到字段集合 IField geometryField = new FieldClass(); IFieldEdit geometryFieldEdit = (IFieldEdit)geometryField; geometryFieldEdit.Name_2 = "shape"; geometryFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry; geometryFieldEdit.GeometryDef_2 = geometryDef; pFieldsEdit.AddField(geometryField); //创建字段name IField nameField = new FieldClass(); IFieldEdit nameFieldEdit = (IFieldEdit)nameField; nameFieldEdit.Name_2 = "Name"; nameFieldEdit.Type_2 = esriFieldType.esriFieldTypeString; nameFieldEdit.Length_2 = 20; pFieldsEdit.AddField(nameField); IFeatureClass featureClass = featureWorkspace.CreateFeatureClass(featureClassName, pFields, null, classExtensionUID, esriFeatureType.esriFTSimple, "Shape", ""); return(featureClass); }
/// <summary> /// 创建要素类 /// </summary> /// <param name="featureWorkspace"></param> /// <param name="name"></param> /// <param name="esriGeometryType"></param> /// <param name="fielddict"></param> /// <returns></returns> public static IFeatureClass CreateFeatureClass(IFeatureWorkspace featureWorkspace, string name, esriGeometryType esriGeometryType, Dictionary <string, GISField> fielddict) { IFields fields = new FieldsClass(); IFieldsEdit fieldsedit = fields as IFieldsEdit; IField field = new FieldClass(); IFieldEdit fieldedit = field as IFieldEdit; fieldedit.Name_2 = "shape"; fieldedit.Type_2 = esriFieldType.esriFieldTypeGeometry; IGeometryDef geometryDef = new GeometryDefClass(); IGeometryDefEdit pGeometryDefEdit = geometryDef as IGeometryDefEdit; pGeometryDefEdit.GeometryType_2 = esriGeometryType; ISpatialReferenceFactory pSpatialReferenceFactory = new SpatialReferenceEnvironmentClass(); ISpatialReference pSpatialReference = pSpatialReferenceFactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984); pSpatialReference.SetDomain(-6000000, 6000000, -6000000, 6000000); pGeometryDefEdit.SpatialReference_2 = pSpatialReference; fieldedit.GeometryDef_2 = geometryDef; fieldsedit.AddField(field); field = new FieldClass(); fieldedit = field as IFieldEdit; fieldedit.Name_2 = "FID"; fieldedit.Type_2 = esriFieldType.esriFieldTypeOID; fieldsedit.AddField(field); foreach (var entry in fielddict) { if (entry.Key.ToUpper() == "SHAPE" || entry.Key.ToUpper() == "OBJECTID") { continue; } field = new FieldClass(); fieldedit = field as IFieldEdit; fieldedit.Name_2 = entry.Key; fieldedit.Type_2 = entry.Value.Type; fieldsedit.AddField(field); } IFeatureClassDescription featureClassDescription = new FeatureClassDescriptionClass(); IObjectClassDescription objectClassDescription = featureClassDescription as IObjectClassDescription; IFeatureClass featureClass = featureWorkspace.CreateFeatureClass(name, fields, objectClassDescription.InstanceCLSID, objectClassDescription.ClassExtensionCLSID, esriFeatureType.esriFTSimple, "shape", ""); return(featureClass); }
public static void createSpatialIndex(IFeatureClass fc, double gridOneSize = 0.0, double gridTwoSize = 0.0, double gridThreeSize = 0.0) { String shapeFieldName = fc.ShapeFieldName; // Clone the shape field from the feature class. int shapeFieldIndex = fc.FindField(shapeFieldName); IFields fields = fc.Fields; IField sourceField = fields.get_Field(shapeFieldIndex); IClone sourceFieldClone = (IClone)sourceField; IClone targetFieldClone = sourceFieldClone.Clone(); IField targetField = (IField)targetFieldClone; // Open the geometry definition from the cloned field and modify it. IGeometryDef geometryDef = targetField.GeometryDef; IGeometryDefEdit geometryDefEdit = (IGeometryDefEdit)geometryDef; if (gridTwoSize > 0.0) { geometryDefEdit.GridCount_2 = 1; geometryDefEdit.set_GridSize(0, gridOneSize); } if (gridTwoSize > 0.0) { geometryDefEdit.GridCount_2 = 2; geometryDefEdit.set_GridSize(1, gridTwoSize); } if (gridThreeSize > 0.0) { geometryDefEdit.GridCount_2 = 3; geometryDefEdit.set_GridSize(2, gridThreeSize); } // Create a spatial index and set the required attributes. IIndex newIndex = new IndexClass(); IIndexEdit newIndexEdit = (IIndexEdit)newIndex; newIndexEdit.Name_2 = shapeFieldName + "_Indx"; // Create a fields collection and assign it to the new index. IFields newIndexFields = new FieldsClass(); IFieldsEdit newIndexFieldsEdit = (IFieldsEdit)newIndexFields; newIndexFieldsEdit.AddField(targetField); newIndexEdit.Fields_2 = newIndexFields; // Add the spatial index back into the feature class. fc.AddIndex(newIndex); }
private IFields CloneFeatureClassFields(IFeatureClass pFeatureClass, IEnvelope pDomainEnv) { IFields pFields = new FieldsClass(); IFieldsEdit pFieldsEdit = (IFieldsEdit)pFields; //根据传入的要素类,将除了shape字段之外的字段复制 long nOldFieldsCount = pFeatureClass.Fields.FieldCount; long nOldGeoIndex = pFeatureClass.Fields.FindField(pFeatureClass.ShapeFieldName); for (int i = 0; i < nOldFieldsCount; i++) { if (i != nOldGeoIndex) { pFieldsEdit.AddField(pFeatureClass.Fields.get_Field(i)); } else { IGeometryDef pGeomDef = new GeometryDefClass(); IGeometryDefEdit pGeomDefEdit = (IGeometryDefEdit)pGeomDef; ISpatialReference pSR = null; if (pDomainEnv != null) { pSR = new UnknownCoordinateSystemClass(); pSR.SetDomain(pDomainEnv.XMin, pDomainEnv.XMax, pDomainEnv.YMin, pDomainEnv.YMax); } else { IGeoDataset pGeoDataset = pFeatureClass as IGeoDataset; pSR = CloneSpatialReference(pGeoDataset.SpatialReference); } //设置新要素类Geometry的参数 pGeomDefEdit.GeometryType_2 = pFeatureClass.ShapeType; pGeomDefEdit.GridCount_2 = 1; pGeomDefEdit.set_GridSize(0, 10); pGeomDefEdit.AvgNumPoints_2 = 2; pGeomDefEdit.SpatialReference_2 = pSR; //产生新的shape字段 IField pField = new FieldClass(); IFieldEdit pFieldEdit = (IFieldEdit)pField; pFieldEdit.Name_2 = "shape"; pFieldEdit.AliasName_2 = "shape"; pFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry; pFieldEdit.GeometryDef_2 = pGeomDef; pFieldsEdit.AddField(pField); } } return(pFields); }
/// <summary> /// add feature feild of each feature /// </summary> /// <param name="fieldName"></param> /// <param name="aliasName"></param> /// <param name="type"></param> /// <param name="fieldsEdit"></param> private void addFeatureFeild(string fieldName, string aliasName, esriFieldType type, IFieldsEdit fieldsEdit) { IField field = new FieldClass(); IFieldEdit fieldEdit = (IFieldEdit)field; fieldEdit.Name_2 = fieldName; fieldEdit.Type_2 = type; fieldEdit.AliasName_2 = aliasName; fieldsEdit.AddField(field); }
private void AddSimpleField(IFieldsEdit fieldsEdit,esriFieldType type,string name,string aliasName) { IField field = new FieldClass(); IFieldEdit fieldEdit = field as IFieldEdit; fieldEdit.Type_2 = type; fieldEdit.Name_2 = name; fieldEdit.AliasName_2 = aliasName; fieldsEdit.AddField(field); }