示例#1
0
        public override void Load()
        {
            return;

            string strCachePath = GetCachePath();

            if (m_oImageTileService == null && m_strDataSetName != string.Empty && m_strServerUrl != string.Empty)
            {
                m_oImageTileService = new ImageTileService(m_strDataSetName, m_strServerUrl);
            }
            m_oImageAccessor = new ImageAccessor(strCachePath,
                                                 m_intTextureSizePixels,
                                                 m_decLevelZeroTileSizeDegrees,
                                                 m_intNumberLevels,
                                                 m_strImageFileExtension,
                                                 strCachePath,
                                                 m_oImageTileService);

            m_oQuadTileSet = new QuadTileSet(m_strName,
                                             m_hBoundary,
                                             m_oWorld,
                                             distAboveSurface,
                                             (terrainMapped ? m_oWorld.TerrainAccessor : null),
                                             m_oImageAccessor, m_bOpacity, false);

            base.Load();
        }
示例#2
0
        private QuadTileSet GetQuadLayer()
        {
            if (m_blnIsChanged)
            {
                NltImageStore[] imageStores = new NltImageStore[1];
                imageStores[0] = new NltImageStore(m_strDatasetName, m_strServerUrl);
                imageStores[0].DataDirectory            = null;
                imageStores[0].LevelZeroTileSizeDegrees = LevelZeroTileSize;
                imageStores[0].LevelCount        = m_iLevels;
                imageStores[0].ImageExtension    = m_strImageExt;
                imageStores[0].CacheDirectory    = GetCachePath();
                imageStores[0].TextureSizePixels = m_iTextureSizePixels;

                m_oQuadTileSet = new QuadTileSet(m_szTreeNodeText,
                                                 m_oWorldWindow.CurrentWorld,
                                                 distAboveSurface,
                                                 90, -90, -180, 180, terrainMapped, imageStores);
                m_oQuadTileSet.IsOn    = m_IsOn;
                m_oQuadTileSet.Opacity = m_bOpacity;


                m_oQuadTileSet.AlwaysRenderBaseTiles = true;
                m_oQuadTileSet.IsOn    = m_IsOn;
                m_oQuadTileSet.Opacity = m_bOpacity;
                m_blnIsChanged         = false;
            }
            return(m_oQuadTileSet);
        }
示例#3
0
 protected override void CleanUpLayer(bool bFinal)
 {
     if (m_layer != null)
     {
         m_layer.Dispose();
     }
     m_layer = null;
 }
示例#4
0
 protected override void CleanUpLayer(bool bFinal)
 {
     if (m_oQuadTileSet != null)
     {
         m_oQuadTileSet.Dispose();
     }
     m_oQuadTileSet = null;
     m_blnIsChanged = true;
 }
示例#5
0
        /// <summary>
        /// Layer properties context menu item
        /// </summary>
        protected virtual void GetReloadShader()
        {
            QuadTileSet qts = this as QuadTileSet;

            if (qts != null)
            {
                qts.Effect = null;
            }
        }
示例#6
0
        /// <summary>
        /// Layer properties context menu item
        /// </summary>
        protected virtual void OnReloadShaderClick(object sender, EventArgs e)
        {
            QuadTileSet qts = this as QuadTileSet;

            if (qts != null)
            {
                qts.Effect = null;
            }
        }
示例#7
0
 protected override void CleanUpLayer(bool bFinal)
 {
     if (m_oVEQTS != null)
     {
         m_oVEQTS.Dispose();
     }
     m_oVEQTS       = null;
     m_blnIsChanged = true;
 }
