示例#1
0
        public static string GetGeometry(double lat, double lon, UpdateDataModel input)
        {
            //double ln1 = lon - deltaLong;
            //double lt1 = lat - deltaLat;
            //double ln2 = lon + deltaLong;
            //double lt2 = lat + deltaLat;

            // return string.Format("Polygon(({0} {1},{0} {3}, {2} {3},{2} {1},{0} {1}))", ln1, lt1, ln2, lt2);

            return(string.Format(
                       "Polygon(({0} {1},{0} {3}, {2} {3},{2} {1},{0} {1}))",
                       lon - input.DeltaLongitude,
                       lat - input.DeltaLatitude,
                       lon + input.DeltaLongitude,
                       lat + input.DeltaLatitude));
        }
示例#2
0
        public static double GetAltitudeValue(double altValue, UpdateDataModel input)
        {
            double updatedValue = altValue;

            switch (input.AltitudeSytle)
            {
            case AltitudeStyle.Constant:
                updatedValue = altValue + input.AltitudeConstant;
                break;

            case AltitudeStyle.Linear:
                updatedValue = input.AlphaConstant + (altValue * input.BetaConstant);
                break;
            }

            return(updatedValue);
        }
        internal void GenerateWWTColumns(UpdateDataModel input)
        {
            object[,] updatedData = UpdatedWWTData(input);

            if (updatedData != null)
            {
                ThisAddIn.ExcelApplication.DisplayAlerts = false;

                string newSheetname = "Updated - " + (this.currentWorksheet != null ? this.currentWorksheet.Name : string.Empty);

                // Checking existing sheets for the FetchClimate sheet, if exists deleting the sheet.
                if (ThisAddIn.ExcelApplication.ActiveWorkbook.Sheets.Count > 0)
                {
                    foreach (_Worksheet sheet in ThisAddIn.ExcelApplication.ActiveWorkbook.Sheets)
                    {
                        if (sheet.Name == newSheetname)
                        {
                            sheet.Delete();
                            break;
                        }
                    }
                }

                ThisAddIn.ExcelApplication.DisplayAlerts = true;

                // Creating new sheet
                ThisAddIn.ExcelApplication.ActiveWorkbook.Sheets.Add();
                _Worksheet workSheet = (_Worksheet)ThisAddIn.ExcelApplication.ActiveWorkbook.ActiveSheet;
                workSheet.Name = newSheetname;

                int rowCount = updatedData.GetLength(0);

                Office.Interop.Excel.Range excelRange = workSheet.get_Range("A1", ExcelColumnName(updatedData.GetLength(1)) + rowCount.ToString());

                // Setting data to the excel.
                excelRange.SetValue(updatedData);

                Office.Interop.Excel.Range selectRange = workSheet.get_Range(ExcelColumnName(updatedData.GetLength(1) - 2) + "1", ExcelColumnName(updatedData.GetLength(1)) + rowCount.ToString());

                selectRange.Select();

                WorkflowController.Instance.CreateLayerMap();
            }
        }
        private object[,] UpdatedWWTData(UpdateDataModel input)
        {
            object[,] actualData = null;

            object[,] data = currentWorksheet.UsedRange.GetDataArray(false);
            var header = currentWorksheet.UsedRange.GetHeader();
            if (data != null)
            {
                int rowCount = data.GetLength(0);
                int columnCount = data.GetLength(1);

                int latColumnIndex = 0;
                int longColumnIndex = 1;

                int colorColumnIndex = 2;
                int altitudeColumnIndex = 2;

                int rColumnIndex = 0;
                int gColumnIndex = 0;
                int bColumnIndex = 0;

                foreach (var item in header)
                {
                    if (Common.Constants.LatSearchList.Contains(item.ToLower()))
                    {
                        latColumnIndex = header.IndexOf(item);
                    }

                    if (Common.Constants.LonSearchList.Contains(item.ToLower()))
                    {
                        longColumnIndex = header.IndexOf(item);
                    }

                    if (!string.IsNullOrWhiteSpace(input.ColorColumn) && string.Compare(input.ColorColumn.ToLower(), item, true) == 0)
                    {
                        colorColumnIndex = header.IndexOf(item);
                    }

                    if (string.Compare(input.AltitudeColumn.ToLower(), item, true) == 0)
                    {
                        altitudeColumnIndex = header.IndexOf(item);
                    }

                    if (!string.IsNullOrWhiteSpace(input.RColumn) && string.Compare(input.RColumn.ToLower(), item, true) == 0)
                    {
                        rColumnIndex = header.IndexOf(item);
                    }
                    if (!string.IsNullOrWhiteSpace(input.GColumn) && string.Compare(input.GColumn.ToLower(), item, true) == 0)
                    {
                        gColumnIndex = header.IndexOf(item);
                    }
                    if (!string.IsNullOrWhiteSpace(input.BColumn) && string.Compare(input.BColumn.ToLower(), item, true) == 0)
                    {
                        bColumnIndex = header.IndexOf(item);
                    }
                }

                if (input.FilterBetweenBoundaries)
                {
                    actualData = FilterDataWithInBoundaries(input, data, rowCount, columnCount, latColumnIndex, longColumnIndex, altitudeColumnIndex, rColumnIndex, gColumnIndex, bColumnIndex);
                }
                else
                {
                    actualData = GetdataWithoutFilter(input, data, rowCount, columnCount, latColumnIndex, longColumnIndex, altitudeColumnIndex, rColumnIndex, gColumnIndex, bColumnIndex);
                }
            }

            return actualData;
        }
        private object[,] UpdatedHuricaneData(UpdateDataModel input, object[,] updatedData)
        {
            object[,] data = currentWorksheet.UsedRange.GetDataArray(false);
            var header = currentWorksheet.UsedRange.GetHeader();
            if (data != null)
            {
                int rowCount = data.GetLength(0);
                int columnCount = data.GetLength(1);

                int latColumnIndex = 0;
                int longColumnIndex = 1;
                int altitudeColumnIndex = 2;
                int sizeColumnIndex = 4;

                foreach (var item in header)
                {
                    if (Common.Constants.LatSearchList.Contains(item.ToLower()))
                    {
                        latColumnIndex = header.IndexOf(item);
                    }

                    if (Common.Constants.LonSearchList.Contains(item.ToLower()))
                    {
                        longColumnIndex = header.IndexOf(item);
                    }

                    if (string.Compare(input.AltitudeColumn.ToLower(), item, true) == 0)
                    {
                        altitudeColumnIndex = header.IndexOf(item);
                    }

                    if (string.Compare("Size (miles)", item, true) == 0)
                    {
                        sizeColumnIndex = header.IndexOf(item);
                    }
                }

                updatedData = new object[rowCount, columnCount + 3];

                // Update Header values
                for (int columnnIndex = 0; columnnIndex < columnCount; columnnIndex++)
                {
                    updatedData[0, columnnIndex] = data[1, columnnIndex + 1];
                }

                updatedData[0, columnCount] = "Geometry";
                updatedData[0, columnCount + 1] = "Altitude";

                // Generate and update actual Data Values
                for (int rowIndex = 1; rowIndex < rowCount; rowIndex++)
                {
                    for (int columnnIndex = 0; columnnIndex < columnCount; columnnIndex++)
                    {
                        updatedData[rowIndex, columnnIndex] = data[rowIndex + 1, columnnIndex + 1];
                    }

                    // Update Geometry
                    updatedData[rowIndex, columnCount] = UpdateDataModel.GetCircle(
                        Convert.ToDouble(updatedData[rowIndex, latColumnIndex].ToString()),
                        Convert.ToDouble(updatedData[rowIndex, longColumnIndex].ToString()),
                        Convert.ToDouble(updatedData[rowIndex, sizeColumnIndex].ToString()));

                    // Update Altitude
                    updatedData[rowIndex, columnCount + 1] = UpdateDataModel.GetAltitudeValue(
                        Convert.ToDouble(updatedData[rowIndex, altitudeColumnIndex].ToString()),
                        input);
                }
            }

            return updatedData;
        }
        private static object[,] GetdataWithoutFilter(UpdateDataModel input, object[,] data, int rowCount, int columnCount, int latColumnIndex, int longColumnIndex, int altitudeColumnIndex, int rColumnIndex, int gColumnIndex, int bColumnIndex)
        {
            object[,] updatedData = new object[rowCount, columnCount + 3];

            // Update Header values
            for (int columnnIndex = 0; columnnIndex < columnCount; columnnIndex++)
            {
                updatedData[0, columnnIndex] = data[1, columnnIndex + 1];
            }

            updatedData[0, columnCount] = "Geometry";
            updatedData[0, columnCount + 1] = "Color";
            updatedData[0, columnCount + 2] = "Altitude";

            // Generate and update actual Data Values
            for (int rowIndex = 1; rowIndex < rowCount; rowIndex++)
            {
                    for (int columnnIndex = 0; columnnIndex < columnCount; columnnIndex++)
                    {
                        updatedData[rowIndex, columnnIndex] = data[rowIndex + 1, columnnIndex + 1];
                    }

                    // Update Geometry
                    updatedData[rowIndex, columnCount] = UpdateDataModel.GetGeometry(
                        Convert.ToDouble(updatedData[rowIndex, latColumnIndex].ToString()),
                        Convert.ToDouble(updatedData[rowIndex, longColumnIndex].ToString()),
                        input);

                    // Update Color
                    updatedData[rowIndex, columnCount + 1] = UpdateDataModel.GetColorValue(
                        Convert.ToInt16(updatedData[rowIndex, rColumnIndex].ToString()),
                        Convert.ToInt16(updatedData[rowIndex, gColumnIndex].ToString()),
                        Convert.ToInt16(updatedData[rowIndex, bColumnIndex].ToString()));

                    // Update Altitude
                    updatedData[rowIndex, columnCount + 2] = UpdateDataModel.GetAltitudeValue(
                        Convert.ToDouble(updatedData[rowIndex, altitudeColumnIndex].ToString()),
                        input);
            }

            return updatedData;
        }
        private static object[,] FilterDataWithInBoundaries(UpdateDataModel input, object[,] data, int rowCount, int columnCount, int latColumnIndex, int longColumnIndex, int altitudeColumnIndex, int rColumnIndex, int gColumnIndex, int bColumnIndex)
        {
            object[,] actualData = null;

            object[,] updatedData = new object[rowCount, columnCount + 3];

            // Update Header values
            for (int columnnIndex = 0; columnnIndex < columnCount; columnnIndex++)
            {
                updatedData[0, columnnIndex] = data[1, columnnIndex + 1];
            }

            updatedData[0, columnCount] = "Geometry";
            updatedData[0, columnCount + 1] = "Color";
            updatedData[0, columnCount + 2] = "Altitude";

            int actualRowCount = 0;
            // Generate and update actual Data Values
            for (int rowIndex = 1; rowIndex < rowCount; rowIndex++)
            {
                if (UpdateDataModel.CheckWithinBoundary(
                    Convert.ToDouble(data[rowIndex + 1, latColumnIndex + 1].ToString()),
                    Convert.ToDouble(data[rowIndex + 1, longColumnIndex + 1].ToString()),
                    input))
                {
                    actualRowCount++;

                    for (int columnnIndex = 0; columnnIndex < columnCount; columnnIndex++)
                    {
                        updatedData[actualRowCount, columnnIndex] = data[rowIndex + 1, columnnIndex + 1];
                    }

                    // Update Geometry
                    updatedData[actualRowCount, columnCount] = UpdateDataModel.GetGeometry(
                        Convert.ToDouble(updatedData[actualRowCount, latColumnIndex].ToString()),
                        Convert.ToDouble(updatedData[actualRowCount, longColumnIndex].ToString()),
                        input);

                    // Update Color
                    updatedData[actualRowCount, columnCount + 1] = UpdateDataModel.GetColorValue(
                        Convert.ToInt16(updatedData[actualRowCount, rColumnIndex].ToString()),
                        Convert.ToInt16(updatedData[actualRowCount, gColumnIndex].ToString()),
                        Convert.ToInt16(updatedData[actualRowCount, bColumnIndex].ToString()));

                    // Update Altitude
                    updatedData[actualRowCount, columnCount + 2] = UpdateDataModel.GetAltitudeValue(
                        Convert.ToDouble(updatedData[actualRowCount, altitudeColumnIndex].ToString()),
                        input);
                }
            }

            actualData = new object[actualRowCount + 1, updatedData.GetLength(1)];

            for (int row = 0; row < actualRowCount; row++)
            {
                for (int columnn = 0; columnn < updatedData.GetLength(1); columnn++)
                {
                    actualData[row, columnn] = updatedData[row, columnn];
                }
            }
            return actualData;
        }
        public static string GetGeometry(double lat, double lon, UpdateDataModel input)
        {
            //double ln1 = lon - deltaLong;
            //double lt1 = lat - deltaLat;
            //double ln2 = lon + deltaLong;
            //double lt2 = lat + deltaLat;

            // return string.Format("Polygon(({0} {1},{0} {3}, {2} {3},{2} {1},{0} {1}))", ln1, lt1, ln2, lt2);

            return string.Format(
                "Polygon(({0} {1},{0} {3}, {2} {3},{2} {1},{0} {1}))",
                lon - input.DeltaLongitude,
                lat - input.DeltaLatitude,
                lon + input.DeltaLongitude,
                lat + input.DeltaLatitude);
        }
        public static double GetAltitudeValue(double altValue, UpdateDataModel input)
        {
            double updatedValue = altValue;
            switch (input.AltitudeSytle)
            {
                case AltitudeStyle.Constant:
                    updatedValue = altValue + input.AltitudeConstant;
                    break;
                case AltitudeStyle.Linear:
                    updatedValue = input.AlphaConstant + (altValue * input.BetaConstant);
                    break;
            }

            return updatedValue;
        }
 public static bool CheckWithinBoundary(double lat, double lon, UpdateDataModel input)
 {
     return input.MinLongitude <= lon && lon <= input.MaxLongitude &&  input.MinLatitude <= lat && lat <= input.MaxLatitude;
 }
            /// <summary>
            /// Execute command event for update button.
            /// </summary>
            /// <param name="parameter">Command parameter.</param>
            public override void Execute(object parameter)
            {
                try
                {
                    UpdateDataModel model = new UpdateDataModel();

                    model.AltitudeColumn = this.parent.Input.AltitudeColumn;
                    model.AltitudeSytle = this.parent.Input.AltitudeSytle;
                    model.AltitudeConstant = this.parent.Input.AltitudeConstant;
                    model.AlphaConstant = this.parent.Input.AlphaConstant;
                    model.BetaConstant = this.parent.Input.BetaConstant;

                    model.ColorColumn = this.parent.Input.ColorColumn;
                    model.ColorPalette = this.parent.Input.ColorPalette;
                    model.ColorScheme = this.parent.Input.ColorScheme;
                    model.ColorMax = this.parent.Input.ColorMax;
                    model.ColorMin = this.parent.Input.ColorMin;

                    model.DeltaLatitude = this.parent.Input.DeltaLatitude;
                    model.DeltaLongitude = this.parent.Input.DeltaLongitude;

                    model.RColumn = this.parent.Input.RColumn;
                    model.GColumn = this.parent.Input.GColumn;
                    model.BColumn = this.parent.Input.BColumn;

                    model.MinLatitude = this.parent.Input.MinLatitude;
                    model.MaxLatitude = this.parent.Input.MaxLatitude;
                    model.MinLongitude = this.parent.Input.MinLongitude;
                    model.MaxLongitude = this.parent.Input.MaxLongitude;

                    model.FilterBetweenBoundaries = this.parent.Input.FilterBetweenBoundaries;

                    WorkflowController.Instance.GenerateWWTColumns(model);
                    // WorkflowController.Instance.GenerateHuricaneColumns(model);
                }
                catch (CustomException ex)
                {
                    Ribbon.ShowError(ex.HasCustomMessage ? ex.Message : Resources.LayerOperationError);
                }
                catch (Exception exception)
                {
                    Logger.LogException(exception);
                    Ribbon.ShowError(Resources.DefaultErrorMessage);
                }

                // Closing the popup.
                this.parent.OnRequestClose();
            }
示例#12
0
 public static bool CheckWithinBoundary(double lat, double lon, UpdateDataModel input)
 {
     return(input.MinLongitude <= lon && lon <= input.MaxLongitude && input.MinLatitude <= lat && lat <= input.MaxLatitude);
 }