主窗口创建点击事件,针对交互窗口打开
将map传递给交互窗口事件
交互窗口的确定click事件下的代码,textBox按窗口排列顺序
DataOperator类下的CreateShapefile函数,也可以直接将该函数放在交互窗体中
public IFeatureClass CreateShapefile( String sParentDirectory, String sFileName, String sWorkspaceName)
{
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);
fieldEdit = new FieldClass();
fieldEdit.Name_2 = "Name";
fieldEdit.AliasName_2 = "名称";
fieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
fieldsEdit.AddField((IField)fieldEdit);
IGeometryDefEdit geoDefEdit = new GeometryDefClass();
ISpatialReference spatialReference = m_map.SpatialReference;
geoDefEdit.SpatialReference_2 = spatialReference;
geoDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPolygon;//esriGeometryType.esriGeometryPoint;这是点shape,
esriGeometryType.esriGeometryPolyline;这是线shape,两者与面shape文件操作相同
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;
}