コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
ファイル: MG_MapRender.cs プロジェクト: justasabc/minigis
 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);
         }
     }
 }
コード例 #3
0
        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());
            }
        }
コード例 #4
0
        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);
        }