- IWorkspaceFactory pShpWksFact = new ShapefileWorkspaceFactory();
- IFeatureWorkspace pFeatWks;
- pFeatWks = (IFeatureWorkspace)pShpWksFact.OpenFromFile(filePath, 0);
- const string strShapeFieldName = "Shape";
- //定义属性字段
- IFields pFields = new Fields();
- IFieldsEdit pFieldsEdit;
- pFieldsEdit = pFields as IFieldsEdit;
- IField pField = new Field();
- IFieldEdit pFieldEdit = new Field() as IFieldEdit;
- pFieldEdit.Name_2 = strShapeFieldName;
- pFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry;
- pField = pFieldEdit as IField;
- //定义几何属性
- IGeometryDef pGeomDef = new GeometryDef();
- IGeometryDefEdit pGeomDefEdit = new GeometryDef() as IGeometryDefEdit;
- pGeomDefEdit = pGeomDef as IGeometryDefEdit;
- switch (shpTypeComboBox.Text)
- {
- case "Point":
- pGeomDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPoint;
- break;
- case "Polyline":
- pGeomDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPolyline;
- break;
- case "Polygon":
- pGeomDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPolygon;
- break;
- }
- pGeomDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPolyline;
- pGeomDefEdit.SpatialReference_2 = new UnknownCoordinateSystem() as ISpatialReference;
- pFieldEdit.GeometryDef_2 = pGeomDef;
- pFieldsEdit.AddField(pField);
- pFields = pFieldsEdit as IFields;
- IFeatureClass pFeatureClass;
- pFeatureClass = pFeatWks.CreateFeatureClass(fileName, pFields, null, null,
- esriFeatureType.esriFTSimple, strShapeFieldName, "");
- //添加属性字段
- for (int i = 0; i < addFieldListBox.Items.Count; i++)
- {
- IField pfield = new Field();
- IFieldEdit pfieldEdit = new Field() as IFieldEdit;
- pfieldEdit.Name_2 = addFieldListBox.Items[i].ToString();
- pfieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
- pfield = pfieldEdit as IField;
- pFeatureClass.AddField(pfield);
- }
- //绘制线
- IFeatureClassWrite fr = pFeatureClass as IFeatureClassWrite;
- IWorkspaceEdit w = (pFeatureClass as IDataset).Workspace as IWorkspaceEdit;
- IFeature f;
- //可选参数的设置
- object Missing = Type.Missing;
- IPoint p = new PointClass();
- w.StartEditing(true);
- w.StartEditOperation();
- //定义一个多义线对象
- IPolyline PlyLine = new PolylineClass();
- //定义一个点的集合
- IPointCollection ptclo = PlyLine as IPointCollection;
- ISpatialReferenceFactory spatialReferenceFactory = new SpatialReferenceEnvironmentClass();
- ISpatialReference spatialReference = spatialReferenceFactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984);
- for (int i = 0; i < excelDataGridViewX.Rows.Count - 1; i++)
- {
- f = pFeatureClass.CreateFeature();
- DataGridViewRow dataRow = excelDataGridViewX.Rows[i];
- double pointX, pointY;
- pointX = double.Parse(dataRow.Cells[xComboBoxEx.Text].Value.ToString());
- pointY = double.Parse(dataRow.Cells[yComboBoxEx.Text].Value.ToString());
- p.PutCoords(pointX,pointY);
- ptclo.AddPoint(p, ref Missing, ref Missing);
- for (int j = 0; j < addFieldListBox.Items.Count; j++)
- {
- string fieldName = addFieldListBox.Items[j].ToString();
- f.set_Value(f.Fields.FindField(fieldName),
- dataRow.Cells[fieldName].Value.ToString());
- }
- IPolyline ppolyline = new PolylineClass();
- ppolyline = (IPolyline)ptclo;
- ppolyline.SpatialReference = spatialReference;
- f.Shape = ppolyline;
- fr.WriteFeature(f);
- }
- //f.Store();
- w.StopEditOperation();
- w.StopEditing(true);
- //添加新建的数据至Map中
- axMapControl.AddShapeFile(filePath, fileName);
- //this.Hide();