예제 #1
0
        private static ImageStore getImageStoreFromXPathNodeIterator(string name, XPathNodeIterator imageAccessorIter, RenderableObjectList parentRenderable, Cache cache)
        {
			double levelZeroTileSizeDegrees = ParseDouble(getInnerTextFromFirstChild(imageAccessorIter.Current.Select("LevelZeroTileSizeDegrees")));
			int numberLevels = Int32.Parse(getInnerTextFromFirstChild(imageAccessorIter.Current.Select("NumberLevels")));
			int textureSizePixels = Int32.Parse(getInnerTextFromFirstChild(imageAccessorIter.Current.Select("TextureSizePixels")));
			string imageFileExtension = getInnerTextFromFirstChild(imageAccessorIter.Current.Select("ImageFileExtension"));
			string permanentDirectory = getInnerTextFromFirstChild(imageAccessorIter.Current.Select("PermanentDirectory"));
			if(permanentDirectory == null || permanentDirectory.Length == 0)
				permanentDirectory = getInnerTextFromFirstChild(imageAccessorIter.Current.Select("PermanantDirectory"));


			TimeSpan dataExpiration = getCacheExpiration(imageAccessorIter.Current.Select("DataExpirationTime"));

			string duplicateTilePath = getInnerTextFromFirstChild(imageAccessorIter.Current.Select("DuplicateTilePath"));
			string cacheDir = getInnerTextFromFirstChild(imageAccessorIter.Current.Select("CacheDirectory"));
			
			if(cacheDir == null || cacheDir.Length == 0)
			{
				cacheDir = String.Format("{0}{1}{2}{1}{3}", cache.CacheDirectory, Path.DirectorySeparatorChar, getRenderablePathString(parentRenderable), name);
			}
			else
			{
				cacheDir = Path.Combine(cache.CacheDirectory, cacheDir);
			}

			if(permanentDirectory != null && permanentDirectory.IndexOf(":") < 0)
			{
				permanentDirectory = Path.Combine(Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath), permanentDirectory);
			}

			if(duplicateTilePath != null && duplicateTilePath.IndexOf(":") < 0)
			{
				duplicateTilePath = Path.Combine(Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath), duplicateTilePath);
			}

            byte opacity = 255;

            // case 1 : permanent directory specified.
			if(permanentDirectory != null)
			{
				ImageStore ia = new ImageStore();
				ia.DataDirectory = permanentDirectory;
				ia.LevelZeroTileSizeDegrees = levelZeroTileSizeDegrees;
				ia.LevelCount = numberLevels;
				ia.ImageExtension = imageFileExtension;
				//doesn't work when this is set
				//ia.CacheDirectory = cacheDir;
                
				
				if(duplicateTilePath != null && duplicateTilePath.Length > 0)
				{
					ia.DuplicateTexturePath = duplicateTilePath; 
				}
                return ia;
            }

            // case 2: ImageTileService specified
			XPathNodeIterator imageTileServiceIter = imageAccessorIter.Current.Select("ImageTileService");
			if(imageTileServiceIter.Count > 0)
			{
				imageTileServiceIter.MoveNext();
				
				string serverUrl = getInnerTextFromFirstChild(imageTileServiceIter.Current.Select("ServerUrl"));
				string dataSetName = getInnerTextFromFirstChild(imageTileServiceIter.Current.Select("DataSetName"));
				string serverLogoFilePath = getInnerTextFromFirstChild(imageTileServiceIter.Current.Select("ServerLogoFilePath"));
	
				TimeSpan cacheExpiration = getCacheExpiration(imageTileServiceIter.Current.Select("CacheExpirationTime"));

				if(serverLogoFilePath != null && serverLogoFilePath.Length > 0 && !Path.IsPathRooted(serverLogoFilePath))
				{
					serverLogoFilePath = Path.Combine(
						Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath),
						serverLogoFilePath);
				}
				
				string opacityString = getInnerTextFromFirstChild(imageTileServiceIter.Current.Select("Opacity"));

				if(opacityString != null)
					opacity = byte.Parse(opacityString);

				ImageStore ia = new NltImageStore(dataSetName, serverUrl);
				ia.DataDirectory = null;
				ia.LevelZeroTileSizeDegrees = levelZeroTileSizeDegrees;
				ia.LevelCount = numberLevels;
				ia.ImageExtension = imageFileExtension;
				ia.CacheDirectory = cacheDir;
                ia.ServerLogo = serverLogoFilePath;

                return ia;
            }

            // case 3: WMSAccessor specified
			XPathNodeIterator wmsAccessorIter = imageAccessorIter.Current.Select("WMSAccessor");
			if(wmsAccessorIter.Count > 0)
			{
				wmsAccessorIter.MoveNext();
				
				WorldWind.Net.Wms.WmsImageStore wmsLayerStore = new WorldWind.Net.Wms.WmsImageStore();
			
				wmsLayerStore.ImageFormat = getInnerTextFromFirstChild(wmsAccessorIter.Current.Select("ImageFormat"));

				wmsLayerStore.ImageExtension = imageFileExtension;
				wmsLayerStore.CacheDirectory = cacheDir;
				//wmsLayerAccessor.IsTransparent = ParseBool(getInnerTextFromFirstChild(wmsAccessorIter.Current.Select("UseTransparency")));
				wmsLayerStore.ServerGetMapUrl = getInnerTextFromFirstChild(wmsAccessorIter.Current.Select("ServerGetMapUrl"));
				wmsLayerStore.Version = getInnerTextFromFirstChild(wmsAccessorIter.Current.Select("Version"));
				wmsLayerStore.WMSLayerName = getInnerTextFromFirstChild(wmsAccessorIter.Current.Select("WMSLayerName"));

				string username = getInnerTextFromFirstChild(wmsAccessorIter.Current.Select("Username"));
				string password = getInnerTextFromFirstChild(wmsAccessorIter.Current.Select("Password"));
				string wmsStyleName = getInnerTextFromFirstChild(wmsAccessorIter.Current.Select("WMSLayerStyle"));
				string serverLogoPath = getInnerTextFromFirstChild(wmsAccessorIter.Current.Select("ServerLogoFilePath"));
				string opacityString = getInnerTextFromFirstChild(wmsAccessorIter.Current.Select("Opacity"));
				
				
				if(serverLogoPath != null && serverLogoPath.Length > 0 && !Path.IsPathRooted(serverLogoPath))
				{
					serverLogoPath = Path.Combine(
						Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath),
						serverLogoPath);
				}
				if(opacityString != null)
					opacity = byte.Parse(opacityString);

                TimeSpan cacheExpiration = getCacheExpiration(imageAccessorIter.Current.Select("CacheExpirationTime"));

			    //if(username != null && username.Length > 0)
			    //    wmsLayerStore.Username = username;

			    //if(password != null)
			    //    wmsLayerAccessor.Password = password;

				if(wmsStyleName != null && wmsStyleName.Length > 0)
					wmsLayerStore.WMSLayerStyle = wmsStyleName;
				else
					wmsLayerStore.WMSLayerStyle = "";

				wmsLayerStore.LevelCount = numberLevels;
				wmsLayerStore.LevelZeroTileSizeDegrees = levelZeroTileSizeDegrees;

                return wmsLayerStore;
            }
            Log.Write(Log.Levels.Warning, "CONF", "WARNING: no valid image store found!");
            return null;
        }
예제 #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;
        }