Exemple #1
0
        private void Publish()
        {
            this.ProgressLog.Clear();

            var task = Task.Factory.StartNew(() =>
            {
                Log("Started");

                this.IsPublishFinished = false;

                if (this._applicationService.CurrentWorkDocument != null)
                {
                    var wwt = new WwtClient();
                    this._layerNames.Clear();

                    SpreadsheetLayer layer = null;

                    if (this.IsMergedLayers)
                    {
                        layer = new SpreadsheetLayer(wwt, wwt.Earth, this.MergedLayerName);
                        this._layerNames.Add(layer.Name);

                        Log(string.Format("Publishing all data items into '{0}' layer.", layer.Name));
                    }

                    //Parallel.ForEach(activeDataSources, dataSource =>
                    foreach (var dataSource in this.GetActiveDataSources())
                    {
                        Log(string.Format("Processing '{0}' data source.", dataSource.Name));
                        var data = dataSource.GetData();

                        if (layer == null)
                        {
                            layer         = new SpreadsheetLayer(wwt, wwt.Earth, dataSource.Name);
                            layer.AltUnit = Core.Frames.Layers.Spreadsheet.AltitudeUnits.Meters;
                            this._layerNames.Add(layer.Name);

                            Log(string.Format("Publishing {0} data items into '{1}' layer.", data.Count(), layer.Name));

                            layer.AddData(data);

                            layer = null;
                        }
                        else
                        {
                            layer.AddData(data);
                        }
                    }
                }

                Log("Finished.");

                this.IsPublishFinished = true;
            });
        }
        static void Main(string[] args)
        {
            //var path = @"D:\Test\NCFS\fort.63.nc";
            //var path = @"D:\Test\eastcoast_95d_ll.nc";
            //var path = @"D:\Test\isabel_v9.35.nc";
            //var path = @"D:\Test\NCFS\SPDSnc6b-UNC_vortex-nws319_20110826T1200_20110826T1200_20110831T1200_12elev_Z.nc";
            //var path = @"D:\WWT.DataManager.Demo\isabel_v9.81.nc";

            //var reader = NetCDFReader.Create(path);

            //var ele = reader.ReadDecimalVariable("ele");

            //var zeta = reader.ReadDecimalVariable("zeta").Select((v) => { return decimal.ToSingle(v); }).ToArray();

            //var values1 = reader.ReadVariable("zeta");
            //foreach (var value1 in values1)
            //{
            //    decimal abc = (decimal)value1;
            //}
            //var values2 = reader.ReadDecimalVariable("zeta").Select((v) => { return decimal.ToDouble(v); }).ToArray();


            //var values = reader.ReadVariable<float>("zeta");



            //double a = (double)values[0];
            ////  Find maximum and minimum values
            //var missingValue = (from attribute in reader.Variables["zeta"].Attributes
            //                    where attribute.Key == "missing_value"
            //                    select ((double[])attribute.Value.Value).FirstOrDefault()).FirstOrDefault();

            //var maximumValue = (from v in values where v != missingValue select v).Max();
            //var minimumValue = (from v in values where v != missingValue select v).Min();

            //var total = (from v in values where v < 0 select v).Count();
            //var total1 = (from v in values where v == missingValue select v).Count();

            //var ele = reader.Variables["ele"];

            //var variables = from v in reader.Variables
            //                from d in v.Value.DimensionIDs
            //                from dd in reader.Dimensions
            //                where dd.Key == d
            //                select new
            //                {
            //                    Name = v.Key,
            //                    NN = dd.Value.Name,
            //                };

            //var names = variables.ToList();
            //var variable = reader.Variables["zeta"];

            //var aa = (from v in reader.Variables select v.Key).Concat(new string[] { "<none>" });

            //return;

            //var wwt = new WwtClient("janavar.europa.renci.org");
            var wwt = new WwtClient();
            //var f = wwt.Frames;
            //wwt.ViewClock = DateTime.Now.AddDays(-10);

            var layer = new SpreadsheetLayer(wwt, wwt.Earth, "test");

            //var geography = "Polygon ((0 0, 0 1, 1 0, 0 0))";
            var geography = "Polygon ((0 0, 1 0, 0 1, 0 0))";

            layer.AddData(new SpreadsheetDataItem("test 1", DateTime.Now.AddDays(-10), DateTime.Now.AddDays(9), geography, Color.Blue, string.Empty, string.Empty));

            return;

            //layer.AddData(new SpreadsheetDataItem("test 2", DateTime.Now.AddDays(-9), DateTime.Now.AddDays(-8), 3, 0, 0, 10, Color.Green));

            //layer.Activate();

            //layer.ClearData();

            //layer.Name = "asdasdasdas";

            //layer.Update();

            //layer.Delete();

            //wwt.Timerate = 4;
            //var viewState = wwt.GetViewState();

            //wwt.FlyTo(0, 0, 123, 0, 0);
            //wwt.FlyTo(5, 0, 60, 0, 0);
            //wwt.FlyTo(0, 5, 123, 0, 0);

            //wwt.Test();

            return;

            //var colors = new Color[] { Color.Red, Color.Green, Color.Blue };
            //Random rnd1 = new Random();
            //for (int j = 0; j < colors.Length; j++)
            //{
            //    var testLayer = SpreadsheetLayer.Create(wwt, string.Format("Layer {0}", colors[j]), "Earth");
            //    for (int i = 0; i < 3; i++)
            //    {
            //        var latrnd = ((double)rnd1.Next(27222) / 1000000);
            //        var lonrnd = ((double)rnd1.Next(34166) / 1000000);
            //        var lat = 36.084167 + latrnd;
            //        var lon = -79.609444 + lonrnd;
            //        var height = rnd1.NextDouble() * 1000000;
            //        //testLayer.AddData(new SpreadsheetDataItem("Test", DateTime.Now, DateTime.Now, lat, lon, height, (float)0.000000001, colors[j]));
            //        testLayer.AddData(new SpreadsheetDataItem("Test", DateTime.Now, DateTime.Now, lat, lon, 0.001, (float)0.002, colors[j]));
            //    }
            //    testLayer.AddData(new SpreadsheetDataItem("Test", DateTime.Now, DateTime.Now, "MULTILINE (-79.575278 36.084167, -79.609444 36.111389)", colors[j], string.Empty, string.Empty));
            //    testLayer.Update();
            //    testLayer.Activate();
            //}
            //var geoLayer = SpreadsheetLayer.Create(wwt, "Geography", "Earth");
            ////geoLayer.AddData(new SpreadsheetDataItem("Test", DateTime.Now, DateTime.Now, "MULTILINE (-79.575278 36.084167 1, -79.609444 36.111389 1)", Color.Brown, string.Empty, string.Empty));
            //geoLayer.AddData(new SpreadsheetDataItem("Test", DateTime.Now, DateTime.Now, "Polygon ((-79.599278 36.100167 6,-79.599278 36.090167 6,-79.601444 36.103167 6,-79.601444 36.105389 6 ) 6)", Color.BlueViolet, string.Empty, string.Empty));


            //geoLayer.Update();
            //geoLayer.Activate();

            // LONG: -79.575278 -79.609444
            //  LAT: 36.084167    36.111389
            //36.06 36.05 60
            //-79.36 -79.34

            //var isabelLayer = SpreadsheetLayer.Create(wwt, "isabel", "Earth");
            //isabelLayer.AltUnit = AltitudeUnits.Feet;
            //using (var file = File.OpenText(@"C:\Test\isabel.dat"))
            //{
            //    var line = file.ReadLine();
            //    while (line != null)
            //    {
            //        var lineParts = line.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries);
            //        var lon = double.Parse(lineParts[0]);
            //        var lat = double.Parse(lineParts[1]);
            //        var depth = double.Parse(lineParts[2]);
            //        isabelLayer.AddData(new SpreadsheetDataItem("Depth:" + depth, DateTime.Now, DateTime.Now, lat, lon, depth, 2, Color.Blue));

            //        line = file.ReadLine();
            //    }
            //}
            //isabelLayer.Update();
            //isabelLayer.Activate();


            //var isabelV9Layer = SpreadsheetLayer.Create(wwt, "isabel_v9", "Earth");

            //DataSetFactory.Register(typeof(NetCDFDataSet));
            //using (var ds = sds.DataSet.Open(@"C:\Test\isabel_v9.35.nc"))
            //{
            //    var time = ds["time"].GetData();
            //    var zeta = (Single[,])ds["zeta"].GetData();
            //    var bnd = ds["bnd"].GetData();
            //    var depth = ds["depth"].GetData();
            //    var ele = ds["ele"].GetData();
            //    var land_binary_mask = ds["land_binary_mask"].GetData();
            //    var lat = ds["lat"].GetData();
            //    var lon = ds["lon"].GetData();
            //    var tri_grid = ds["tri_grid"].GetData();
            //    var water_binary_mask = ds["water_binary_mask"].GetData();

            //    var file = File.CreateText(@"C:\Test\isabel_v9.35\input.xyz");
            //    for (int i = 0; i < lat.Length; i++)
            //    {
            //        var lonValue = (double)lon.GetValue(i);
            //        var latValue = (double)lat.GetValue(i);
            //        //if (lonValue < -78 || lonValue > -77)
            //        //    continue;
            //        //if (latValue < 33.5 || latValue > 34.5)
            //        //    continue;
            //        //if (lonValue < -78 || lonValue > -77.95)
            //        //    continue;
            //        //if (latValue < 33.95 || latValue > 34)
            //        //    continue;


            //        var color = Lerp(Color.Red, Color.Blue, (float)(((double)depth.GetValue(i) + 100) / 200));
            //        //isabelLayer.AddData(new SpreadsheetDataItem("Depth:" + depth.GetValue(i), DateTime.Now, DateTime.Now, (double)lat.GetValue(i), (double)lon.GetValue(i), (double)depth.GetValue(i), 2, color));
            //        isabelV9Layer.AddData(new SpreadsheetDataItem("Depth:" + depth.GetValue(i), DateTime.Now, DateTime.Now, (double)lat.GetValue(i), (double)lon.GetValue(i), zeta[0, i], 2, color));
            //        //file.WriteLine(string.Format("{0},{1},{2}", lon.GetValue(i), lat.GetValue(i), depth.GetValue(i)));
            //    }

            //    file.Close();

            //    //foreach (var variable in ds.Variables)
            //    //{
            //    //    var data = variable.GetData();
            //    //    Console.WriteLine(variable);
            //    //}
            //}

            //isabelV9Layer.Update();
            //isabelV9Layer.Activate();

            return;

            //var layers = wwt.GetLayers();

            //var state1 = wwt.ViewState;
            //wwt.Test();
            //return;

            //var date = DateTime.Parse("1/9/2009 3:44");
            //wwt.SetViewClock(date);

            //var layer1 = SpreadsheetLayer.Create(wwt, "nc_inundation_v9.81_MSL.grd", "Earth");

            //using (var file = File.OpenText(@"C:\Test\adcirc\adcirc\nc_inundation_v9.81_MSL.grd"))
            //{
            //    var line = file.ReadLine();
            //    line = file.ReadLine();
            //    line = file.ReadLine();
            //    var count = 0;
            //    while (!string.IsNullOrEmpty(line) && count < 600000)
            //    {
            //        count++;
            //        var lon = double.Parse(line.Substring(11, 15));
            //        var lat = double.Parse(line.Substring(27, 15));
            //        var depth = double.Parse(line.Substring(43, 10));
            //        layer1.AddData(new SpreadsheetDataItem("Point", DateTime.Today, DateTime.Today, lat, lon, depth * 10, 2, Color.Red));
            //        line = file.ReadLine();
            //    }
            //}
            //layer1.Update();
            //layer1.Activate();

            //var layer1 = SpreadsheetLayer.Create(wwt, "layer1", "Earth");
            //layer1.AddData(new SpreadsheetDataItem("Point A", DateTime.Parse("1/9/2009 3:44"), DateTime.Parse("1/9/2009 4:44"), 0, 0, 10, 7, Color.Red, null, "http://www.cnn.com"));
            //layer1.AddData(new SpreadsheetDataItem("Point B", DateTime.Parse("1/9/2009 4:44"), DateTime.Parse("1/9/2009 5:44"), 1, 0, 10, 7, Color.Red, null, "http://www.cnn.com"));
            //layer1.AddData(new SpreadsheetDataItem("Point B", DateTime.Parse("1/9/2009 5:44"), DateTime.Parse("1/9/2009 6:44"), 2, 0, 10, 7, Color.Red, null, "http://www.cnn.com"));
            //layer1.AddData(new SpreadsheetDataItem("Point B", DateTime.Parse("1/9/2009 5:44"), DateTime.Parse("1/9/2009 6:44"), "Polygon ((32.987808 -17.265003 1,33.0730510000001 -18.3488919999999 1,32.6991650000001 -18.944447 1,33.0188830000001 -19.9433359999999 1,32.5022200000001 -20.598614 1,32.4888760000001 -21.3444479999999 1,31.2975040000001 -22.414764 1,29.893887 -22.194447 1,29.3736230000001 -22.19241 1,29.060555 -21.798058 1,28.015831 -21.566113 1,27.713165 -20.506432 1,27.287453 -20.494965 1,27.219997 -20.091667 1,26.166111 -19.527779 1,25.264431 -17.80225 1,27.038055 -17.959446 1,27.825275 -16.959167 1,28.759441 -16.552223 1,28.927219 -15.972223 1,30.415756 -15.631872 1,30.422775 -16.009167 1,31.276665 -16.018612 1,32.9811400000001 -16.7090529999999 1,32.987808 -17.265003 1) 1)", 7, Color.Red, null, "http://www.cnn.com"));
            //layer1.AddData(new SpreadsheetDataItem("Point A", DateTime.Parse("1/9/2009 5:44"), DateTime.Parse("1/9/2009 6:44"), "Polygon ((2 2 1,2 1 1, 1 1 1, 1 2 1) 1)", 7, Color.Red, null, "http://www.cnn.com"));
            //layer1.AddData(new SpreadsheetDataItem("Point B", DateTime.Parse("1/9/2009 5:44"), DateTime.Parse("1/9/2009 6:44"), "Point (5 5)", 7, Color.Green, null, "http://www.cnn.com"));
            //layer1.AddData(new SpreadsheetDataItem("Point B", DateTime.Parse("1/9/2009 5:44"), DateTime.Parse("1/9/2009 6:44"), "MULTIPOINT(0 0,1 2)", 1, Color.Red, null, "http://www.cnn.com"));
            //layer1.AddData(new SpreadsheetDataItem("Point A", DateTime.Parse("1/9/2009 5:44"), DateTime.Parse("1/9/2009 6:44"), "Polygon ((2 2 1,2 1 1, 1 1 1, 1 2 1) 1)", Color.Green, null, "http://www.cnn.com"));
            //layer1.AddData(new SpreadsheetDataItem("Point A", DateTime.Parse("1/9/2009 5:44"), DateTime.Parse("1/9/2009 6:44"), "Polygon ((2 2 10,2 1 10, 1 1 1, 1 2 1) 10)", Color.Green, null, "http://www.cnn.com"));
            //layer1.AddData(new SpreadsheetDataItem("Point A", DateTime.Parse("1/9/2009 5:44"), DateTime.Parse("1/9/2009 6:44"), "POINT (2 2 1)", Color.Green, null, "http://www.cnn.com"));

            //layer1.AddData(new SpreadsheetDataItem("Point A", DateTime.Parse("1/9/2009 4:44"), DateTime.Parse("1/9/2009 5:44"), 1, 1, 10, 7, Color.Green, null, "http://www.cnn.com"));
            //layer1.Update();

            //layer1.AddData(new SpreadsheetDataItem("Point B", DateTime.Parse("1/9/2009 4:44"), DateTime.Parse("1/9/2009 5:44"), 1, 0, 10, 7, Color.Red, null, "http://www.cnn.com"));
            //layer1.Update();

            //layer1.ClearData();
            //var data1 = sosData.Where((i)=>i.date_time > DateTime.Today.AddDays(-1)).OrderBy((i) => i.date_time).ToList();

            //wwt.SetViewClock(data1[0].date_time);
            //foreach (var item in data1)
            //{
            //    layer1.AddData(new SpreadsheetDataItem(item.station_id, item.date_time, item.date_time, item.latitude, item.longitude, item.depth, 3, Color.Red, null, "http://www.cnn.com"));
            //}
            //layer1.Update();

            return;

            var    counter = 100;
            Random rnd     = new Random();

            ////DateTime date = DateTime.Parse("6/10/2011 10:08:16").AddHours(-counter);
            //var color = Color.FromArgb(229, Color.Red);
            //for (int i = 0; i < counter; i++)
            //{
            //    //var lat = rnd.Next(-90000, 90000) / 1000;
            //    //var lng = rnd.Next(-180000, 180000) / 1000;
            //    var lat = rnd.Next(-5000, 5000) / 1000;
            //    var lng = rnd.Next(-5000, 5000) / 1000;
            //    var alt = (float)rnd.Next(-180000, 180000) / 1000;
            //    var size = rnd.Next(1, 20);
            //    //layer1.Add(new SpreadsheetDataItem("test1", DateTime.Now, null, 0, 0, 10, 100, Color.Blue, null, null));
            //    layer1.AddData(new SpreadsheetDataItem(string.Format("Point {0}, Alt: {1}, DateTime: {2}", i, alt, date.AddHours(i)), date.AddHours(i), date.AddHours(i), lat, lng, alt, size, color, null, null));
            //    //sd.Add(new SpreadsheetPoint(string.Format("Point {0}, Alt: {1}, DateTime: {2}", i, alt, date.AddHours(i)), date.AddHours(i), date.AddHours(i), lat, lng, alt, size, color, null, null));
            //}


            //var layer2 = new SpreadsheetLayer(wwt, "layer2", "Earth", false);

            //var vers = wwt.Version;
            //var s = wwt.ViewState;

            //var layerManager = wwt.LayerManager;
            //layerManager.Add("New Layer", DateTime.Parse("1/9/2009 3:44:38 AM"), "Earth", Color.Aqua, "TIME", "LAT", "LON", "DEPTH", "MAG", "Color");
            //layerManager.Add("New Layer", DateTime.Parse("1/9/2009 3:44:38 AM"), "Earth", Color.Aqua, "A", "B", "C", "D", "E", "F");
            //layerManager.Add("Layer1", DateTime.Parse("1/9/2009 3:44:38 AM"), "Earth", Color.Aqua);
            //layerManager.Add("Layer1", "Earth");

            //var testLayer = layerManager.Layers.OfType<SpreadsheetLayer>().First();

            //SpreadsheetData sd = new SpreadsheetData();

            //var aa = date.AddHours(100);

            for (int i = 0; i < counter; i++)
            {
                //var lat = rnd.Next(-90000, 90000) / 1000;
                //var lng = rnd.Next(-180000, 180000) / 1000;
                var lat  = rnd.Next(-5000, 5000) / 1000;
                var lng  = rnd.Next(-5000, 5000) / 1000;
                var alt  = (float)rnd.Next(-180000, 180000) / 1000;
                var size = rnd.Next(1, 20);
                //testLayer.Add(new SpreadsheetDataItem(string.Format("Point {0}, Alt: {1}, DateTime: {2}", i, alt, date.AddHours(i)), date.AddHours(i), date.AddHours(i), lat, lng, alt, size, color, null, null));
                //sd.Add(new SpreadsheetPoint(string.Format("Point {0}, Alt: {1}, DateTime: {2}", i, alt, date.AddHours(i)), date.AddHours(i), date.AddHours(i), lat, lng, alt, size, color, null, null));
            }

            //sd.Add(new SpreadsheetPoint("p1", DateTime.Now, null, 0, 0, 10, 7, Color.Red, null, null));
            //sd.Add(new SpreadsheetPoint("p2", DateTime.Now.AddDays(-1), null, 0, 10, 243, 9, Color.Blue, null, null));
            //sd.Add(new SpreadsheetPoint("p3", DateTime.Now.AddDays(-2), null, -5, -5, 35, 8, Color.Green, null, null));

            //testLayer.Insert(sd);


            //layers.Add("abcd2", DateTime.Now, "Earth", Color.Aqua, "aa", "ss", "dd");

            //wwt.SetMode("Earth");
        }