示例#8
0
        internal override RenderableObject GetLayer()
        {
            if (m_blnIsChanged)
            {
                string strExt       = ".png";
                string strCachePath = GetCachePath();
                System.IO.Directory.CreateDirectory(strCachePath);

                string imageFormat = "image/png";
                if (m_wmsLayer.ImageFormats != null)
                {
                    foreach (string curFormat in m_wmsLayer.ImageFormats)
                    {
                        if (string.Compare(curFormat, "image/png", true, System.Globalization.CultureInfo.InvariantCulture) == 0)
                        {
                            imageFormat = curFormat;
                            break;
                        }
                        if (string.Compare(curFormat, "image/jpeg", true, System.Globalization.CultureInfo.InvariantCulture) == 0 ||
                            String.Compare(curFormat, "image/jpg", true, System.Globalization.CultureInfo.InvariantCulture) == 0)
                        {
                            imageFormat = curFormat;
                        }
                    }
                }
                if (string.Compare(imageFormat, "image/jpeg", true, System.Globalization.CultureInfo.InvariantCulture) == 0 ||
                    string.Compare(imageFormat, "image/jpg", true, System.Globalization.CultureInfo.InvariantCulture) == 0)
                {
                    strExt = ".jpg";
                }

                WmsImageStoreDapple[] imageStores = new WmsImageStoreDapple[1];
                imageStores[0] = new WmsImageStoreDapple(imageFormat, m_wmsLayer.ParentWMSList.ServerGetMapUrl,
                                                         m_wmsLayer.ParentWMSList.Version, m_wmsLayer.Name, string.Empty, m_wmsLayer.SRS, m_wmsLayer.CRS);
                imageStores[0].DataDirectory            = null;
                imageStores[0].LevelZeroTileSizeDegrees = LevelZeroTileSize;
                imageStores[0].LevelCount        = m_iLevels;
                imageStores[0].ImageExtension    = strExt;
                imageStores[0].CacheDirectory    = strCachePath;
                imageStores[0].TextureSizePixels = TextureSizePixels;

                m_oQuadTileSet = new QuadTileSet(m_szTreeNodeText, m_oWorldWindow.CurrentWorld, distAboveSurface,
                                                 (double)m_wmsLayer.North, (double)m_wmsLayer.South, (double)m_wmsLayer.West, (double)m_wmsLayer.East,
                                                 true, imageStores);
                m_oQuadTileSet.AlwaysRenderBaseTiles = true;
                m_oQuadTileSet.IsOn    = m_IsOn;
                m_oQuadTileSet.Opacity = m_bOpacity;
                m_blnIsChanged         = false;
            }
            return(m_oQuadTileSet);
        }
示例#9
0
 private void resetQuadTileSetCache(RenderableObject ro)
 {
     if (ro.IsOn && ro is QuadTileSet)
     {
         QuadTileSet qts = (QuadTileSet)ro;
         qts.ResetCacheForCurrentView(worldWindow.DrawArgs.WorldCamera);
     }
     else if (ro is RenderableObjectList)
     {
         RenderableObjectList rol = (RenderableObjectList)ro;
         foreach (RenderableObject curRo in rol.ChildObjects)
         {
             resetQuadTileSetCache(curRo);
         }
     }
 }
示例#10
0
        internal override RenderableObject GetLayer()
        {
            if (m_blnIsChanged)
            {
#if USE_NEW_VE_QTS
                double distanceAboveSurface = 0.0;

                VEImageStore[] imageStores = null;
                imageStores    = new VEImageStore[1];
                imageStores[0] = new VEImageStore(m_mapType, m_oWorld.EquatorialRadius + distanceAboveSurface);
                imageStores[0].CacheDirectory = GetCachePath();
                imageStores[0].TextureFormat  = World.Settings.TextureFormat;

                m_oVEQTS = new QuadTileSet(m_strName, m_oWorld, distanceAboveSurface, 90, -90, -180, 180, true, imageStores);
                m_oVEQTS.AlwaysRenderBaseTiles = true;
#else
                string fileExt, dataset;
                if (m_mapType == VirtualEarthMapType.road)
                {
                    fileExt = "png";
                    dataset = "r";
                }
                else
                {
                    fileExt = "jpeg";
                    if (m_mapType == VirtualEarthMapType.aerial)
                    {
                        dataset = "a";
                    }
                    else
                    {
                        dataset = "h";
                    }
                }

                m_oVEQTS = new VeReprojectTilesLayer(m_szTreeNodeText, m_oWorldWindow, dataset, fileExt, 0, GetCachePath());
#endif
                m_oVEQTS.IsOn           = m_IsOn;
                m_oVEQTS.Opacity        = m_bOpacity;
                m_oVEQTS.RenderPriority = RenderPriority.TerrainMappedImages;
                m_blnIsChanged          = false;
            }
            return(m_oVEQTS);
        }
