コード例 #1
0
        static void Main(string[] args)
        {
            Console.WriteLine("Fun fun abstract");
            TxTReader txtReader = new TxTReader();

            txtReader.OpenFile("mis");
            CleanUpReader(txtReader);

            WordReader wordReader = new WordReader();

            wordReader.OpenFile("pies");
            CleanUpReader(wordReader);

            ZipReader zipReader = new ZipReader();

            zipReader.OpenFile("kot");
            zipReader.CheckStats();
            CleanUpReader(zipReader);


            //Fun fun interface
            Console.WriteLine("Fun fun interface");
            MSSQLAccess msSqlAccess = new MSSQLAccess();

            msSqlAccess.OpenConnection();
            GetDataFromDb(msSqlAccess);

            OracleAccess oracleAccess = new OracleAccess();

            oracleAccess.OpenConnection();
            GetDataFromDb(oracleAccess);

            MockDataAccess mockDataAccess = new MockDataAccess();

            GetDataFromDb(mockDataAccess);

            Console.ReadLine();
        }
コード例 #2
0
        Boolean FloodStart()
        {
            //读入dem,manning,rain
            this.Invoke(pm.addInfomation, new object[] { "正在读取DEM文件..." });
            DemPath = txbDemIpute.Text;
            GISdataManager.readRaster(DemPath, ref demRaster);
            dem = GISdataManager.Raster2Mat(demRaster);
            this.Invoke(pm.addInfomation, new object[] { "DEM数据读取完毕,并写入DEM数组中" });
            this.Invoke(pm.addInfomation, new object[] { "正在读取曼宁系数文件..." });
            ManningPath = txbManingInput.Text;
            GISdataManager.readRaster(ManningPath, ref manningRaster);
            manNing = GISdataManager.Raster2Mat(manningRaster);
            this.Invoke(pm.addInfomation, new object[] { "曼宁系数数据读取完毕,并写入曼宁系数数组中" });
            RainRecordPath = txbRaintxt.Text;
            rainRecordList = TxTReader.txt2List2(RainRecordPath);
            this.Invoke(pm.addInfomation, new object[] { "正在判断雨量格式是否正确..." });
            if (rainRecordList.Count > 0)
            {
                this.Invoke(pm.addInfomation, new object[] { "雨量数据格式正确" });
            }
            else
            {
                this.Invoke(pm.addInfomation, new object[] { "请重新输入有效降雨数据" });
                return(false);
            }
            //获取栅格分辨率
            IRasterInfo rasterinfo = (demRaster.Raster as IRawBlocks).RasterInfo;

            flowLength = Convert.ToInt32(rasterinfo.CellSize.X);
            this.Invoke(pm.addInfomation, new object[] { String.Format("DEM栅格宽度为:{0}m", flowLength) });
            //maxSpeed = (float)Math.Sqrt(flowLength * 10);
            maxSpeed    = 10f;
            flowLength2 = flowLength * 1.141f;
            //判断DEM与曼宁系数栅格是否一致!
            if (demRaster.ColumnCount != manningRaster.ColumnCount || demRaster.RowCount != manningRaster.RowCount)
            {
                this.Invoke(pm.addInfomation, new object[] { "曼宁糙率栅格行列与DEM不一致,请对应后重新输入!" });
                return(false);
            }
            rowCount = demRaster.RowCount;
            colCount = demRaster.ColumnCount;
            Console.WriteLine(rowCount + "," + colCount);
            //初始化中间参数
            slope       = new float[colCount, rowCount];    //坡度矩阵
            flowDir     = new Dirction[colCount, rowCount]; //流向矩阵
            canCuculate = new bool[colCount, rowCount];     //用于判断矩阵中的点是否在DEM范围内
            waterDeep   = new float[colCount, rowCount];    //水深矩阵
            tempDeep    = new float[colCount, rowCount];    //
            flowVel     = new float[colCount, rowCount];
            for (int i = 0; i < colCount; i++)
            {
                for (int j = 0; j < rowCount; j++)
                {
                    slope[i, j]   = 0f;
                    flowDir[i, j] = new Dirction()
                    {
                        x = 0, y = 0
                    };
                    if (dem[i, j] == nodataValue)
                    {
                        waterDeep[i, j] = nodataValue;
                    }
                    else
                    {
                        waterDeep[i, j] = 0f;
                    }
                    tempDeep[i, j] = 0f;
                    flowVel[i, j]  = 0f;
                }
            }

            for (int i = 0; i < colCount; i++)
            {
                for (int j = 0; j < rowCount; j++)
                {
                    if (dem[i, j] != nodataValue)
                    {
                        canCuculate[i, j] = true;
                    }
                }
            }
            return(true);
        }
