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 void RenderLayer(MG_Layer layer, MG_MapView mapview, Graphics g) { if (layer.GetVisible()) { for (int i = 0; i < layer.GetFeatureCount(); i++) { RenderFeature(layer.GetFeature(i), mapview, g); } } }
public static void CreateShapeFile(MG_Layer mgLayer, string filePath) { string dataSourceName = filePath; string layerName = Path.GetFileNameWithoutExtension(filePath); mgLayer.SetLayerPath(filePath); try { Ogr.RegisterAll(); string driverName = "ESRI Shapefile"; Driver driver = Ogr.GetDriverByName(driverName); if (File.Exists(dataSourceName)) { //System.IO.File.Delete(dataSourceName);// only remove xxx.shp driver.DeleteDataSource(dataSourceName);// reomve xxx.shp dbf shx } DataSource ds = driver.CreateDataSource(dataSourceName, new string[] { }); wkbGeometryType gt = TowkbGeometryType(mgLayer.Type);// retrieve data Layer layer = ds.CreateLayer(layerName, null, gt, new string[] { }); // create three files xxx.shp xxx.dbf xxx.shx // fieldset int fieldCount = mgLayer.FieldSet.Count(); for (int i = 0; i < fieldCount; i++) { MG_Field field = mgLayer.FieldSet.GetAt(i); FieldDefn def = ToFieldDefn(field); layer.CreateField(def, 1); } // feature int featureCount = mgLayer.GetFeatureCount(); for (int i = 0; i < featureCount; i++) { Feature f = ToFeature(mgLayer.GetFeature(i)); layer.CreateFeature(f); f.Dispose(); } // flush data to file layer.Dispose(); ds.Dispose(); driver.Dispose(); } catch (System.Exception ex) { MessageBox.Show(ex.ToString()); } }
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); }