示例#11
0
        private QuadTileSet GetQuadTileSet()
        {
            if (m_layer == null)
            {
                SwitchToUseTiles();

                string strCachePath = GetCachePath();
                System.IO.Directory.CreateDirectory(strCachePath);

                // Determine the needed levels (function of tile size and resolution if available)
                // Shared code in DappleUtils of dapxmlclient
                try
                {
                    if (m_iLevels == 0)
                    {
                        m_iLevels = DappleUtils.Levels(m_oServer.Command, m_hDataSet);
                    }
                }
                catch
                {
                    m_iLevels = 15;
                }

                ImageStore[] imageStores = new ImageStore[1];
                imageStores[0] = new DAPImageStore(m_hDataSet, m_oServer)
                {
                    DataDirectory            = null,
                    LevelZeroTileSizeDegrees = LevelZeroTileSize,
                    LevelCount        = m_iLevels,
                    ImageExtension    = ".png",
                    CacheDirectory    = strCachePath,
                    TextureSizePixels = m_iTextureSizePixels
                };

                m_layer = new QuadTileSet(m_hDataSet.Title, m_oWorldWindow.CurrentWorld, 0, m_hDataSet.Boundary.MaxY, m_hDataSet.Boundary.MinY,
                                          m_hDataSet.Boundary.MinX, m_hDataSet.Boundary.MaxX, true, imageStores)
                {
                    AlwaysRenderBaseTiles = true,
                    IsOn    = m_IsOn,
                    Opacity = m_bOpacity
                };
            }
            return(m_layer);
        }
示例#12
0
        ///<summary>
        ///  Goes to the extent specified by the bounding box for the QTS layer
        ///  or to the lat/lon for icons
        /// </summary>
        public void GetGoto()
        {
            lock (this.ParentList.ChildObjects.SyncRoot)
            {
                for (int i = 0; i < this.ParentList.ChildObjects.Count; i++)
                {
                    RenderableObject ro = (RenderableObject)this.ParentList.ChildObjects[i];
                    if (ro.Name.Equals(name))
                    {
                        if (ro is QuadTileSet)
                        {
                            QuadTileSet qts = (QuadTileSet)ro;
                            DrawArgs.Camera.SetPosition((qts.North + qts.South) / 2, (qts.East + qts.West) / 2);
                            double perpendicularViewRange = (qts.North - qts.South > qts.East - qts.West ? qts.North - qts.South : qts.East - qts.West);
                            double altitude = qts.LayerRadius * Math.Sin(MathEngine.DegreesToRadians(perpendicularViewRange * 0.5));

                            DrawArgs.Camera.Altitude = altitude;

                            break;
                        }
                        if (ro is Icon)
                        {
                            Icon ico = (Icon)ro;
                            DrawArgs.Camera.SetPosition(ico.Latitude, ico.Longitude);
                            DrawArgs.Camera.Altitude /= 2;

                            break;
                        }
                        if (ro is ShapeFileLayer)
                        {
                            ShapeFileLayer slayer = (ShapeFileLayer)ro;
                            DrawArgs.Camera.SetPosition((slayer.North + slayer.South) / 2, (slayer.East + slayer.West) / 2);
                            double perpendicularViewRange = (slayer.North - slayer.South > slayer.East - slayer.West ? slayer.North - slayer.South : slayer.East - slayer.West);
                            double altitude = slayer.MaxAltitude;

                            DrawArgs.Camera.Altitude = altitude;

                            break;
                        }
                    }
                }
            }
        }
