public void ImportLayer(MG_Layer layer) { if (layer == null) { return; } // stop multi same data if (this.IsTableExist(layer.GetLayerName())) { return; } this.CreateTable(layer.FieldSet, layer.Type); string layerName = layer.FieldSet.GetName(); int fc = layer.GetFeatureCount(); // save ext this.CreateTableExt(); this.InsertExtent(layerName, layer.Extent); for (int i = 0; i < fc; i++) { MG_Feature f = layer.GetFeature(i); if (f.Geometry.Type == layer.Type) { this.Insert(layerName, f.ValueSet, f.Geometry); } } }
public static MG_Layer LoadShapeFile(string filePath) {// xxx\line.shp MG_Layer mgLayer = new MG_Layer(); try { Ogr.RegisterAll(); DataSource ds = Ogr.Open(filePath, 0); Layer layer = ds.GetLayerByIndex(0); mgLayer.SetLayerName(layer.GetName()); mgLayer.SetLayerType(AsGeometryType(layer.GetGeomType())); Envelope ext = new Envelope(); layer.GetExtent(ext, 1); mgLayer.Extent = AsExtent(ext); // collect data mgLayer.FieldSet = AsFieldSet(layer.GetLayerDefn()); // collect data int fc = layer.GetFeatureCount(1); for (int fid = 0; fid < fc; fid++) { Feature f = layer.GetFeature(fid); MG_Feature mgFeature = AsFeature(f); mgLayer.AddFeature(mgFeature);// collect data } } catch (Exception err) { MessageBox.Show(err.ToString()); } return(mgLayer); }
protected MG_FeatureSet GetFeatureSet(MG_FieldSet fieldSet, string table) { NpgsqlDataReader reader = this.SelectAll(table); if (reader == null || !reader.HasRows) { return(null); } MG_FeatureSet featureSet = new MG_FeatureSet(); int fc = reader.FieldCount; // 4 while (reader.Read()) {// oid f1,f2,f3... geom MG_Feature f = new MG_Feature(fieldSet); MG_ValueSet valueSet = new MG_ValueSet(); string oid = reader["oid"].ToString(); string geom = reader["geomtext"].ToString(); for (int i = 1; i < fc - 1; i++) { string str = reader[i].ToString(); MG_Value value = new MG_Value(i - 1, str); valueSet.Add(value); } f.ValueSet = valueSet; f.Geometry = MG_ShapeFileOper.AsGeometry(geom); featureSet.Add(f); } reader.Close(); reader.Dispose(); return(featureSet); }
public override void MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { Panel panel = (Panel)sender; this.FromPoint = new Point(e.X, e.Y); // draw point MG_BaseDisplay.FillPoint(panel.CreateGraphics(), brush, this.FromPoint, MG_Constant.PointRadius); // screen to map this.MapPoint = MG_BaseRender.ToPoint(this.FromPoint, this.MapView); //1 create a feature // 1.1 set geometry this.Feature.SetGeometry(this.MapPoint); // 1.2 set field value for (int i = 0; i < this.Feature.GetFieldSet().Count(); i++) { this.Feature.SetValue(i, null); } //2 create a new feature MG_Feature newFeature = new MG_Feature(this.Feature); //3 add new feature to layer this.Layer.AddFeature(newFeature); //4 clear data to store the next point this.MapPoint.Clear(); } }
public override void MouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { this.IsMouseDown = false; // screen point to map point MG_LineString MapLineString = new MG_LineString(); for (int i = 0; i < this.LineString.Count(); i++) { MG_Point screenPoint = this.LineString.GetAt(i); Point screen = new Point((int)screenPoint.x, (int)screenPoint.y); MG_Point mapPoint = MG_BaseRender.ToPoint(screen, this.MapView); MapLineString.Add(mapPoint); } MG_LineString MapLineStringOther = new MG_LineString(); for (int i = 0; i < this.LineStringOther.Count(); i++) { MG_Point screenPoint = this.LineStringOther.GetAt(i); Point screen = new Point((int)screenPoint.x, (int)screenPoint.y); MG_Point mapPoint = MG_BaseRender.ToPoint(screen, this.MapView); MapLineStringOther.Add(mapPoint); } //1 create a feature // 1.1 set geometry this.Feature.SetGeometry(MapLineString); // 1.2 set field value for (int i = 0; i < this.Feature.GetFieldSet().Count(); i++) { this.Feature.SetValue(i, null); } //2 create a new feature MG_Feature newFeature1 = new MG_Feature(this.Feature); //3 add new feature to layer this.Layer.AddFeature(newFeature1); //4 clear data to store the next linestring this.LineString.Clear(); //1 create a feature // 1.1 set geometry this.Feature.SetGeometry(MapLineStringOther); // 1.2 set field value for (int i = 0; i < this.Feature.GetFieldSet().Count(); i++) { this.Feature.SetValue(i, null); } //2 create a new feature MG_Feature newFeature2 = new MG_Feature(this.Feature); //3 add new feature to layer this.Layer.AddFeature(newFeature2); //4 clear data to store the next linestring this.LineStringOther.Clear(); } }
public static void RenderFeature(MG_Feature f, MG_MapView mapview, Graphics g) { //int realValue = GetRealValue(f.Symbol.LineWidth, mapview); Pen pen = new Pen(f.Symbol.OutlineColor, f.Symbol.LineWidth); SolidBrush brush = new SolidBrush(f.Symbol.FillColor); RenderGeometry(g, pen, brush, mapview, f.Geometry); }
public static Feature ToFeature(MG_Feature mgFeature) { // field set FeatureDefn def = ToFeatureDefn(mgFeature.GetFieldSet()); Feature f = new Feature(def); // field value int fieldCount = mgFeature.GetFieldCount(); for (int i = 0; i < fieldCount; i++) { object value = mgFeature.GetValue(i).Value; FieldType fieldType = f.GetFieldType(i); if (fieldType == FieldType.OFTString) { if (value != null) { f.SetField(i, value.ToString()); } } else if (fieldType == FieldType.OFTInteger) {// id name url if (value != null) { f.SetField(i, Int32.Parse(value.ToString())); } } else if (fieldType == FieldType.OFTReal) { if (value != null) { f.SetField(i, Double.Parse(value.ToString())); } } else if (fieldType == FieldType.OFTDateTime) { if (value != null) { DateTime dt = (DateTime)value; f.SetField(i, dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second, dt.Millisecond); } } } //geometry string wkt = mgFeature.GetGeometry().AsWKT(); Geometry g = Geometry.CreateFromWkt(wkt); // test Envelope env = new Envelope(); g.GetEnvelope(env); f.SetGeometry(g); //f.SetStyleString(null); return(f); }
public static MG_Feature AsFeature(Feature f) { FeatureDefn def = f.GetDefnRef(); MG_FieldSet fieldSet = AsFieldSet(def); MG_Feature mgFeature = new MG_Feature(fieldSet);//collect data // geometry Geometry g = f.GetGeometryRef(); MG_Geometry geometry = AsGeometry(g); string wkt = geometry.AsWKT(); // Test mgFeature.SetGeometry(geometry); //collect data // symbol string styleString = f.GetStyleString(); //f.SetStyleString(styleString); // attribute value MG_ValueSet valueSet = new MG_ValueSet(); int fid = f.GetFID(); int nFieldCount = f.GetFieldCount(); for (int iField = 0; iField < nFieldCount; iField++) { FieldDefn fdef = def.GetFieldDefn(iField); FieldType fieldType = fdef.GetFieldType();//OFTInteger OFTString OFTString MG_Value mgValue = new MG_Value(); mgValue.Index = iField;// collect data //collect data if (fieldType == FieldType.OFTString) { mgValue.Value = f.GetFieldAsString(iField); } else if (fieldType == FieldType.OFTInteger) { mgValue.Value = f.GetFieldAsInteger(iField); } else if (fieldType == FieldType.OFTReal) { mgValue.Value = f.GetFieldAsDouble(iField); } else if (fieldType == FieldType.OFTDateTime) { int year, month, day, hour, minute, second, flag; f.GetFieldAsDateTime(iField, out year, out month, out day, out hour, out minute, out second, out flag); mgValue.Value = new DateTime(year, month, day, hour, minute, second, flag); } valueSet.Add(mgValue); } mgFeature.ValueSet = valueSet;//collect data return(mgFeature); }
public override void MouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { this.IsMouseDown = false; Panel panel = (Panel)sender; if (this.Step == 0) { } else if (this.Step == 1) { } else if (this.Step == 2) { // add last point this.Point3 = new Point(e.X, e.Y); MG_Point mapPoint3 = MG_BaseRender.ToPoint(Point3, this.MapView); this.LineString.Add(mapPoint3); // add first point again(same to first point) MG_Point firstPoint = MG_BaseRender.ToPoint(this.FromPoint, this.MapView); this.LineString.Add(firstPoint); // add to polygon this.Polygon.Add(this.LineString); //1 create a feature // 1.1 set geometry this.Feature.SetGeometry(this.Polygon); // 1.2 set field value for (int i = 0; i < this.Feature.GetFieldSet().Count(); i++) { this.Feature.SetValue(i, null); } //2 create a new feature MG_Feature newFeature = new MG_Feature(this.Feature); //3 add new feature to layer this.Layer.AddFeature(newFeature); //4 clear data to store the next linestring this.Polygon.Clear(); this.LineString.Clear(); // 5 reset control params this.Step = 0; this.FromPoint = Point.Empty; this.ToPoint = Point.Empty; this.Point3 = Point.Empty; } } }
public MG_BaseTool(MG_ToolType type, MG_Layer layer, MG_MapView mapview) { this.ToolType = type; this.Layer = layer; this.MapView = mapview; if (layer != null) {// pan tool: layer==null this.Feature = new MG_Feature(this.Layer.GetFieldSet()); } // empty point this.FromPoint = Point.Empty; this.ToPoint = Point.Empty; this.Point3 = Point.Empty; this.SelectRect = Rectangle.Empty; }
private DataTable GetDataTable(MG_Layer layer) { // Create a new DataTable. DataTable table = new DataTable(layer.GetLayerName()); // add oid DataColumn oid_Column = new DataColumn("OID", Type.GetType("System.Int32")); table.Columns.Add(oid_Column); int i, j; // Add the column for (i = 0; i < layer.GetFieldSet().Count(); i++) { MG_Field field = layer.GetFieldSet().GetAt(i); DataColumn column = new DataColumn(field.Name); column.DataType = Type.GetType("System.String"); // Add the Column to the DataColumnCollection. table.Columns.Add(column); } // Add the row for (i = 0; i < layer.GetFeatureCount(); i++) { MG_Feature f = layer.GetFeature(i); DataRow row = table.NewRow(); // add oid row[0] = i + 1; for (j = 0; j < f.GetFieldCount(); j++) { object value = f.GetValue(j).Value; if (value != null) { row[j + 1] = value.ToString(); } } // Add the row to the DataRowCollection. table.Rows.Add(row); } return(table); }