private void CreateFeatureLayer(string outfileNamePath)
{
int index = outfileNamePath.LastIndexOf('\\');
string folder = outfileNamePath.Substring(0,index );
ShapefileFullName = outfileNamePath.Substring(index +1);
IWorkspaceFactory pWSF = new ShapefileWorkspaceFactoryClass();
IWorkspace pWS = pWSF.OpenFromFile(folder, 0);
IFeatureWorkspace pFWS = pWS as IFeatureWorkspace;
if (File.Exists(outfileNamePath))
{
IFeatureClass featureClass = pFWS.OpenFeatureClass(ShapefileFullName );
IDataset pDataset = featureClass as IDataset;
pDataset.Delete();
}
IField pField;
IFields pFields = new FieldsClass();
IFieldsEdit pFieldsEdit;
pFieldsEdit = pFields as IFieldsEdit;
pField = new FieldClass();
IFieldEdit pFieldEdit = pField as IFieldEdit;
pFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry;
pFieldEdit.Name_2 = "Shape";
IGeometryDef pGeomDef = new GeometryDefClass();
IGeometryDefEdit pGeomDefEdit = pGeomDef as IGeometryDefEdit;
pGeomDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPoint;
ISpatialReferenceFactory pSpatRefFat = new SpatialReferenceEnvironmentClass();
IGeographicCoordinateSystem pGeoSys;
pGeoSys = pSpatRefFat.CreateGeographicCoordinateSystem(4214);
pGeomDefEdit.SpatialReference_2 = pGeoSys;
// pGeomDefEdit.SpatialReference_2 = new GeographicCoordinateSystemClass();
pFieldEdit.GeometryDef_2 = pGeomDef;
pFieldsEdit.AddField(pField);
pField = new FieldClass();
pFieldEdit = pField as IFieldEdit;
pFieldEdit.Length_2 = 20;
pFieldEdit.Name_2 = "unKnow";
pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
pFieldsEdit.AddField(pField);
IFeatureClass pFeatureClass;
pFeatureClass = pFWS.CreateFeatureClass(ShapefileFullName, pFields, null, null, esriFeatureType.esriFTSimple, "Shape", "");
IFeatureLayer pFeatureLayer = new FeatureLayerClass();
pFeatureLayer.FeatureClass = pFeatureClass;
}
private void CreateFeatureLayer(string outfileNamePath)
{
int index = outfileNamePath.LastIndexOf('\\');
string folder = outfileNamePath.Substring(0, index);//文件夹的路径
ShapefileFullName = outfileNamePath.Substring(index + 1);//shapeFileFullName的全称是文件的名称(不包括前面的地址)
IWorkspaceFactory pWSF = new ShapefileWorkspaceFactoryClass();
IFeatureWorkspace pFWS = pWSF.OpenFromFile(folder, 0) as IFeatureWorkspace;
if (File.Exists(outfileNamePath))
{
IFeatureClass featureClass = pFWS.OpenFeatureClass(ShapefileFullName);
IDataset pDataset = featureClass as IDataset;
pDataset.Delete();
}
IFields pFields = new FieldsClass();
IFieldsEdit pFieldsEdit;
pFieldsEdit = pFields as IFieldsEdit;
IField pField = new FieldClass();
IFieldEdit pFieldEdit = (IFieldEdit)pField;
pFieldEdit.Name_2 = "Shape";
pFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry;
IGeometryDef pGeometryDef = new GeometryDefClass();
IGeometryDefEdit pGDefEdit = pGeometryDef as IGeometryDefEdit;
pGDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPolygon;//这里注意esriGeometrypolygon or esriGeometryPolyline
//这里出现一个问题:在GeometryDefEdit中GeometryDef属性
pFieldEdit.GeometryDef_2 = pGeometryDef;
pFieldsEdit.AddField(pField);
pField = new FieldClass();
pFieldEdit = (IFieldEdit)pField;
pFieldEdit.Name_2 = "UnKnown";
pFieldEdit.Length_2 = 20;
pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
pFieldsEdit.AddField(pField);
IFeatureClass pFeatureClass;
pFeatureClass = pFWS.CreateFeatureClass(ShapefileFullName, pFields, null, null, esriFeatureType.esriFTSimple, "Shape", "");
}