示例#13
0
        private QuadTileSet GetQuadTileSet()
        {
            if (m_layer == null)
            {
                ImageStore[] imageStores = new ImageStore[1];
                imageStores[0] = new DAPImageStore(null, m_oServer);
                imageStores[0].DataDirectory            = null;
                imageStores[0].LevelZeroTileSizeDegrees = 22.5;
                imageStores[0].LevelCount        = 10;
                imageStores[0].ImageExtension    = ".png";
                imageStores[0].CacheDirectory    = GetCachePath();
                imageStores[0].TextureSizePixels = 256;

                m_layer = new QuadTileSet(this.Title, m_oWorldWindow.CurrentWorld, 0, m_oServer.ServerExtents.MaxY, m_oServer.ServerExtents.MinY, m_oServer.ServerExtents.MinX, m_oServer.ServerExtents.MaxX, true, imageStores);
                m_layer.AlwaysRenderBaseTiles = true;
                m_layer.IsOn    = m_IsOn;
                m_layer.Opacity = m_bOpacity;
            }
            return(m_layer);
        }
示例#14
0
        internal override RenderableObject GetLayer()
        {
            if (m_blnIsChanged)
            {
                ImageStore[] aImageStore = new ImageStore[1];
                aImageStore[0] = new ArcIMSImageStore(m_szServiceName, m_szLayerID, m_oServerUri as ArcIMSServerUri, TileSize, m_oCultureInfo, m_dMinScale, m_dMaxScale);
                aImageStore[0].DataDirectory            = null;
                aImageStore[0].LevelZeroTileSizeDegrees = LevelZeroTileSize;
                aImageStore[0].LevelCount     = m_iLevels;
                aImageStore[0].ImageExtension = ".png";
                aImageStore[0].CacheDirectory = GetCachePath();

                m_oQuadTileSet = new QuadTileSet(m_szTreeNodeText, m_oWorldWindow.CurrentWorld, 0,
                                                 Extents.North, Extents.South, Extents.West, Extents.East,
                                                 true, aImageStore);
                m_oQuadTileSet.AlwaysRenderBaseTiles = true;
                m_oQuadTileSet.IsOn    = m_IsOn;
                m_oQuadTileSet.Opacity = m_bOpacity;
                m_blnIsChanged         = false;
            }
            return(m_oQuadTileSet);
        }
示例#15
0
        public override void Load()
        {
            string name        = "Geocover 1990";
            string description = "NASA derived global 30 meters per pixel satellite image mosaic";

            //////////////////////////---------------
            double north = 90.0;
            double south = -90.0;
            double west  = -180.0;
            double east  = 180.0;
            GeographicBoundingBox box = new GeographicBoundingBox(north, south, west, east);
            ///////////////////////////---------------------
            string           m_strDataSetName    = "bmng.topo.bathy.200403";
            string           m_strServerUrl      = "http://worldwind25.arc.nasa.gov/tile/tile.aspx";
            ImageTileService m_oImageTileService = new ImageTileService(m_strDataSetName, m_strServerUrl);
            //////////////////////////-------------------------------

            decimal m_decLevelZeroTileSizeDegrees = 36.0m;
            int     m_intNumberLevels             = 20;
            int     m_intTextureSizePixels        = 256;
            string  m_strImageFileExtension       = "jpg";

            string strCachePath = @"E:\项目\智岩切片工具\分块数据\DomTile";// Config.EarthSetting.CachePath + "\\bmng\\";

            ImageAccessor m_oImageAccessor = new ImageAccessor(strCachePath,
                                                               m_intTextureSizePixels,
                                                               m_decLevelZeroTileSizeDegrees,
                                                               m_intNumberLevels,
                                                               m_strImageFileExtension,
                                                               strCachePath,
                                                               m_oImageTileService);

            QuadTileSet tile = new QuadTileSet(name, box, this.Viewer.CurrentWorld, 0,
                                               this.Viewer.CurrentWorld.TerrainAccessor, m_oImageAccessor, m_bOpacity, true);

            tile.IsVisible = true;
            this.Viewer.CurrentWorld.RenderLayerList.Add(tile);
        }
