public void FinishEdit() { lists.Add(editingpoints); switch (geometrytype) { case OSGeo.OGR.wkbGeometryType.wkbPoint: foreach (List <PointD> onelist in lists) { for (int i = 0; i < onelist.Count; i++) { Feature pointfeature = new Feature(EditingFeaturesource.GetNextFeatureID(), EditingFeaturesource.schema, onelist[i]); LogItem_CreateFeature logitem_create_point = new LogItem_CreateFeature(this.layername, pointfeature.featureID); Utils.gislog.AddLog(logitem_create_point); EditingFeaturesource.features.InsertFeature(pointfeature); } } break; case OSGeo.OGR.wkbGeometryType.wkbLineString: foreach (List <PointD> onelist in lists) { SimplePolyline simplepolyline = new SimplePolyline(onelist); Feature linefeature = new Feature(EditingFeaturesource.GetNextFeatureID(), EditingFeaturesource.schema, simplepolyline); LogItem_CreateFeature logitem_create_line = new LogItem_CreateFeature(this.layername, linefeature.featureID); Utils.gislog.AddLog(logitem_create_line); EditingFeaturesource.features.InsertFeature(linefeature); } break; case OSGeo.OGR.wkbGeometryType.wkbPolygon: List <SimplePolyline> rings = new List <SimplePolyline>(); foreach (List <PointD> onelist in lists) { onelist.Add(onelist.First()); SimplePolyline onering = new SimplePolyline(onelist); rings.Add(onering); } SimplePolygon simplepolygon = new SimplePolygon(rings); Feature polygonfeature = new Feature(EditingFeaturesource.GetNextFeatureID(), EditingFeaturesource.schema, simplepolygon); LogItem_CreateFeature logitem_create_polygon = new LogItem_CreateFeature(this.layername, polygonfeature.featureID); Utils.gislog.AddLog(logitem_create_polygon); EditingFeaturesource.features.InsertFeature(polygonfeature); break; } this.editstatus = EditStatus.finished; }