生成雷击点的函数代码如下所示: /// <summary> /// 生成sde数据库中的点 /// </summary> /// <param name="pFeatureWorkspace">要素类工作空间</param> /// <param name="dt">DataTable</param> public void AddFeatureToFeatureClass(IFeatureWorkspace pFeatureWorkspace, DataTable dt) { //加载图层 IFeatureClass pFeatureClass = pFeatureWorkspace.OpenFeatureClass("LightningStroke"); IFeatureLayer pFeatureLayer = new FeatureLayerClass(); pFeatureLayer.FeatureClass = pFeatureClass; IWorkspaceEdit pWorkspaceEdit; pWorkspaceEdit = pFeatureWorkspace as IWorkspaceEdit; //开始编辑 pWorkspaceEdit.StartEditing(false); pWorkspaceEdit.StartEditOperation(); IFeature pFeature; for (int i = 0; i < dt.Rows.Count; i++) { //进行数据类型转换 double longitude = Convert.ToDouble(dt.Rows[i]["Longitude"].ToString()); double latitude = Convert.ToDouble(dt.Rows[i]["Latitude"].ToString()); int ID = Convert.ToInt32(dt.Rows[i]["ID"].ToString()); int number = Convert.ToInt32(dt.Rows[i]["Number"].ToString()); DateTime date = Convert.ToDateTime(dt.Rows[i]["Date"].ToString()); string gPSTime = dt.Rows[i]["GPSTime"].ToString(); double intensity = Convert.ToDouble(dt.Rows[i]["Intensity"].ToString()); double steepness = Convert.ToDouble(dt.Rows[i]["Steepness"].ToString()); double error = Convert.ToDouble(dt.Rows[i]["Error"].ToString()); int locationPosition = Convert.ToInt16(dt.Rows[i]["LocationPosition"].ToString()); string province = dt.Rows[i]["Province"].ToString(); string city = dt.Rows[i]["City"].ToString(); string county = dt.Rows[i]["County"].ToString(); //定义一个点,用来作为IFeature实例的形状属性,即shape属性 IPoint p = new PointClass(); //下面是设置点的坐标和参考系 // p.SpatialReference = this.axMapControl1.SpatialReference; p.X = longitude; p.Y = latitude; //将IPoint设置为IFeature的shape属性时,需要通过中间接口IGeometry转换 IGeometry pGeom = p; pFeature = pFeatureClass.CreateFeature(); //设置IFeature对象的形状属性 pFeature.Shape = pGeom; //设置IFeature对象的其他属性 pFeature.set_Value(1, ID); pFeature.set_Value(2, number); pFeature.set_Value(3, date); pFeature.set_Value(4, gPSTime); pFeature.set_Value(5, intensity); pFeature.set_Value(6, steepness); pFeature.set_Value(7, error); pFeature.set_Value(8, locationPosition); pFeature.set_Value(9, province); pFeature.set_Value(10, city); pFeature.set_Value(11, county); pFeature.Store(); //定义一个实现新增要素的接口实例,并该实例作用于当前图层的要素集 IFeatureClassWrite fr = (IFeatureClassWrite)pFeatureClass; //将IFeature对象添加到当前图层上 fr.WriteFeature(pFeature); } //停止编辑 pWorkspaceEdit.StopEditOperation(); pWorkspaceEdit.StopEditing(true); }