示例#1
0
 private void 导出CycloneToolStripMenuItem_Click(object sender, EventArgs e)
 {
     if (ImportCyclone == true)
     {
         string bat = "cd D:\r\n D:\r\n cd D:\\PostgreSQL\\9.6\\bin\r\n" +
                      "pgsql2shp -f D:\\cyclone.shp -u postgres mypostdb cyclone";
         File.WriteAllText("test.bat", bat);
         Process.Start("test.bat");
         string     path     = "D:\\cyclone.shp"; //文件路径
         string     name     = "cyclone.shp";     //文件名
         FileStream F        = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite);
         MapLayer   mapLayer = new MapLayer(name, "Shp", path);
         //获取外接矩形
         DataSource ds    = Ogr.Open(path, 0);
         Layer      layer = ds.GetLayerByIndex(0);
         Envelope   ext   = new Envelope();
         layer.GetExtent(ext, 1);
         mapLayer.SetExtent((float)ext.MinX, (float)ext.MinY, (float)ext.MaxX, (float)ext.MaxY);
         //添加新图层至地图
         if (tVLayers.Nodes.Count == 0)
         {
             tVLayers.Nodes.Add("图层");
         }
         tVLayers.Nodes[0].Nodes.Add(name);
         tVLayers.ExpandAll();
         mapControl._MapLayers.Add(mapLayer);
         mapControl.Extent(mapControl._MapLayers[mapControl._MapLayers.Count - 1]);
         F.Close();
     }
     else
     {
         MessageBox.Show("请先将矢量数据导入数据库!");
     }
 }
示例#2
0
        //添加栅格图层
        public void AddTiffLayer(string path, string name)
        {
            MapLayer mapLayer = new MapLayer(name, "Tiff", path);
            //获取外接矩形
            Dataset ds = Gdal.Open(path, Access.GA_ReadOnly);

            double[] adfGeoTransform = new double[6];
            float    minX, minY, maxX, maxY;

            ds.GetGeoTransform(adfGeoTransform);
            minX = (float)(adfGeoTransform[0] + adfGeoTransform[2] * ds.RasterYSize);
            minY = (float)(adfGeoTransform[3] + adfGeoTransform[5] * ds.RasterYSize);
            maxX = (float)(adfGeoTransform[0] + adfGeoTransform[1] * ds.RasterXSize);
            maxY = (float)(adfGeoTransform[3] + adfGeoTransform[4] * ds.RasterXSize);
            mapLayer.SetExtent(minX, minY, maxX, maxY);
            _MapLayers.Add(mapLayer);
            Extent(_MapLayers[_MapLayers.Count - 1]);
        }
示例#3
0
        //添加矢量图层
        public void AddShpLayer(string path, string name)
        {
            MapLayer  mapLayer = new MapLayer(name, "Shp", path);
            dbfReader reader   = new dbfReader();
            string    dbfPath  = path.Remove(path.Length - 4) + ".dbf";

            reader.Open(dbfPath);
            mapLayer.DT = reader.GetDataTable();
            reader.Close();
            DataSource ds    = Ogr.Open(path, 0);
            Layer      layer = ds.GetLayerByIndex(0);
            Envelope   ext   = new Envelope();

            layer.GetExtent(ext, 1);
            mapLayer.SetExtent((float)ext.MinX, (float)ext.MinY, (float)ext.MaxX, (float)ext.MaxY);
            _MapLayers.Add(mapLayer);
            Extent(_MapLayers[_MapLayers.Count() - 1]);
        }