コード例 #3
0
ファイル: RS_DB.cs プロジェクト: Snowfly11531/FJNU-learing
        void FloodStart()
        {
            //读入dem,manning,rain
            DemPath = txbDemIpute.Text;
            GISdataManager.readRaster(DemPath, ref demRaster);
            dem         = GISdataManager.Raster2Mat(demRaster);
            ManningPath = txbManingInput.Text;
            GISdataManager.readRaster(ManningPath, ref manningRaster);
            manNing        = GISdataManager.Raster2Mat(manningRaster);
            RainRecordPath = txbRaintxt.Text;
            rainRecordList = TxTReader.txt2List2(RainRecordPath);
            if (rainRecordList.Count > 0)
            {
                string[] record = rainRecordList[0];
                string   path;
                path = record[1];
                GISdataManager.readRaster(path, ref rainDeepRaster);
                rainDeepMat = GISdataManager.Raster2Mat(rainDeepRaster);
            }
            else
            {
                MessageBox.Show("请重新输入有效降雨数据!");
                return;
            }

            //获取栅格分辨率
            IRasterInfo rasterinfo = (demRaster.Raster as IRawBlocks).RasterInfo;

            flowLength  = Convert.ToInt32(rasterinfo.CellSize.X);
            flowLength2 = flowLength * 1.141f;
            //判断DEM与曼宁系数栅格是否一致!
            if (demRaster.ColumnCount != manningRaster.ColumnCount || demRaster.RowCount != manningRaster.RowCount)
            {
                MessageBox.Show("请保证曼宁糙率栅格行列是否与DEM一致,请对应后重新输入!");
                return;
            }
            rowCount = demRaster.RowCount;
            colCount = demRaster.ColumnCount;
            //初始化中间参数
            slope       = new float[rowCount, colCount];
            flowDir     = new byte[rowCount, colCount];
            canCuculate = new bool[rowCount, colCount];
            waterDeep   = new float[rowCount, colCount];
            tempDeep    = new float[rowCount, colCount];
            flowVel     = new float[rowCount, colCount];
            arrived     = new bool[rowCount, colCount];
            for (int i = 0; i < rowCount; i++)
            {
                for (int j = 0; j < colCount; j++)
                {
                    slope[i, j]     = 0f;
                    flowDir[i, j]   = 0;
                    waterDeep[i, j] = 0f;
                    tempDeep[i, j]  = 0f;
                    flowVel[i, j]   = 0f;
                    arrived[i, j]   = false;
                }
            }
            DBpointPath = txbDBpoint.Text;
            GISdataManager.readSHP(DBpointPath, ref DBpointshp);
            IFeatureClass featureClass = DBpointshp.FeatureClass;
            int           count        = featureClass.FeatureCount(new QueryFilter());

            for (int i = 0; i < count; i++)
            {
                IFeature  feature = featureClass.GetFeature(i);
                IGeometry Geo = feature.Shape;
                IPoint    point = Geo as IPoint;
                double    x, y;
                x = point.X;
                y = point.Y;
                //获取出水点在Mit中的位置
                IRaster  raster  = demRaster.Raster;
                IRaster2 raster2 = raster as IRaster2;
                DPcolIndex = raster2.ToPixelColumn(x);
                DProwIndex = raster2.ToPixelRow(y);
                dbPointList.Add(new int[2] {
                    DProwIndex, DPcolIndex
                });
                arrived[DProwIndex, DPcolIndex] = true;
            }
            //读取流量过程线表格
            HydroPath       = txbHydroghraph.Text;
            HydroRecordList = TxTReader.txt2List3(HydroPath, dbPointList.Count);
            //初始化计算范围
            for (int i = 0; i < rowCount; i++)
            {
                for (int j = 0; j < colCount; j++)
                {
                    if (dem[i, j] != nodataValue)
                    {
                        canCuculate[i, j] = true;
                    }
                }
            }
        }
