Beispiel #1
0
        private void AddTiledLayer(WMS_Tile_ServiceTiledPatternsTiledGroup tileGroup)
        {
            string tilePatern = GetPattern(tileGroup.TilePattern[0].Value);

            double degrees = GetLngDegrees(tilePatern);

            foreach (WMS_Tile_ServiceTiledPatternsTiledGroupTilePattern pat in tileGroup.TilePattern)
            {
                double deg = GetLngDegrees(pat.Value);

                if (deg < degrees)
                {
                    degrees = deg;
                }
            }



            double baseTileDegrees = degrees;
            int    totalLevels     = -1;

            while (baseTileDegrees < 180)
            {
                totalLevels++;
                baseTileDegrees *= 2;
            }


            string url       = serviceUrl + FillBoundingBoxUrl(tilePatern.Replace("&time=${time}", ""));
            int    baseLevel = 3;

            //if (tileGroup.TilePattern.Length > totalLevels)
            {
                //     baseLevel = (totalLevels +8) - tileGroup.TilePattern.Length;
            }


            string imageType  = ".png";
            double meanRadius = 300000000; //todo

            string referenceFrame = LayerManager.CurrentMap;

            string thumbUrl = "http://www.worldwidetelescope.org/wwtweb/thumbnail.aspx?name=" + referenceFrame;

            ImageSetHelper ish = new ImageSetHelper(tileGroup.Title, url, ImageSetType.Planet, BandPass.Visible, ProjectionType.Equirectangular, (int)(uint)url.GetHashCode32(), baseLevel, totalLevels, 512, baseTileDegrees, imageType, true, "", 0, 0, 0, false, thumbUrl, false, false, 1, 0, 0, tileGroup.Abstract, "", "", "", meanRadius, referenceFrame);

            if (AddAsLayer.Checked == false)
            {
                Earth3d.MainWindow.CurrentImageSet = ish;
            }
            else
            {
                ImageSetLayer layer = new ImageSetLayer(ish);
                layer.Enabled        = true;
                layer.Name           = tileGroup.Title;
                layer.ReferenceFrame = LayerManager.CurrentMap;

                LayerManager.Add(layer, true);
            }
        }
 private static void AddChildren(WMS_Tile_ServiceTiledPatternsTiledGroup[] layer, TreeNodeCollection nodes)
 {
     if (layer != null)
     {
         foreach (var child in layer)
         {
             var childNode = nodes.Add(child.Title);
             childNode.Tag = child;
         }
     }
 }
        private void AddTiledLayer(WMS_Tile_ServiceTiledPatternsTiledGroup tileGroup)
        {
            var tilePatern = GetPattern(tileGroup.TilePattern[0].Value);

            var degrees = GetLngDegrees(tilePatern);

            foreach(var pat in tileGroup.TilePattern)
            {
                var deg = GetLngDegrees(pat.Value);

                if (deg < degrees)
                {
                    degrees = deg;
                }
            }

            var baseTileDegrees = degrees;
            var totalLevels = -1;

            while (baseTileDegrees < 180)
            {
                totalLevels++;
                baseTileDegrees *= 2;
            }

            var url = serviceUrl + FillBoundingBoxUrl(tilePatern.Replace("&time=${time}",""));
            var baseLevel = 3;

            //if (tileGroup.TilePattern.Length > totalLevels)
            {
               //     baseLevel = (totalLevels +8) - tileGroup.TilePattern.Length;
            }

            var imageType = ".png";
            double meanRadius = 300000000; //todo

            var referenceFrame = LayerManager.CurrentMap;

            var thumbUrl = "http://www.worldwidetelescope.org/wwtweb/thumbnail.aspx?name=" + referenceFrame;

            var ish = new ImageSetHelper(tileGroup.Title, url, ImageSetType.Planet, BandPass.Visible, ProjectionType.Equirectangular, (int)(uint)url.GetHashCode32(), baseLevel, totalLevels, 512, baseTileDegrees, imageType, true,"", 0, 0, 0, false, thumbUrl, false, false, 1, 0, 0, tileGroup.Abstract, "", "", "", meanRadius, referenceFrame);

            if (AddAsLayer.Checked == false)
            {
                Earth3d.MainWindow.CurrentImageSet = ish;
            }
            else
            {
                var layer = new ImageSetLayer(ish);
                layer.Enabled = true;
                layer.Name = tileGroup.Title;
                layer.ReferenceFrame = LayerManager.CurrentMap;

                LayerManager.Add(layer, true);
            }
        }