示例#16
0
        void WorldWindow_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button != MouseButtons.Right)
            {
                return;
            }

            if (m_Form == null)
            {
                return;
            }

            if (!m_Form.Visible)
            {
                return;
            }

            if (m_Form.KeyLayer == null)
            {
                return;
            }

            QuadTileSet qts = m_Form.KeyLayer;

            WorldWind.Net.Wms.WmsImageStore wms = (WorldWind.Net.Wms.WmsImageStore)qts.ImageStores[0];

            string requestUrl = wms.ServerGetMapUrl;

            string[] layerNameParts = wms.WMSLayerName.Split('&');
            string   layerName      = layerNameParts[0];
            string   getMapParts    =
                requestUrl += "?QUERY_LAYERS=" + layerName + "&SERVICE=WMS&VERSION=" + wms.Version + "&REQUEST=GetFeatureInfo&SRS=EPSG:4326&FEATURE_COUNT=10&INFO_FORMAT=text/plain&EXCEPTIONS=text/plain";

            // From Servir-Viz...
            Angle  LowerLeftX;
            Angle  LowerLeftY;
            Angle  UpperRightX;
            Angle  UpperRightY;
            string minx, miny, maxx, maxy;

            char[] degreeChar = { '°' };

            int mouseX = e.X;
            int mouseY = e.Y;

            int queryBoxWidth  = 2 * queryBoxOffset + 1;
            int queryBoxHeight = 2 * queryBoxOffset + 1;

            int queryX = queryBoxOffset + 1;
            int queryY = queryBoxOffset + 1;

            drawArgs.WorldCamera.PickingRayIntersectionWithTerrain(mouseX - queryBoxOffset, mouseY + queryBoxOffset, out LowerLeftY, out LowerLeftX, drawArgs.CurrentWorld);
            drawArgs.WorldCamera.PickingRayIntersectionWithTerrain(mouseX + queryBoxOffset, mouseY - queryBoxOffset, out UpperRightY, out UpperRightX, drawArgs.CurrentWorld);

            //drawArgs.WorldCamera.PickingRayIntersectionWithTerrain(0, 0 + drawArgs.screenHeight, out LowerLeftY, out LowerLeftX, drawArgs.CurrentWorld);
            //drawArgs.WorldCamera.PickingRayIntersectionWithTerrain(drawArgs.screenWidth, 0, out UpperRightY, out UpperRightX, drawArgs.CurrentWorld);

            minx = LowerLeftX.ToString().Contains("NaN") ? "-180.0" : LowerLeftX.ToString().TrimEnd(degreeChar);
            miny = LowerLeftY.ToString().Contains("NaN") ? "-90.0" : LowerLeftY.ToString().TrimEnd(degreeChar);
            maxx = UpperRightX.ToString().Contains("NaN") ? "180.0" : UpperRightX.ToString().TrimEnd(degreeChar);
            maxy = UpperRightY.ToString().Contains("NaN") ? "90.0" : UpperRightY.ToString().TrimEnd(degreeChar);

            // request has to include a bbox and the requested pixel coords relative to that box...
            requestUrl += "&layers=" + wms.WMSLayerName;
            requestUrl += "&WIDTH=" + queryBoxWidth.ToString() + "&HEIGHT=" + queryBoxHeight.ToString();
            requestUrl += "&BBOX=" + minx + "," + miny + "," + maxx + "," + maxy;
            requestUrl += "&X=" + queryX.ToString() + "&Y=" + queryY.ToString();

            if (!World.Settings.WorkOffline)
            {
                WorldWind.Net.WebDownload dl = new WorldWind.Net.WebDownload(requestUrl);
                System.IO.FileInfo        fi = new System.IO.FileInfo("GetFeatureInfo_response.txt");
                dl.DownloadFile(fi.FullName);
                //dl.SavedFilePath = fi.FullName;
                //dl.BackgroundDownloadFile(GetFeatureDlComplete);


                if (World.Settings.UseInternalBrowser)
                {
                    SplitContainer          sc      = (SplitContainer)drawArgs.parentControl.Parent.Parent;
                    InternalWebBrowserPanel browser = (InternalWebBrowserPanel)sc.Panel1.Controls[0];
                    browser.NavigateTo(fi.FullName);
                }
                else
                {
                    System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo();
                    psi.FileName        = fi.FullName;
                    psi.Verb            = "open";
                    psi.UseShellExecute = true;

                    psi.CreateNoWindow = true;
                    System.Diagnostics.Process.Start(psi);
                }
            }
        }