コード例 #4
0
ファイル: DamBreak.cs プロジェクト: Snowfly11531/FJNU-learing
        void DemBreakStart()
        {
            //读入dem,manning
            DemPath = txbDemIpute.Text;
            GISdataManager.readRaster(DemPath, ref demRaster);
            //
            //IRasterProps rasterprops = demRaster.Raster as IRasterProps;
            //object nodataValue1 = rasterprops.NoDataValue;
            //float[] mit = nodataValue1 as float[];
            //nodataValue = mit[0];
            //
            dem         = GISdataManager.Raster2Mat(demRaster);
            ManningPath = txbManingInput.Text;
            GISdataManager.readRaster(ManningPath, ref manningRaster);
            manNing = GISdataManager.Raster2Mat(manningRaster);

            //获取栅格分辨率
            IRasterInfo rasterinfo = (demRaster.Raster as IRawBlocks).RasterInfo;

            flowLength  = Convert.ToInt32(rasterinfo.CellSize.X);
            flowLength2 = flowLength * 1.141f;

            //判断DEM与曼宁系数栅格是否一致!
            if (demRaster.ColumnCount != manningRaster.ColumnCount || demRaster.RowCount != manningRaster.RowCount)
            {
                MessageBox.Show("请在检查DEM与曼宁糙率栅格行列是否对应后重新输入!");
                return;
            }
            rowCount = demRaster.RowCount;
            colCount = demRaster.ColumnCount;

            //初始化中间参数
            slope     = new float[rowCount, colCount];
            flowDir   = new byte[rowCount, colCount];
            waterDeep = new float[rowCount, colCount];
            tempDeep  = new float[rowCount, colCount];
            flowVel   = new float[rowCount, colCount];
            arrived   = new bool[rowCount, colCount];
            for (int i = 0; i < rowCount; i++)
            {
                for (int j = 0; j < colCount; j++)
                {
                    slope[i, j]     = 0f;
                    flowDir[i, j]   = 0;
                    waterDeep[i, j] = 0f;
                    tempDeep[i, j]  = 0f;
                    flowVel[i, j]   = 0f;
                    arrived[i, j]   = false;
                }
            }
            DBpointPath = txbDBpoint.Text;
            GISdataManager.readSHP(DBpointPath, ref DBpointshp);
            IFeatureClass featureClass = DBpointshp.FeatureClass;
            int           count        = featureClass.FeatureCount(new QueryFilter());

            for (int i = 0; i < count; i++)
            {
                IFeature  feature = featureClass.GetFeature(i);
                IGeometry Geo = feature.Shape;
                IPoint    point = Geo as IPoint;
                double    x, y;
                x = point.X;
                y = point.Y;
                //获取出水点在Mit中的位置
                IRaster  raster  = demRaster.Raster;
                IRaster2 raster2 = raster as IRaster2;
                DPcolIndex = raster2.ToPixelColumn(x);
                DProwIndex = raster2.ToPixelRow(y);
                dbPointList.Add(new int[2] {
                    DProwIndex, DPcolIndex
                });
                arrived[DProwIndex, DPcolIndex] = true;
                waterGrids.Add(new int[2] {
                    DProwIndex, DPcolIndex
                });
            }
            //读取流量过程线表格
            HydroPath       = txbHydroghraph.Text;
            HydroRecordList = TxTReader.txt2List3(HydroPath, dbPointList.Count);
        }