创建shape文件,type为文件类型,分为点、线、面
其中,对于坐标系的设置,可设可不设,想设的话,把那几行注释掉就可以了。
private IFeatureClass createShape(string type)
{
string filePath = this.textEdit2.Text;
string strFolder = System.IO.Path.GetDirectoryName(this.textEdit2.Text);
string fileName_1 = filePath.Substring(filePath.LastIndexOf("//") + 1, filePath.LastIndexOf(".") - filePath.LastIndexOf("//") - 1);
string fileName_2 = filePath.Substring(filePath.LastIndexOf("."), filePath.Length - filePath.LastIndexOf("."));
string strName = fileName_1 + fileName_2;
string strShapeFieldName = "Shape";
IWorkspaceFactory pWorkSpaceF = new ShapefileWorkspaceFactoryClass();
IFeatureWorkspace pFWS = pWorkSpaceF.OpenFromFile(strFolder, 0) as IFeatureWorkspace;
//设置坐标系
//ISpatialReferenceFactory ispfac = new SpatialReferenceEnvironmentClass();
//IProjectedCoordinateSystem iprocoorsys = ispfac.CreateProjectedCoordinateSystem((int)esriSRProjCS4Type.esriSRProjCS_Xian1980_3_Degree_GK_CM_114E);
IFields oFields;
IFieldsEdit pFieldsEdit;
oFields = new FieldsClass();
pFieldsEdit = oFields as IFieldsEdit;
IField pField;
IFieldEdit pFieldEdit;
//'为shapefile进行一些设置
pField = new FieldClass();
pFieldEdit = pField as IFieldEdit;
pFieldEdit.Name_2 = "Shape";
pFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry;
IGeometryDef pGeomDef;
IGeometryDefEdit pGeomDefEdit;
pGeomDef = new GeometryDefClass();
pGeomDefEdit = pGeomDef as IGeometryDefEdit;
//ISpatialReference pSpatialReference = iprocoorsys as ISpatialReference;
ISpatialReference pSpatialReference = null;
if (type == "point")
{
pGeomDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPoint;
}
else if (type == "polyline")
{
pGeomDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPolyline;
}
else if (type == "polygon")
{
pGeomDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPolygon;
}
pGeomDefEdit.SpatialReference_2 = pSpatialReference;
pFieldEdit.GeometryDef_2 = pGeomDef;
pFieldsEdit.AddField(pField);
IFeatureClass pOutFeatureClass = null;
pOutFeatureClass = pFWS.CreateFeatureClass(strName, oFields, null, null, esriFeatureType.esriFTSimple, strShapeFieldName, "");
return pOutFeatureClass;
}