private void button2_Click(object sender, EventArgs e) { LinearFitterInt32 L = new LinearFitterInt32(); LinearFitObject obj = new LinearFitObject(); L.Fit(new int[] { 0, 1 }, new int[] { 4, 6 }, obj); }
public void Reset(IRasterDataProvider dataProvider, int xBandNo, int yBandNo, int[] aoi, XYAxisEndpointValue endpointValues, LinearFitObject fitObj, Action <int, string> progressTracker) { _fitObj = fitObj; _dataProvider = dataProvider; _xBandNo = xBandNo; _yBandNo = yBandNo; _fileName = _dataProvider.fileName; _xBandName = Path.GetFileName(_fileName) + " (Band " + _xBandNo.ToString() + ")"; _yBandName = Path.GetFileName(_fileName) + " (Band " + _yBandNo.ToString() + ")"; _aoi = aoi; // IMaxMinValueComputer c = MaxMinValueComputerFactory.GetMaxMinValueComputer(dataProvider.DataType); double[] minValues = new double[2]; double[] maxValues = new double[2]; double[] meanValues = new double[2]; c.Compute(new IRasterBand[] { dataProvider.GetRasterBand(xBandNo), dataProvider.GetRasterBand(yBandNo) }, aoi, out minValues, out maxValues, out meanValues, progressTracker); _minValueXBand = endpointValues.MinX; _maxValueXBand = endpointValues.MaxX; _minValueYBand = endpointValues.MinY; _maxValueYBand = endpointValues.MaxY; _oMinValueX = minValues[0]; _oMaxValueX = maxValues[0]; // _visitor = ScatterPixelVisitorFactory.GetVisitor(_dataProvider.DataType); _visitor.Init(_dataProvider.GetRasterBand(xBandNo), _dataProvider.GetRasterBand(yBandNo)); }
public void Reset(IRasterDataProvider dataProvider, int xBandNo, int yBandNo, double[] xBandInvalidValue, double[] yBandInvalidValue, int[] aoi, LinearFitObject fitObj, Action <int, string> progressTracker) { _fitObj = fitObj; _dataProvider = dataProvider; _xBandNo = xBandNo; _yBandNo = yBandNo; _fileName = _dataProvider.fileName; string[] filenames = _fileName.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); if (filenames.Length == 2) { _xBandName = Path.GetFileName(filenames[0]) + " (Band " + _xBandNo.ToString() + ")"; _yBandName = Path.GetFileName(filenames[1]) + " (Band " + _yBandNo.ToString() + ")"; _fileName = ""; } _aoi = aoi; // IMaxMinValueComputer c = MaxMinValueComputerFactory.GetMaxMinValueComputer(dataProvider.DataType); double[] minValues = new double[2]; double[] maxValues = new double[2]; double[] meanValues = new double[2]; c.Compute(new IRasterBand[] { dataProvider.GetRasterBand(xBandNo), dataProvider.GetRasterBand(yBandNo) }, aoi, new double[][] { xBandInvalidValue, yBandInvalidValue }, out minValues, out maxValues, out meanValues, progressTracker); _minValueXBand = minValues[0]; _maxValueXBand = maxValues[0]; _minValueYBand = minValues[1]; _maxValueYBand = maxValues[1]; _oMinValueX = _minValueXBand; _oMaxValueX = _maxValueXBand; // _visitor = ScatterPixelVisitorFactory.GetVisitor(_dataProvider.DataType); _visitor.Init(_dataProvider.GetRasterBand(xBandNo), _dataProvider.GetRasterBand(yBandNo)); }
public override void Execute() { //Test(); //return; IRasterDataProvider dataProvider = null; bool isNew = false; int[] bandNos = null; int[] aoi = GetAOI(); using (frmScatterVarSelector frm = new frmScatterVarSelector()) { frm.StartPosition = FormStartPosition.CenterScreen; frm.Apply(GetCurrentDataProvider(), aoi); if (frm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { dataProvider = frm.DataProvider; bandNos = new int[] { frm.XBandNo, frm.YBandNo }; isNew = frm.IsNewDataProvider; aoi = frm.AOI; } } if (bandNos == null || dataProvider == null) { return; } // IProgressMonitor progress = _smartSession.ProgressMonitorManager.DefaultProgressMonitor; try { progress.Reset("正在准备生成散点图...", 100); progress.Start(false); frmScatterGraph frm1 = new frmScatterGraph(); frm1.Owner = _smartSession.SmartWindowManager.MainForm as Form; frm1.StartPosition = FormStartPosition.CenterScreen; LinearFitObject fitObj = new LinearFitObject(); frm1.Reset(dataProvider, bandNos[0], bandNos[1], aoi, fitObj, (idx, tip) => { progress.Boost(idx, "正在准备生成散点图..."); } ); progress.Finish(); frm1.Show(); frm1.Rerender(); frm1.FormClosed += new FormClosedEventHandler((obj, e) => { if (isNew) { dataProvider.Dispose(); } }); } finally { progress.Finish(); } }
private void ucScatterGraph1_LinearFitFinished(object sender, EventArgs e) { txtFitResult.Text = string.Empty; LinearFitObject fitObj = sender as LinearFitObject; if (fitObj != null) { txtFitResult.Text = string.Format("f(x) = {0} + {1}x", fitObj.a.ToString("0.####"), fitObj.b.ToString("0.####")) + " , R² = " + fitObj.r2.ToString("0.####"); if (txtFitResult.Text.Contains("+ -")) { txtFitResult.Text = txtFitResult.Text.Replace("+ -", "- "); } } }
public void Reset(enumDataType datatype, Object xData, Object yData, XYAxisEndpointValue endpointValues, string title, string xaxisname, string yaxisname, LinearFitObject fitObj, Action <int, string> progressTracker) { _fitObj = fitObj; _graphTitleName = title; _xAxisName = xaxisname; _yAxisName = yaxisname; IMaxMinValueComputer c = MaxMinValueComputerFactory.GetMaxMinValueComputer(enumDataType.Double); double[] minValues = new double[2]; double[] maxValues = new double[2]; double[] meanValues = new double[2]; c.DirectCompute(2, new double[][] { xData as double[], yData as double[] }, minValues, maxValues, meanValues); _minValueXBand = endpointValues.MinX; _maxValueXBand = endpointValues.MaxX; _minValueYBand = endpointValues.MinY; _maxValueYBand = endpointValues.MaxY; _oMinValueX = minValues[0]; _oMaxValueX = maxValues[0]; // _visitor = ScatterPixelVisitorFactory.GetVisitor(datatype); _visitor.InitObj(xData, yData); }
public void Reset(IRasterDataProvider dataProvider, int xBandNo, int yBandNo, int[] aoi, XYAxisEndpointValue endpointValues, LinearFitObject fitObj, Action <int, string> progressTracker) { }
public override void Execute() { IRasterDataProvider XdataProvider = null, YdataProvider = null; try { bool isNewX = false, isNewY = false; int[] bandNos = null; int[] viewerAoi = null, rightAoi = null; string aoiType = null; using (frmScatterTwoVarSelector frm = new frmScatterTwoVarSelector()) { frm.StartPosition = FormStartPosition.CenterScreen; //XdataProvider =GetCurrentDataProvider(); //if (XdataProvider!=null) //{ // frm.AOIName = "视图AOI"; // aoiType = "viewer"; // viewerAoi = GetAOI(); // frm.Apply(XdataProvider, viewerAoi, true); //} //else { if (StatRegionSet.UseRecgRegion || StatRegionSet.UseRegion) { frm.AOIName = StatRegionSet.SelectedRegionEnvelope.Name; aoiType = "recg"; } else if (StatRegionSet.UseVectorAOIRegion) { frm.AOIName = StatRegionSet.AOIName; aoiType = "vector"; } } if (frm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { XdataProvider = frm.XDataProvider; isNewX = frm.IsNewXDataProvider; YdataProvider = frm.YDataProvider; isNewY = frm.IsNewYDataProvider; bandNos = new int[] { frm.XBandNo, frm.YBandNo }; //判断两个文件的大小一致、空间范围一致 if (XdataProvider.Width != YdataProvider.Width) //|| XdataProvider.Height != YdataProvider.Height { throw new ArgumentException("两个文件大小不一致!目前仅支持相同大小文件!"); } CoordEnvelope lenv = XdataProvider.CoordEnvelope, renv = YdataProvider.CoordEnvelope; if (lenv == null || lenv.Width <= 0 || lenv.Height <= 0) { throw new ArgumentException("X轴文件的空间范围信息不可用!"); } if (renv == null || renv.Width <= 0 || renv.Height <= 0) { throw new ArgumentException("Y轴文件的空间范围信息不可用!"); } if (lenv.MinX != renv.MinX || lenv.MaxY != renv.MaxY) { throw new ArgumentException("两个文件空间区域不一致!目前仅支持相同范围!!"); } if (frm.AOIName != null)//利用AOI { // 两个文件存在相交 PrjEnvelope lfilePrj, rfilePrj; //PrjEnvelope lfilePrj = new PrjEnvelope(lenv.MinX, lenv.MaxX, lenv.MinY, lenv.MaxY), rfilePrj = new PrjEnvelope(renv.MinX, renv.MaxX, renv.MinY, renv.MaxY); //PrjEnvelope env = PrjEnvelope.Intersect(lfilePrj, rfilePrj); //if (env == null || env.Width <= 0 || env.Height <= 0) // throw new ArgumentException("两个文件不存在空间相交区域!"); //分别计算两个文件的AOI index if (aoiType.ToLower() == "recg") { if (CloudParaFileStatics.CheckAOIIntersect(XdataProvider, StatRegionSet.SelectedRegionEnvelope.PrjEnvelope, out lfilePrj, out viewerAoi) && CloudParaFileStatics.CheckAOIIntersect(YdataProvider, StatRegionSet.SelectedRegionEnvelope.PrjEnvelope, out rfilePrj, out rightAoi)) { } } else if (aoiType.ToLower() == "vector") { AOIContainerLayer aoiContainer = StatRegionSet.AoiContainer; PrjEnvelope RegionEnv = StatRegionSet.AOIPrjEnvelope; if (RegionEnv == null || RegionEnv.Height <= 0 || RegionEnv.Width <= 0) { throw new ArgumentException("矢量AOI区域设置无效或范围不合法!"); } if (aoiContainer != null) { Size xSize = new Size(XdataProvider.Width, XdataProvider.Height); viewerAoi = CloudParaFileStaticsAOI.GetAOI(lenv, aoiContainer, xSize); if (viewerAoi == null || viewerAoi.Length <= 0) { throw new ArgumentException(Path.GetFileName(XdataProvider.fileName) + "与矢量AOI区域" + frm.AOIName + "无相交区域!"); } Size ySize = new Size(YdataProvider.Width, YdataProvider.Height); rightAoi = CloudParaFileStaticsAOI.GetAOI(renv, aoiContainer, ySize); if (rightAoi == null || rightAoi.Length <= 0) { throw new ArgumentException(Path.GetFileName(YdataProvider.fileName) + "与矢量AOI区域" + frm.AOIName + "无相交区域!"); } } } //判断两个Index大小相等 if (viewerAoi == null || rightAoi == null || viewerAoi.Length != rightAoi.Length) { throw new ArgumentException("两个文件AOI区域大小不一致!"); } } //构建虚拟的dataProvider IRasterBand xband = XdataProvider.GetRasterBand(bandNos[0]); IRasterBand yband = YdataProvider.GetRasterBand(bandNos[1]); IRasterDataProvider localprd = new LogicalRasterDataProvider(frm.AOIName + "区域", new IRasterBand[2] { xband, yband }, null); //if (localprd.BandCount!=2) //{ // throw new ArgumentException("两个波段信息不一致,无法进行散点图运算!"); //} IProgressMonitor progress = _smartSession.ProgressMonitorManager.DefaultProgressMonitor; try { progress.Reset("正在准备生成散点图...", 100); progress.Start(false); frmScatterGraph frm1 = new frmScatterGraph(); frm1.Owner = _smartSession.SmartWindowManager.MainForm as Form; frm1.StartPosition = FormStartPosition.CenterScreen; LinearFitObject fitObj = frm.FitObj; frm1.Reset(localprd, 1, 2, viewerAoi, fitObj, (idx, tip) => { progress.Boost(idx, "正在准备生成散点图..."); } ); progress.Finish(); frm1.Show(); frm1.Rerender(); frm1.FormClosed += new FormClosedEventHandler((obj, e) => { if (isNewX && XdataProvider != null) { XdataProvider.Dispose(); XdataProvider = null; } if (isNewY && YdataProvider != null) { YdataProvider.Dispose(); YdataProvider = null; } }); } finally { progress.Finish(); } } } } catch (System.Exception ex) { MessageBox.Show(ex.Message); return; } }
public void Reset(Core.DF.IRasterDataProvider dataProvider, int xBandNo, int yBandNo, double[] xBandInvalidValue, double[] yBandInvalidValue, int[] aoi, LinearFitObject fitObj, Action <int, string> progressTracker) { ucScatterGraph1.Reset(dataProvider, xBandNo, yBandNo, xBandInvalidValue, yBandInvalidValue, aoi, fitObj, progressTracker); }
public void Reset(IRasterDataProvider dataProvider, int xBandNo, int yBandNo, int[] aoi, XYAxisEndpointValue endpointValues, LinearFitObject fitObj, Action <int, string> progressTracker) { ucScatterGraph1.Reset(dataProvider, xBandNo, yBandNo, aoi, endpointValues, fitObj, progressTracker); }