private IFeatureClass ExportToShapefile(string fileNamePath, List<Graphic> graphicsList, ISpatialReference ipSpatialRef)
{
int index = fileNamePath.LastIndexOf('\\');
string folder = fileNamePath.Substring(0, index);
string nameOfShapeFile = fileNamePath.Substring(index + 1);
string shapeFieldName = "Shape";
IFeatureClass featClass = null;
using (ComReleaser oComReleaser = new ComReleaser())
{
try
{
IWorkspaceFactory workspaceFactory = null;
workspaceFactory = new ShapefileWorkspaceFactoryClass();
IWorkspace workspace = workspaceFactory.OpenFromFile(folder, 0);
IFeatureWorkspace featureWorkspace = workspace as IFeatureWorkspace;
IFields fields = null;
IFieldsEdit fieldsEdit = null;
fields = new Fields();
fieldsEdit = (IFieldsEdit)fields;
IField field = null;
IFieldEdit fieldEdit = null;
field = new FieldClass();///###########
fieldEdit = (IFieldEdit)field;
fieldEdit.Name_2 = "Shape";
fieldEdit.Type_2 = (esriFieldType.esriFieldTypeGeometry);
IGeometryDef geomDef = null;
IGeometryDefEdit geomDefEdit = null;
geomDef = new GeometryDefClass();///#########
geomDefEdit = (IGeometryDefEdit)geomDef;
//This is for line shapefiles
geomDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPolyline;
geomDefEdit.SpatialReference_2 = ipSpatialRef;
fieldEdit.GeometryDef_2 = geomDef;
fieldsEdit.AddField(field);
////Add another miscellaneous text field
//field = new FieldClass();
//fieldEdit = (IFieldEdit)field;
//fieldEdit.Length_2 = 30;
//fieldEdit.Name_2 = "TextField";
//fieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
//fieldsEdit.AddField(field);
featClass = featureWorkspace.CreateFeatureClass(nameOfShapeFile, fields, null, null, esriFeatureType.esriFTSimple, shapeFieldName, "");
foreach (Graphic graphic in graphicsList)
{
IFeature feature = featClass.CreateFeature();
feature.Shape = graphic.Geometry;
feature.Store();
}
IFeatureLayer featurelayer = null;
featurelayer = new FeatureLayerClass();
featurelayer.FeatureClass = featClass;
featurelayer.Name = featClass.AliasName;
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(workspace);
workspace = null;
GC.Collect();
return featClass;
}
catch (Exception ex)
{
return featClass;
}
}
}