Beispiel #4
0
        private void LayersTree_AfterSelect(object sender, TreeViewEventArgs e)
        {
            WMS.Layer wmsLayer = LayersTree.SelectedNode.Tag as WMS.Layer;

            WMS.Style style = LayersTree.SelectedNode.Tag as WMS.Style;

            WMS_Tile_ServiceTiledPatternsTiledGroup tileGroup = LayersTree.SelectedNode.Tag as WMS_Tile_ServiceTiledPatternsTiledGroup;


            if (style != null && LayersTree.SelectedNode.Parent != null)
            {
                wmsLayer = LayersTree.SelectedNode.Parent.Tag as WMS.Layer;
            }

            if (wmsLayer != null)
            {
                add.Enabled = true;

                if (style != null && !string.IsNullOrEmpty(style.Abstract))
                {
                    SetAbstractText(style.Abstract);
                }
                else
                {
                    SetAbstractText(wmsLayer.Abstract);
                }
            }
            else if (tileGroup != null)
            {
                SetAbstractText(tileGroup.Abstract);
                add.Enabled = true;
            }
            else
            {
                SetAbstractText("");
                add.Enabled = false;
            }

            if (tileGroup != null || (wmsLayer != null && !string.IsNullOrEmpty(wmsLayer.Name)))
            {
                add.Enabled = true;
                if (tileGroup != null)
                {
                    TiledWMS.Enabled   = false;
                    TiledWMS.Checked   = true;
                    AddAsLayer.Checked = true;
                    AddAsLayer.Enabled = true;
                }
                else if (wmsLayer.IsTileable)
                {
                    TiledWMS.Enabled   = true;
                    AddAsLayer.Checked = true;
                    AddAsLayer.Enabled = true;
                }
                else
                {
                    AddAsLayer.Checked = true;
                    AddAsLayer.Enabled = false;
                    TiledWMS.Enabled   = false;
                }
                AddAsLayer.Visible = true;
                TiledWMS.Visible   = true;
            }
            else
            {
                add.Enabled        = false;
                AddAsLayer.Visible = false;
                TiledWMS.Visible   = false;
            }
        }
Beispiel #5
0
        private void add_Click(object sender, EventArgs e)
        {
            if (LayersTree.SelectedNode == null)
            {
                return;
            }

            WMS_Tile_ServiceTiledPatternsTiledGroup tileGroup = LayersTree.SelectedNode.Tag as WMS_Tile_ServiceTiledPatternsTiledGroup;

            if (tileGroup != null)
            {
                AddTiledLayer(tileGroup);
                return;
            }

            WMS.Layer wmsLayer = LayersTree.SelectedNode.Tag as WMS.Layer;

            WMS.Style style = LayersTree.SelectedNode.Tag as WMS.Style;

            if (style != null && LayersTree.SelectedNode.Parent != null)
            {
                wmsLayer = LayersTree.SelectedNode.Parent.Tag as WMS.Layer;
            }

            if (wmsLayer != null)
            {
                if (TiledWMS.Checked)
                {
                    AddTiledLayer(wmsLayer, style);
                    return;
                }

                double west  = -180;
                double east  = 180;
                double north = 90;
                double south = -90;

                int width  = 2048;
                int height = 2048;

                if (wmsLayer.EX_GeographicBoundingBox != null)
                {
                    west  = wmsLayer.EX_GeographicBoundingBox.westBoundLongitude;
                    north = wmsLayer.EX_GeographicBoundingBox.northBoundLatitude;
                    east  = wmsLayer.EX_GeographicBoundingBox.eastBoundLongitude;
                    south = wmsLayer.EX_GeographicBoundingBox.southBoundLatitude;
                }

                if (wmsLayer.LatLonBoundingBox != null)
                {
                    west  = wmsLayer.LatLonBoundingBox.minx;
                    north = wmsLayer.LatLonBoundingBox.maxy;
                    east  = wmsLayer.LatLonBoundingBox.maxx;
                    south = wmsLayer.LatLonBoundingBox.miny;
                }

                if (wmsLayer.fixedHeight != null)
                {
                    int h = int.Parse(wmsLayer.fixedHeight);
                    if (h > 0)
                    {
                        height = h;
                    }
                }

                if (wmsLayer.fixedWidth != null)
                {
                    int w = int.Parse(wmsLayer.fixedWidth);

                    if (w > 0)
                    {
                        width = w;
                    }
                }

                WmsLayer layer = new WmsLayer();

                //string path = MakeWmsGetMapUrl(wmsLayer.Name, style != null ? style.Name : "",
                //    west,north, east, south,
                //    width, height,
                //    "",
                //    "");

                layer.ServiceUrl    = serviceUrl;
                layer.WmsVersion    = wmsVersion;
                layer.Layers        = wmsLayer.Name;
                layer.Styles        = style != null ? style.Name : "";
                layer.Overlay.north = north;
                layer.Overlay.south = south;
                layer.Overlay.west  = west;
                layer.Overlay.east  = east;
                layer.Height        = height;
                layer.Width         = width;
                if (wmsLayer.Dimension != null)
                {
                    foreach (Dimension dim in wmsLayer.Dimension)
                    {
                        if (dim.name == "time")
                        {
                            string[] dates = wmsLayer.Dimension[0].Value.Split(new char[] { ',' });

                            foreach (string date in dates)
                            {
                                layer.TimeRanges.Add(new TimeRange(date));
                            }
                            layer.UpdateTimeRange();
                        }
                    }
                }
                layer.Enabled        = true;
                layer.Name           = wmsLayer.Title;
                layer.ReferenceFrame = LayerManager.CurrentMap;

                LayerManager.Add(layer, true);
            }
        }