//
生成新的shapefile
IFields pFields
=
new
FieldsClass();
IFieldsEdit pFieldsEdit
=
pFields
as
IFieldsEdit;
IField pField
=
new
FieldClass();
IFieldEdit pFieldEdit
=
pField
as
IFieldEdit;
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
pFieldEdit.Name_2
=
"
shape
"
;
pFieldEdit.Type_2
=
esriFieldType.esriFieldTypeGeometry;
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
IGeometryDef pGeometryDef
=
new
GeometryDefClass();
IGeometryDefEdit pGeoDefEdit
=
pGeometryDef
as
IGeometryDefEdit;
pGeoDefEdit.GeometryType_2
=
esriGeometryType.esriGeometryPolygon;
pGeoDefEdit.SpatialReference_2
=
axMapControl1.SpatialReference;
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
pFieldEdit.GeometryDef_2
=
pGeometryDef;
pFieldsEdit.AddField(pField);
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
pField
=
new
FieldClass();
pFieldEdit
=
pField
as
IFieldEdit;
pFieldEdit.Length_2
=
10
;
pFieldEdit.Name_2
=
"
CODE
"
;
pFieldEdit.AliasName_2
=
"
CODE
"
;
pFieldEdit.Type_2
=
esriFieldType.esriFieldTypeString;
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
pFieldsEdit.AddField(pField);
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
String MapPath
=
@"
E:\data\result
"
;
String LayerName
=
"
AddFeature
"
;
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
IWorkspaceFactory pWsf
=
new
ShapefileWorkspaceFactory();
IFeatureWorkspace pFws
=
pWsf.OpenFromFile(MapPath,
0
)
as
IFeatureWorkspace;
IFeatureClass pFeatureClass
=
pFws.CreateFeatureClass(LayerName
+
"
.shp
"
, pFields,
null
,
null
, esriFeatureType.esriFTSimple,
"
shape
"
,
""
);
新建shapefile,自定义字段,路径自定义。
在文件里加入POLYGON,自定义字段值
IDataset pDataset
=
(IDataset)pFeatureClass;
pFws
=
(IFeatureWorkspace)pDataset.Workspace;
IWorkspaceEdit pWorkspaceEdit
=
(IWorkspaceEdit)pFws;
pWorkspaceEdit.StartEditing(
true
);
pWorkspaceEdit.StartEditOperation();
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
IFeatureBuffer pFeatureBuffer
=
pFeatureClass.CreateFeatureBuffer();
//
Create insert Feature Cursor using buffering = true.
IFeatureCursor pFeatCursor
=
pFeatureClass.Insert(
true
);
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
object
featureOID;
//
定义新加元素的值
pFeatureBuffer.set_Value(pFeatureBuffer.Fields.FindField(
"
CODE
"
),
"
CODE
"
);
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
//
生成Polygon**********************************************************
IPolygon poly
=
new
PolygonClass();
IPoint pPoint
=
new
PointClass();
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
object
o
=
Type.Missing;
IPointCollection pPc
=
new
MultipointClass();
pPc
=
(IPointCollection)poly;
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
for
(
int
i
=
0
; i
<=
0
; i
++
)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
pPoint.PutCoords(200, 400);
pPc.AddPoint(pPoint, ref o, ref o);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
pPoint.PutCoords(400, 400);
pPc.AddPoint(pPoint, ref o, ref o);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
pPoint.PutCoords(400, 200);
pPc.AddPoint(pPoint, ref o, ref o);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
pPoint.PutCoords(200, 200);
pPc.AddPoint(pPoint, ref o, ref o);
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
//
生成完毕 ************************************************************
pFeatureBuffer.Shape
=
poly;
featureOID
=
pFeatCursor.InsertFeature(pFeatureBuffer);
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
//
Flush the feature cursor to the database
//
Calling flush allows you to handle any errors at a known time rather then on the cursor destruction.
pFeatCursor.Flush();
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
pWorkspaceEdit.StopEditOperation();
pWorkspaceEdit.StopEditing(
true
);
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
//
释放Cursor
System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeatCursor);
axMapControl1.AddShapeFile(MapPath,LayerName
+
"
.shp
"
);
转载于:https://www.cnblogs.com/secenes/archive/2008/07/17/1245165.html