World Wind FAQ

From World Wind Wiki

(Difference between revisions)
Jump to: navigation, search
Revision as of 11:49, 31 July 2005 (edit)
172.182.98.124 (Talk)

← Previous diff
Revision as of 15:23, 31 July 2005 (edit) (undo)
NowakPL (Talk | contribs)
m (Reverted edit of 172.182.98.124, changed back to last version by 216.244.232.6)
Next diff →
Line 1: Line 1:
-//----------------------------------------------------------------------------+This is a list of '''frequently asked questions'''. If you have any questions please read this before asking in the [[Forums]] or [[Chat]].
-// NAME: ISS+
-// VERSION: 1.1+
-// DESCRIPTION: International Space Station tracker - demonstrates loading/rendering a 3D mesh +
-// DEVELOPER: Bjorn Reppen aka "Mashi"+
-// WEBSITE: http://www.mashiharu.com+
-//----------------------------------------------------------------------------+
-using Microsoft.DirectX.Direct3D;+
-using Microsoft.DirectX;+
-using OrbitTools;+
-using System.Collections;+
-using System.Drawing;+
-using System.Globalization;+
-using System.IO;+
-using System.Windows.Forms;+
-using System;+
-using Utility;+
-using WorldWind.Net;+
-using WorldWind.PluginEngine;+
-using WorldWind.Renderable;+
-using WorldWind;+
-namespace WorldWind.Script.Examples+==Before Installing==
-{+
- /// <summary>+
- /// International Space Station tracker example+
- ///+
- /// NOTE: Unfortunately there is a bug in the positioning - +
- /// if you can find the bug I will buy you a beer!+
- /// </summary>+
- public class IssPlugin : Plugin+
- {+
- // Path and filename of the ISS mesh+
- const string meshPath = "data\\iss_18k_jem.x";+
- +
- /// <summary>+
- /// Plugin entry point - All plugins must implement this function+
- /// </summary>+
- public override void Load()+
- {+
- // Add us to the list of renderable objects - this puts us in the render loop+
- Iss iss = new Iss( Path.Combine( m_PluginDirectory, meshPath ) );+
- iss.IsOn = true;+
- Application.WorldWindow.CurrentWorld.RenderableObjects.Add(iss);+
- }+
- /// <summary>+===How can I download NASA World Wind?===
- /// Plugin entry point - All plugins must implement this function+
- /// </summary>+
- public override void Unload()+
- {+
- Application.WorldWindow.CurrentWorld.RenderableObjects.Remove(Iss.LayerName);+
- }+
- }+
- /// <summary>+The latest version is 1.3.1.1.
- /// Real-time tracking of the ISS (International Space Station)+
- /// VRML Model: http://spaceflight.nasa.gov/gallery/vrml/station/+
- /// 2-line elements: http://science.nasa.gov/realtime/JTrack/spacecraftvectors.txt+
- /// "http://spaceflight.nasa.gov/realdata/sightings/SSapplications/Post/JavaSSOP/orbit/ISS/SVPOST.html";+
- /// </summary>+
- public class Iss : RenderableObject+
- {+
- public const string LayerName = "Iss";+
- const string SatelliteName = "STATION";+
- const string SpaceCraftVectorsUrl = "http://science.nasa.gov/realtime/JTrack/spacecraftvectors.txt";+
- +
- float m_scale = 50; // ISS is very hard to spot from a distance so let's make it more obvious+
- bool m_cameraFollows = false; // Force camera to follow station+
- bool m_showTrack = false;+
- static Mesh mesh;+
- string meshFilePath;+
- static ExtendedMaterial[] materials;+
- Texture[] meshTextures; // Textures for the mesh+
- static Material[] meshMaterials;+
- bool isFirstRun;+
- CustomVertex.PositionColored[] track = new CustomVertex.PositionColored[92];+
- Orbit orbit; // Calculates position based on the two-line elements+
- ConfigForm configForm;+
- #region Configurable settings+This version is clearly marked if you go to Help->About in World Wind.
- public float Scale +To get the latest version visit [[NASA_World_Wind_Download]]
- {+
- get { return m_scale; }+
- set { m_scale = value; }+
- }+
- public bool ShowTrack+===What about the source code?===
- {+
- get { return m_showTrack; }+
- set { m_showTrack = value; }+
- }+
- public bool CameraFollows+The source code is for developers. It is an additional download to the Full Install. If you just want to use World Wind and look around, all you need is the Full Install.
- {+
- get { return m_cameraFollows; }+
- set { m_cameraFollows = value; }+
- }+
- #endregion+If you want the source code as well, download both. Once you run the full install, copy the Data directory from your World Wind full install directory into your source directory.
- public Iss( string meshFilePath ) : base(LayerName)+===System Requirements===
- {+
- this.meshFilePath = meshFilePath;+
- this.RenderPriority = RenderPriority.Icons;+
- }+
- public Tle GetFromWeb(string satelliteName, string url ) +* Windows 95, 98, 98SE, ME, 2000, XP, or 2003
- {+* 3D graphics card (see [[Video Card Compatibility]])
- string line1=null,line2=null;+* Internet connection
- using( WebDownload dl = new WebDownload(url) ) +
- {+
- dl.DownloadMemory();+
- using(TextReader tr = new StreamReader( dl.ContentStream ))+
- {+
- string[] line = tr.ReadToEnd().Split('\n');+
- for(int i=line.Length-1-2;i>0;i--)+
- {+
- if(!line[i].Trim().StartsWith(satelliteName))+
- continue;+
- line1 = line[i+1].Trim();+===Windows 95,98,ME compatibility===
- line2 = line[i+2].Trim();+
- break;+
- }+
- }+
- }+
- if(line1==null)+
- throw new ApplicationException("Satellite two-line element data for '"+satelliteName+"' not found in " + url);+
- Tle tle = new Tle(satelliteName, line1, line2);+
- return tle;+
- }+
- public override void Initialize(DrawArgs drawArgs)+Version 1.3 of World Wind shouldn't have a problem running unless it is due to an older computer / video card. I would appreciate some feedback on this. The latest version removed the texture converter code so the annoying black dos box shouldn't show up.
- {+
- if (isInitialized)+
- return;+
- try+
- {+
- Tle tle = GetFromWeb(SatelliteName,SpaceCraftVectorsUrl);+
- orbit = new Orbit(tle);+
- }+
- catch(Exception caught)+
- {+
- Utility.Log.Write( caught );+
- string msg = "Failed to read TLE from " + SpaceCraftVectorsUrl;+
- MessageBox.Show( msg, "ISS failed to load.", MessageBoxButtons.OK, MessageBoxIcon.Error);+
- IsOn = false;+
- }+
- +
- try+
- {+
- GraphicsStream adj;+
- mesh = Mesh.FromFile(meshFilePath, MeshFlags.Managed, drawArgs.device, out adj, out materials );+
- // Extract the material properties and texture names.+===Software Requirements===
- meshTextures = new Texture[materials.Length]; +
- meshMaterials = new Material[materials.Length];+
- string xFilePath = Path.GetDirectoryName(meshFilePath);+
- for(int i = 0; i < materials.Length; i++)+
- {+
- meshMaterials[i] = materials[i].Material3D;+
- // Set the ambient color for the material (D3DX does not do this)+
- meshMaterials[i].Ambient = meshMaterials[i].Diffuse;+
- // Create the texture.+The installer should detect and direct you to install these by default. If you are installing these because you believe there is an error, please install in the order listed below.
- if(materials[i].TextureFilename!=null)+
- {+
- string textureFilePath = Path.Combine(xFilePath, materials[i].TextureFilename);+
- meshTextures[i] = TextureLoader.FromFile(drawArgs.device, textureFilePath); +
- }+
- }+
- isInitialized = true;+[http://www.microsoft.com/downloads/details.aspx?FamilyID=262d25e3-f589-4842-8157-034d1e7cf3a3&displaylang=en Microsoft .NET 1.1]
- isFirstRun = true;+
- }+
- catch(Exception caught)+
- {+
- Utility.Log.Write( caught );+
- string msg = "Failed to read mesh from " + meshFilePath;+
- System.Windows.Forms.MessageBox.Show( msg, "ISS failed to load.", MessageBoxButtons.OK, MessageBoxIcon.Error);+
- IsOn = false;+
- }+
- }+
- public override void Dispose()+[http://www.microsoft.com/downloads/details.aspx?FamilyId=4E825A37-0C94-4421-9EC8-156E52525D11&displaylang=en Microsoft Directx 9.0c (December 2004 redistributable)]
- {+
- isInitialized = false;+
- if(mesh!=null)+
- mesh.Dispose();+
- if(meshTextures!=null)+
- foreach(Texture t in meshTextures)+
- if(t!=null)+
- t.Dispose();+
- if(configForm!=null)+
- {+
- configForm.Dispose();+
- configForm = null;+
- }+
- }+
- public override bool PerformSelectionAction(DrawArgs drawArgs)+===Minimum configuration===
- {+
- return false;+
- }+
- public override void Update(DrawArgs drawArgs)+With the minimum configuration, performance and functionality may be less than expected.
- {+
- if(!isInitialized)+
- Initialize(drawArgs);+
- }+
- /// <summary>+* 700 MHz or higher CPU
- /// Calculates minutes elapsed since epoch time.+* 128 MB RAM
- /// </summary>+* 1 GB disk space (World Wind's cache size is 2 GB by default; you must [[#Can_you_make_the_amount_of_cache_adjustable.3F|reduce the size of your cache]])
- public double GetElapsed(double epochDayOfYear) +
- {+
- DateTime dt = DateTime.Now.ToUniversalTime();+
- double elapsedMinutes = (dt.DayOfYear - epochDayOfYear)*1440;+
- elapsedMinutes += dt.TimeOfDay.TotalMinutes;+
- return elapsedMinutes;+
- }+
- public override void Render(DrawArgs drawArgs)+===Recommended configuration===
- {+
- if(!isInitialized || mesh==null)+
- return;+
- if(m_showTrack)+* 1.4 GHz or higher CPU
- {+* 256 MB of RAM
- drawArgs.device.TextureState[0].ColorOperation = TextureOperation.Disable;+* DSL/cable connection or faster
- drawArgs.device.VertexFormat = CustomVertex.PositionColored.Format;+* 3 GB of disk space
- drawArgs.device.DrawUserPrimitives(PrimitiveType.LineStrip, track.Length-1, track);+
- }+
- double elapsedMinutes = GetElapsed(orbit.EpochDayOfYear());+==Installation==
- for(int i=0;i<track.Length;i++)+
- {+
- Eci e = orbit.GetPosition(i+elapsedMinutes);+
- CoordGeo cg = e.toGeo();+
- Vector3 s = MathEngine.SphericalToCartesian(Angle.FromRadians(cg.Lat), Angle.FromRadians(cg.Lon), +
- drawArgs.WorldCamera.WorldRadius + cg.Alt*1000 );+
- track[i].X = s.X;+
- track[i].Y = s.Y;+
- track[i].Z = s.Z;+
- track[i].Color = Color.FromArgb(_opacity,255,255,22).ToArgb();+
- }+
- +
- if(isFirstRun)+
- {+
- isFirstRun=false;+
- configForm = new ConfigForm(this);+
- configForm.Show();+
- }+
- Eci eci = orbit.GetPosition(elapsedMinutes);+===CRC Error===
- CoordGeo cog = eci.toGeo();+
- if(m_cameraFollows)+;Version 1.3
- drawArgs.WorldCamera.SetPosition(Angle.FromRadians(cog.Lat).Degrees, Angle.FromRadians(cog.Lon).Degrees, double.NaN, double.NaN, double.NaN);+
- drawArgs.device.RenderState.CullMode = Cull.None;+*Some people recieve a CRC error when downloading the installer. This is caused by a corrupt download. Please redownload the program. (I would highly appreciate if someone could check MD5 sums as listed on the [[NASA World Wind Download]] page, and verify that this is a corrupt download. Also, if you repeatedly receive the same corrupt download from a particular server, please notify us immediately. [[User:Llynix]])
- drawArgs.device.RenderState.Lighting = true;+
- drawArgs.device.RenderState.Ambient = Color.Black;+
- drawArgs.device.RenderState.NormalizeNormals = true;+
- +
- drawArgs.device.Lights[0].Diffuse = Color.FromArgb(255, 255, 215);+
- drawArgs.device.Lights[0].Type = LightType.Directional; +
- drawArgs.device.Lights[0].Direction = new Vector3(1f,1f,1f);+
- drawArgs.device.Lights[0].Enabled = true; +
- Vector3 sv = MathEngine.SphericalToCartesian(Angle.FromRadians(cog.Lat), Angle.FromRadians(cog.Lon), drawArgs.WorldCamera.WorldRadius + cog.Alt*1000 );+
- drawArgs.device.Lights[0].Position = new Vector3(+
- (float)sv.X*2,+
- (float)sv.Y*2,+
- (float)sv.Z);+
- drawArgs.device.RenderState.AlphaBlendEnable = true;+===Error writing file ______===
- drawArgs.device.TextureState[0].ColorArgument1 = TextureArgument.TextureColor;+
- drawArgs.device.TextureState[0].ColorOperation = TextureOperation.SelectArg1;+
- drawArgs.device.SamplerState[0].MipFilter = TextureFilter.Anisotropic;+*The installer requires about 700 megs on your windows drive (usually c:) to install. This is regardless of where you install it to. Normally users who don't have room to decompress the files have this problem.
- drawArgs.device.SamplerState[0].MipMapLevelOfDetailBias = -1;+
- drawArgs.device.SamplerState[0].AddressU = TextureAddress.Mirror;+
- drawArgs.device.SamplerState[0].AddressV = TextureAddress.Mirror;+
- Matrix currentWorld = drawArgs.device.Transform.World;+;Version 1.2e and older versions
- drawArgs.device.Transform.World = Matrix.Identity;+
- drawArgs.device.Transform.World *= Matrix.Scaling(m_scale, m_scale, m_scale);+
- double time = DateTime.Now.TimeOfDay.TotalSeconds/60;+
- double fraction = time-Math.Round(time);+
- drawArgs.device.Transform.World *= Matrix.RotationY((float)(fraction*Math.PI*2));+
- drawArgs.device.Transform.World *= Matrix.Translation(+
- (float)sv.X,+
- (float)sv.Y,+
- (float)sv.Z);+
- +
- drawArgs.device.RenderState.ZBufferEnable = true;+
- for( int i = 0; i < meshMaterials.Length; i++ )+
- {+
- drawArgs.device.Material = meshMaterials[i];+
- Texture texture = meshTextures[i];+
- // drawArgs.device.TextureState[0].ColorArgument1 = TextureArgument.TextureColor;+
- drawArgs.device.SetTexture(0, texture);+
- mesh.DrawSubset(i);+
- }+
- drawArgs.device.Transform.World = currentWorld;+Please install the Latest Version.
- drawArgs.device.RenderState.Lighting = false;+
- drawArgs.device.RenderState.CullMode = Cull.Clockwise;+
- }+
- }+
- /// <summary>+==Problems After a Successful Install==
- /// Property browser/settings dialog to modify parameters in the main class.+
- /// </summary>+
- public class ConfigForm : System.Windows.Forms.Form+
- {+
- public ConfigForm( object selected )+
- {+
- System.Windows.Forms.PropertyGrid propertyGrid = new System.Windows.Forms.PropertyGrid();+
- ClientSize = new System.Drawing.Size(292, 271);+
- Text = "Settings";+
- propertyGrid.Dock = System.Windows.Forms.DockStyle.Fill;+
- propertyGrid.SelectedObject = selected;+
- Controls.Add(propertyGrid);+
- }+
- }+
-}+
-/// ------- REST OF FILE CONTAINS ORBITAL CALCULATION CODE -----------+===Every time I try to run the program it crashes with a "JIT debugger" error message.===
-#region OrbitTools+Yikes, these are the worst. A few notes when trying to debug these. The process ID and thread ID are pointless and don't really help at all. Any other error codes you might receive may be helpful. Do not be concerned that there was no debugger found. As we get more organized and get more of an idea what errors are coming up I will try to post additional information here.
-namespace OrbitTools+
-{+
- // Borrowed from: http://www.zeptomoby.com/satellites/+
- //+Some people have reported that installing the software requirements listed above has fixed their issues.
- // Globals.cs+
- //+
- // 12/22/2003+
- //+
- // Copyright (c) 2003 Michael F. Henry+
- //+
- /// <summary>+
- /// Summary description for Globals.+
- /// </summary>+
- abstract public class Globals+
- {+
- public const double PI = 3.141592653589793;+
- public const double TWOPI = 2.0 * Globals.PI;+
- public const double RADS_PER_DEG = Globals.PI / 180.0;+
- public const double GM = 398601.2; // Earth gravitational constant, km^3/sec^2+if someone understand this .it may help!
- public const double GEOSYNC_ALT = 42241.892; // km+http://thinstall.com/help/?debugging_netapplications.htm
- public const double EARTH_RAD = 6370.0; // km+
- public const double EARTH_DIA = 12800.0; // km+
- public const double DAY_SIDERAL = (23 * 3600) + (56 * 60) + 4.09; // sec+
- public const double DAY_24HR = (24 * 3600); // sec+
- public const double AE = 1.0;+===Error x135===
- public const double AU = 149597870.0; // Astronomical unit (km) (IAU 76)+
- public const double SR = 696000.0; // Solar radius (km) (IAU 76)+
- public const double TWOTHRD = 2.0 / 3.0;+
- public const double XKMPER = 6378.135; // Earth equatorial radius - kilometers (WGS '72)+
- public const double F = 1.0 / 298.26; // Earth flattening (WGS '72)+
- public const double GE = 398600.8; // Earth gravitational constant (WGS '72)+
- public const double J2 = 1.0826158E-3; // J2 harmonic (WGS '72)+
- public const double J3 = -2.53881E-6; // J3 harmonic (WGS '72)+
- public const double J4 = -1.65597E-6; // J4 harmonic (WGS '72)+
- public const double CK2 = J2 / 2.0;+
- public const double CK4 = -3.0 * J4 / 8.0;+
- public const double XJ3 = J3;+
- public const double E6A = 1.0e-06;+
- public const double QO = Globals.AE + 120.0 / Globals.XKMPER;+
- public const double S = Globals.AE + 78.0 / Globals.XKMPER;+
- public const double MIN_PER_DAY = 1440.0; // Minutes per day (solar)+
- public const double SEC_PER_DAY = 86400.0; // seconds per day (solar)+
- public const double OMEGA_E = 1.00273790934; // earth rotation per sideral day+
- public static double XKE = Math.Sqrt(3600.0 * GE / +
- (Globals.XKMPER * Globals.XKMPER * Globals.XKMPER)); //Math.Sqrt(ge) ER^3/min^2+
- public static double QOMS2T = Math.Pow((QO - Globals.S), 4); //(QO - Globals.S)^4 ER^4+
- public static double Sqr(double x) +More information is needed. I would like a full error code (If I recall this is a hex code, and it has a C in front of it followed by a lot of zeros.)
- {+
- return (x * x);+
- }+
- public static double Fmod2p(double arg)+0xc0000135
- {+
- double modu = (arg % TWOPI);+
- if (modu < 0.0)+This error occurs when you try to run a .NET application but .NET is not installed (or is corrupt). To solve this error message, either install, or remove and reinstall .NET.
- modu += TWOPI;+
- return modu;+===Error x02===
- }+
- // ///////////////////////////////////////////////////////////////////////////+More information is needed. Would appreciate the full error code.
- // Globals.AcTan()+
- // ArcTangent of sin(x) / cos(x). The advantage of this function over arctan()+
- // is that it returns the correct quadrant of the angle.+
- public static double AcTan(double sinx, double cosx)+
- {+
- double ret;+
- if (cosx == 0.0)+===cordbg.exe !a 0x5b4 code===
- {+
- if (sinx > 0.0)+
- ret = PI / 2.0;+
- else+
- ret = 3.0 * PI / 2.0;+
- }+
- else+
- {+
- if (cosx > 0.0)+
- ret = Math.Atan(sinx / cosx);+
- else+
- ret = PI + Math.Atan(sinx / cosx);+
- }+
- return ret;+More information is needed. Perhaps a .NET 1.1 issue?
- }+
- }+
- //+===Program Crashes with "unable to load font 'Tahoma Bold' (9em)?"===
- // Tle.cs+
- // +
- // 12/23/2003+
- //+
- // Copyright (c) 2003 Michael F. Henry+
- //+
- // ////////////////////////////////////////////////////////////////////////+
- //+
- // NASA Two-Line Element Data format+
- //+
- // [Reference: T.S. Kelso / www.celestrak.com]+
- //+
- // Two line element data consists of three lines in the following format:+
- //+
- // AAAAAAAAAAAAAAAAAAAAAA+
- // 1 NNNNNU NNNNNAAA NNNNN.NNNNNNNN +.NNNNNNNN +NNNNN-N +NNNNN-N N NNNNN+
- // 2 NNNNN NNN.NNNN NNN.NNNN NNNNNNN NNN.NNNN NNN.NNNN NN.NNNNNNNNNNNNNN+
- // +
- // Line 0 is a twenty-two-character name.+
- // +
- // Lines 1 and 2 are the standard Two-Line Orbital Element Set Format identical+
- // to that used by NORAD and NASA. The format description is:+
- // +
- // Line 1+
- // Column Description+
- // 01-01 Line Number of Element Data+
- // 03-07 Satellite Number+
- // 10-11 International Designator (Last two digits of launch year)+
- // 12-14 International Designator (Launch number of the year)+
- // 15-17 International Designator (Piece of launch)+
- // 19-20 Epoch Year (Last two digits of year)+
- // 21-32 Epoch (Julian Day and fractional portion of the day)+
- // 34-43 First Time Derivative of the Mean Motion+
- // or Ballistic Coefficient (Depending on ephemeris type)+
- // 45-52 Second Time Derivative of Mean Motion (decimal point assumed;+
- // blank if N/A)+
- // 54-61 BSTAR drag term if GP4 general perturbation theory was used.+
- // Otherwise, radiation pressure coefficient. (Decimal point assumed)+
- // 63-63 Ephemeris type+
- // 65-68 Element number+
- // 69-69 Check Sum (Modulo 10)+
- // (Letters, blanks, periods, plus signs = 0; minus signs = 1)+
- //+
- // Line 2+
- // Column Description+
- // 01-01 Line Number of Element Data+
- // 03-07 Satellite Number+
- // 09-16 Inclination [Degrees]+
- // 18-25 Right Ascension of the Ascending Node [Degrees]+
- // 27-33 Eccentricity (decimal point assumed)+
- // 35-42 Argument of Perigee [Degrees]+
- // 44-51 Mean Anomaly [Degrees]+
- // 53-63 Mean Motion [Revs per day]+
- // 64-68 Revolution number at epoch [Revs]+
- // 69-69 Check Sum (Modulo 10)+
- // +
- // All other columns are blank or fixed.+
- // +
- // Example:+
- // +
- // NOAA 6+
- // 1 11416U 86 50.28438588 0.00000140 67960-4 0 5293+
- // 2 11416 98.5105 69.3305 0012788 63.2828 296.9658 14.24899292346978+
 +This is a known issue and should be fixed in 1.3.1
 +Please download the latest patch.
- /// <summary>+===My video card isn't working===
- /// This class encapsulates a single set of standard NORAD two-line elements.+
- /// </summary>+
- public class Tle+
- {+
- // Note: The column offsets are ZERO based.+
- // Name+Check out the [[Video Card Compatibility]] list.
- public const int TLE_LEN_LINE_DATA = 69; public const int TLE_LEN_LINE_NAME = 22;+Please, by all means, edit it depending on whether yours works.
- // Line 1+Ensure that your video card drivers are up to date.
- public const int TLE1_COL_SATNUM = 2; public const int TLE1_LEN_SATNUM = 5;+
- public const int TLE1_COL_INTLDESC_A = 9; public const int TLE1_LEN_INTLDESC_A = 2;+
- public const int TLE1_COL_INTLDESC_B = 11; public const int TLE1_LEN_INTLDESC_B = 3;+
- public const int TLE1_COL_INTLDESC_C = 14; public const int TLE1_LEN_INTLDESC_C = 3;+
- public const int TLE1_COL_EPOCH_A = 18; public const int TLE1_LEN_EPOCH_A = 2;+
- public const int TLE1_COL_EPOCH_B = 20; public const int TLE1_LEN_EPOCH_B = 12;+
- public const int TLE1_COL_MEANMOTIONDT = 33; public const int TLE1_LEN_MEANMOTIONDT = 10;+
- public const int TLE1_COL_MEANMOTIONDT2 = 44; public const int TLE1_LEN_MEANMOTIONDT2 = 8;+
- public const int TLE1_COL_BSTAR = 53; public const int TLE1_LEN_BSTAR = 8;+
- public const int TLE1_COL_EPHEMTYPE = 62; public const int TLE1_LEN_EPHEMTYPE = 1;+
- public const int TLE1_COL_ELNUM = 64; public const int TLE1_LEN_ELNUM = 4;+
- // Line 2+Try going to Start->Run and typing 'dxdiag'. This should load up the DirectX Diagnosis program. Under Display please make sure everything is working and enabled.
- public const int TLE2_COL_SATNUM = 2; public const int TLE2_LEN_SATNUM = 5;+
- public const int TLE2_COL_INCLINATION = 8; public const int TLE2_LEN_INCLINATION = 8;+
- public const int TLE2_COL_RAASCENDNODE = 17; public const int TLE2_LEN_RAASCENDNODE = 8;+
- public const int TLE2_COL_ECCENTRICITY = 26; public const int TLE2_LEN_ECCENTRICITY = 7;+
- public const int TLE2_COL_ARGPERIGEE = 34; public const int TLE2_LEN_ARGPERIGEE = 8;+
- public const int TLE2_COL_MEANANOMALY = 43; public const int TLE2_LEN_MEANANOMALY = 8;+
- public const int TLE2_COL_MEANMOTION = 52; public const int TLE2_LEN_MEANMOTION = 11;+
- public const int TLE2_COL_REVATEPOCH = 63; public const int TLE2_LEN_REVATEPOCH = 5;+
- public enum eTleLine+===Why am I getting an error about "mscorwks.dll"?===
- {+
- LINE_ZERO = 0,+
- LINE_ONE,+
- LINE_TWO+
- };+
- public enum eField+This is an old error that shouldn't be affecting users anymore. I would like feedback if someone does experience it with 1.3 or higher.
- {+
- FLD_FIRST,+
- FLD_NORADNUM = eField.FLD_FIRST,+
- FLD_INTLDESC,+
- FLD_SET, // TLE set number+
- FLD_EPOCHYEAR, // Epoch: Last two digits of year+
- FLD_EPOCHDAY, // Epoch: Fractional Julian Day of year+
- FLD_ORBITNUM, // Orbit at epoch+
- FLD_I, // Inclination+
- FLD_RAAN, // R.A. ascending node+
- FLD_E, // Eccentricity+
- FLD_ARGPER, // Argument of perigee+
- FLD_M, // Mean anomaly+
- FLD_MMOTION, // Mean motion+
- FLD_MMOTIONDT, // First time derivative of mean motion+
- FLD_MMOTIONDT2,// Second time derivative of mean motion+
- FLD_BSTAR, // BSTAR Drag+
- FLD_LAST // MUST be last+
- }+
- public enum eUnits+Most likely, you've got .NET 1.0, but World Wind requires .NET 1.1. Just download it from [http://msdn.microsoft.com/netframework/downloads/framework1_1/ here], and you should be up and running.
- {+
- U_FIRST,+
- U_RAD = U_FIRST, // radians+
- U_DEG, // degrees+
- U_NATIVE, // TLE format native units (no conversion)+
- U_LAST // MUST be last+
- }+
- +
- // Satellite name and two data lines+
- private string m_strName;+
- private string m_strLine1;+
- private string m_strLine2;+
- // Converted fields, in Double.Parse()-able form+===My computer is crashing/hangs===
- private Hashtable m_Field;+
- // Cache of field values in "double" format. +Most likely you have a hardware/driver problem. Test your computer stability with 3D graphics by running for instance [http://www.futuremark.com/ 3DMark] or other DirectX benchmarking software.
- // Key - integer+
- // Value - cached value+
- private Hashtable m_Cache;+
- // Generates key for cache+==Issues Downloading Tiles==
- private int Key(eUnits u, eField f)+
- { +
- return ((int)u * 100) + (int)f;+
- }+
- // //////////////////////////////////////////////////////////////////////////+To make sure there is no server-side problem check [[World Wind server status|Server status page]].
- public Tle(string strName, string strLine1, string strLine2)+
- {+
- m_strName = strName;+
- m_strLine1 = strLine1;+
- m_strLine2 = strLine2;+
- ValidateLine(m_strLine1, eTleLine.LINE_ONE);+===Download Monitor===
- ValidateLine(m_strLine2, eTleLine.LINE_TWO);+
- +
- Initialize();+
- }+
 +World Wind version 1.3 has a download monitor which can be very helpful diagnosing problems. Hold down Control (Ctrl) and hit H.
- /// <summary>+===Why am I getting 'Problem connecting to server. Trying again in 2 minutes'===
- /// Returns the requested TLE data field.+
- /// </summary>+
- /// <param name="fld">The field to return</param>+
- /// <returns>The requested field, in native format</returns>+
- public double getField(eField fld)+
- {+
- return getField(fld, eUnits.U_NATIVE);+
- }+
- // /////////////////////////////////////////////////////////////////////+Several possible reasons:
- /// <summary>+
- /// Returns the requested TLE data field as a double or +
- /// as a text string in the units requested. +
- /// </summary>+
- /// <remarks>+
- /// The numeric return values are cached; requesting the same field +
- /// repeatedly incurs minimal overhead.+
- /// </remarks>+
- /// <param name="fld">The TLE field to retrieve</param>+
- /// <param name="units">Specifies the units desired</param>+
- /// <param name="str">If non-null, the field is returned as+
- /// a string.</param>+
- /// If true, units are appended to text string.+
- /// </param>+
- /// <returns>+
- /// The requested field, converted to the requested units if necessary.+
- /// </returns>+
- public double getField(eField fld, eUnits units)+
- {+
- // Return requested field in floating-point form.+
- // Return cache contents if it exists, else populate cache.+
- int key = Key(units, fld);+
- if (m_Cache.ContainsKey(key))+#May be the server is down. You could say... try again in 2 minutes.
- {+#You may be behind a blocking proxy/firewall. You'll need to configure a port remapper, or hunt down an admin to help. See below.
- // return cached value+#[http://support.microsoft.com/kb/318785/ Make sure you have installed] [http://www.microsoft.com/downloads/details.aspx?FamilyID=A8F5654F-088E-40B2-BBDB-A83353618B38&displaylang=en .NET Framework 1.1 SP1]. (Issue [http://issues.worldwind.arc.nasa.gov/browse/WW-6 WW-6])
- return (double)m_Cache[key];+#You could be in a country that blocks access to worldwind sites & download servers. Try to find a proxy? We haven't yet had any confirmed reports of this.
- }+# Remember to use the HTTP Download Monitor (CTRL+H) to see what exactly is going on.
- else+
- {+
- // Value not in cache; add it+
- double valNative = Double.Parse(m_Field[fld].ToString(), CultureInfo.InvariantCulture);+
- double valConv = ConvertUnits(valNative, fld, units); +
- m_Cache[key] = valConv;+
- return valConv;+===Is there a way to set a proxy?===
- }+
- }+
- // ///////////////////////////////////////////////////////////////////////////+The current version of worldwind has limited proxy support. (I believe it defaults to the proxy settings in Internet Explorer.) Future versions should feature a more robust proxy support.
- // Convert the given field into the requested units. It is assumed that+
- // the value being converted is in the TLE format's "native" form.+
- protected double ConvertUnits(double valNative, // value to convert+
- eField fld, // what field the value is+
- eUnits units) // what units to convert to+
- {+
- if (fld ==eField.FLD_I ||+
- fld == eField.FLD_RAAN ||+
- fld == eField.FLD_ARGPER ||+
- fld == eField.FLD_M)+
- {+
- // The native TLE format is DEGREES+
- if (units == eUnits.U_RAD)+
- return valNative * Globals.RADS_PER_DEG;+
- }+
- return valNative; // return value in unconverted native format+===Proxy Issues===
- }+
- // //////////////////////////////////////////////////////////////////////////+Gillesk is working hard on proxy support. I need to link and put more information here.
- // ExpToDecimal()+you should use a portmapper like "AnalogX PortMapper" downloadable @ http://www.analogx.com/files/pmapperi.exe
- // Converts TLE-style exponential notation of the form [ |-]00000[+|-]0 to+ps: concerning people who are behind a proxy
- // decimal notation. Assumes implied decimal point to the left of the first+
- // number in the string, i.e., +
- // " 12345-3" = 0.00012345+
- // "-23429-5" = -0.0000023429 +
- // " 40436+1" = 4.0436+
- static string ExpToDecimal(string str)+
- {+
- const int COL_MANTISSA = 0;+
- const int LEN_MANTISSA = 6;+
- const int COL_EXPONENT = 6;+I found a way: Press "Alt+Q" and configure it.
- const int LEN_EXPONENT = 2;+
- +
- // Mantissa+
- double dblMan = Double.Parse(str.Substring(COL_MANTISSA, LEN_MANTISSA), CultureInfo.InvariantCulture);+
- bool bNeg = (dblMan < 0.0);+
- +
- if (bNeg)+
- {+
- // Make value positive for now+
- dblMan *= -1;+
- }+
- +
- // Move decimal place to left of first digit+
- while (dblMan >= 1.0)+
- dblMan /= 10.0;+
- +
- if (bNeg)+
- {+
- // Reapply negative sign+
- dblMan *= -1;+
- }+
- +
- // Exponent+
- int nExp = Int32.Parse(str.Substring(COL_EXPONENT, LEN_EXPONENT), CultureInfo.InvariantCulture);+
- double dblVal = dblMan * Math.Pow(10, nExp);+
- +
- return dblVal.ToString("f9", CultureInfo.InvariantCulture);+
- }+
- // //////////////////////////////////////////////////////////////////////////+===Why are the wrong image tiles showing up?===
- // Initialize()+
- // Initialize the TLE object.+
- public void Initialize()+
- {+
- // Have we already been initialized?+
- if (m_Field != null)+
- return;+
- m_Field = new Hashtable();+Possibly and probably due to the server bandwidth issues.
- m_Cache = new Hashtable();+
- +
- m_Field[eField.FLD_NORADNUM] = m_strLine1.Substring(TLE1_COL_SATNUM, TLE1_LEN_SATNUM);+
- m_Field[eField.FLD_INTLDESC] = m_strLine1.Substring(TLE1_COL_INTLDESC_A,+
- TLE1_LEN_INTLDESC_A ++
- TLE1_LEN_INTLDESC_B + +
- TLE1_LEN_INTLDESC_C); +
- m_Field[eField.FLD_EPOCHYEAR] = +
- m_strLine1.Substring(TLE1_COL_EPOCH_A, TLE1_LEN_EPOCH_A);+
- m_Field[eField.FLD_EPOCHDAY] = +A workaround is to delete the numbered folders in the "cache" directory, but then of course you have to re-download all the images the next time you run the program. It's not obvious which particular cache files correspond to the "bad" areas.
- m_strLine1.Substring(TLE1_COL_EPOCH_B, TLE1_LEN_EPOCH_B);+
- +
- if (m_strLine1[TLE1_COL_MEANMOTIONDT] == '-')+
- {+
- // value is negative+
- m_Field[eField.FLD_MMOTIONDT] = "-0";+
- }+
- else+
- m_Field[eField.FLD_MMOTIONDT] = "0";+
- +
- m_Field[eField.FLD_MMOTIONDT] += m_strLine1.Substring(TLE1_COL_MEANMOTIONDT + 1,+
- TLE1_LEN_MEANMOTIONDT);+
- +
- // decimal point assumed; exponential notation+
- m_Field[eField.FLD_MMOTIONDT2] = +
- ExpToDecimal(m_strLine1.Substring(TLE1_COL_MEANMOTIONDT2,+
- TLE1_LEN_MEANMOTIONDT2));+
- // decimal point assumed; exponential notation+You can also use a DDS viewer to browse and delete the offending files:
- m_Field[eField.FLD_BSTAR] = +
- ExpToDecimal(m_strLine1.Substring(TLE1_COL_BSTAR, TLE1_LEN_BSTAR));+
- //TLE1_COL_EPHEMTYPE +
- //TLE1_LEN_EPHEMTYPE +
- m_Field[eField.FLD_SET] = +*[http://developer.nvidia.com/object/nv_texture_tools.html Nvidia's DDS viewer] &mdash; By installing this you can switch to thumbnail view in the explorer and find and delete those nasty tiles.
- m_strLine1.Substring(TLE1_COL_ELNUM, TLE1_LEN_ELNUM).TrimStart();+
- // TLE2_COL_SATNUM +*Another good DDS format reader is [http://www.irfanview.com/ Irfanview].
- // TLE2_LEN_SATNUM +
- +
- m_Field[eField.FLD_I] = +
- m_strLine2.Substring(TLE2_COL_INCLINATION, TLE2_LEN_INCLINATION).TrimStart();+
- +
- m_Field[eField.FLD_RAAN] = +
- m_strLine2.Substring(TLE2_COL_RAASCENDNODE, TLE2_LEN_RAASCENDNODE).TrimStart();+
- // Eccentricity: decimal point is assumed+Also it is entirely possible that you are viewing more than one layer. Go to the layer manager and under images make sure only one box is checked. Otherwise things look very messed up.
- m_Field[eField.FLD_E] = "0." + m_strLine2.Substring(TLE2_COL_ECCENTRICITY,+
- TLE2_LEN_ECCENTRICITY);+
- +
- m_Field[eField.FLD_ARGPER] = +
- m_strLine2.Substring(TLE2_COL_ARGPERIGEE, TLE2_LEN_ARGPERIGEE).TrimStart();+
- +
- m_Field[eField.FLD_M] = +
- m_strLine2.Substring(TLE2_COL_MEANANOMALY, TLE2_LEN_MEANANOMALY).TrimStart();+
- +
- m_Field[eField.FLD_MMOTION] = +
- m_strLine2.Substring(TLE2_COL_MEANMOTION, TLE2_LEN_MEANMOTION).TrimStart();+
- +
- m_Field[eField.FLD_ORBITNUM] = +
- m_strLine2.Substring(TLE2_COL_REVATEPOCH, TLE2_LEN_REVATEPOCH).TrimStart();+
- }+
- // //////////////////////////////////////////////////////////////////////////+If you do manage to find a "bad" tile using a server and upon reconnecting keep on downloading that same "bad" tile, please kindly record the filename and level (folder number) of the tile and let someone know. I should probably point to a wiki link but I don't know where it is right now.
- // IsTleFormat()+
- // Returns true if "str" is a valid data line of a two-line element set,+
- // else false.+
- //+
- // To be valid a line must:+
- // Have as the first character the line number+
- // Have as the second character a blank+
- // Be TLE_LEN_LINE_DATA characters long+
- // Have a valid checksum (note: no longer required as of 12/96)+
- // +
- static void ValidateLine(string str, eTleLine line)+
- {+
- str = str.Trim();+
- int nLen = str.Length;+
- +
- if (nLen != TLE_LEN_LINE_DATA)+
- throw new ArgumentException("TLE line of incorrect length." );+
- +
- // First character in string must be a line number+
- if ((str[0] - '0') != (int)line)+
- throw new ArgumentException("Line must start with line number." );+
- +
- // Second char in string must be blank+
- if (str[1] != ' ')+
- throw new ArgumentException("Second character not blank." );+
- }+
- }+
- //+==Imagery related questions and tips==
- // Orbit.cs+
- //+
- // Copyright (c) 2003 Michael F. Henry+
- //+
- // mfh 12/23/2003+
- // +
- /// <summary>+
- /// This class accepts a single satellite's NORAD two-line element+
- /// set and provides information regarding the satellite's orbit +
- /// such as period, axis length, ECI coordinates/velocity, etc., using+
- /// the SGP4/SDP4 orbital models.+
- /// </summary>+
- public class Orbit+
- {+
- private Tle m_tle;+
- private Julian m_jdEpoch;+
- private NoradSGP4 m_NoradModel;+
- // Caching variables; note units are not necessarily the same as tle units+===The questions we get every day===
- private double m_secPeriod;+
- // Caching variables recovered from the input TLE elements+====Aah! I zoom in and it's all blurry! Help!====
- private double m_aeAxisSemiMinorRec; // semi-minor axis, in AE units+If you're looking in the United States and it's blurry please read [[#Why_can.27t_I_see_my_house.2Fcar.2Fetc.3F|Why can't I see my house/car/etc?]].
- private double m_aeAxisSemiMajorRec; // semi-major axis, in AE units+
- private double m_mnMotionRec; // radians per minute+
- private double m_kmPerigeeRec; // perigee, in km+
- // ///////////////////////////////////////////////////////////////////+If you're looking outside the United States please read [[#Can_I_use_this_for_international_locations.3F|Can I use this for international locations?]].
- public Orbit(Tle tle)+
- {+
- m_NoradModel = null;+
- m_tle = tle;+
- m_tle.Initialize();+
- int epochYear = (int)m_tle.getField(Tle.eField.FLD_EPOCHYEAR);+====Why can't I see my house/car/etc?====
- double epochDay = m_tle.getField(Tle.eField.FLD_EPOCHDAY );+[[Image:usgs.jpg|thumb|USGS Imagery of Washington, D.C.]]
 +'''AKA Why am I not getting pictures like this --->'''
- if (epochYear < 57)+That is the USGS Urban Area Imagery. USGS Urban is about .25m/pixel and only covers certain areas in the United States. These are the color images you may have seen. You can generally see cars with this layer. Note that it is only available for select cities, if you are not looking at the right place the images will be white. A list of available cities can be found at [[USGS Urban Areas]].
- epochYear += 2000;+
- else+
- epochYear += 1900;+
- m_jdEpoch = new Julian(epochYear, epochDay);+Alternatively you can use the USGS 1m / topography which covers most of the United States, but is in black and white color. You can see most buildings and roads. You can probably find your house.
- m_secPeriod = -1.0;+
- // Recover the original mean motion and semimajor axis from the+More information [[#USGS|below]].
- // input elements.+
- double mm = mnMotion();+
- double rpmin = mm * 2 * Globals.PI / Globals.MIN_PER_DAY; // rads per minute+
- double a1 = Math.Pow(Globals.XKE / rpmin, Globals.TWOTHRD);+
- double e = Eccentricity();+
- double i = Inclination();+
- double temp = (1.5 * Globals.CK2 * (3.0 * Globals.Sqr(Math.Cos(i)) - 1.0) / +
- Math.Pow(1.0 - e * e, 1.5)); +
- double delta1 = temp / (a1 * a1);+
- double a0 = a1 * +
- (1.0 - delta1 * +
- ((1.0 / 3.0) + delta1 * +
- (1.0 + 134.0 / 81.0 * delta1)));+
- double delta0 = temp / (a0 * a0);+====Can I use this for international locations?====
 +The United States Geological Survey (USGS) only has high resolution data available for the United States. However, the [[LandSat 7]] data is available globally.
- m_mnMotionRec = rpmin / (1.0 + delta0);+The LandSat 7 imagery has a lot less resolution than the USGS Ortho imagery. However, if you still don't believe the resolution is as good as it should be, click the sample images in [[LandSat 7]] and compare your results. If the images are of different quality it may be a downloading issue - see [[#Issues_Downloading_Tiles|Issues Downloading Tiles]].
- m_aeAxisSemiMinorRec = a0 / (1.0 - delta0);+
- m_aeAxisSemiMajorRec = m_aeAxisSemiMinorRec / Math.Sqrt(1.0 - (e * e));+
- m_kmPerigeeRec = Globals.XKMPER * (m_aeAxisSemiMinorRec * (1.0 - e) - Globals.AE);+
- // SGP4 : period < 225 minutes+While there is high resolution imagery for many other locations, most of this imagery is licensed and is not freely available. If you know of any public domain or unrestricted datasets that we can incorporate please feel free to [[Sources of free orthoimagery|tell us about it]].
- m_NoradModel = new NoradSGP4(this);+
- }+
- public double Inclination() { return radGet(Tle.eField.FLD_I); }+[[New Zealand]] is currently the only other country available with high resolution imagery. You must install [[World Wind Central Add-on Pack]] to see this imagery.
- public double Eccentricity() { return m_tle.getField(Tle.eField.FLD_E); }+
- public double RAAN() { return radGet(Tle.eField.FLD_RAAN); }+
- public double ArgPerigee() { return radGet(Tle.eField.FLD_ARGPER); }+
- public double BStar() { return m_tle.getField(Tle.eField.FLD_BSTAR) / Globals.AE;}+
- public double Drag() { return m_tle.getField(Tle.eField.FLD_MMOTIONDT); }+
- public double mnMotion() { return m_tle.getField(Tle.eField.FLD_MMOTION); }+
- public double mnAnomaly() { return radGet(Tle.eField.FLD_M); }+
- public Tle GetTle { get { return m_tle; } }+We encourage all international users to contact their local politicians about releasing GIS data for all to use.
- public DateTime EpochTime() { return m_jdEpoch.toTime(); }+[[Image:Pivot_irrigation.jpg|thumb|Pivot Irrigation]]
- public double EpochDayOfYear() { return m_jdEpoch.toDayOfYear(); }+
- // "Recovered" from the input elements+====What are these crazy circles?====
- public double SemiMajor() { return m_aeAxisSemiMajorRec; }+These are fields watered by a method called pivot irrigation. See [http://forum.worldwind.arc.nasa.gov/index.php?showtopic=1950&hl= this thread] for more information.
- public double SemiMinor() { return m_aeAxisSemiMinorRec; }+
- public double mnMotionRec() { return m_mnMotionRec; } // mn motion, rads/min+
- // //////////////////////////////////////////////////////////////////////////+====When was this imagery photographed?====
- // getPosition()+
- // This procedure returns the ECI position and velocity for the satellite+
- // at "tsince" minutes from the (GMT) TLE epoch. The vectors returned in+
- // the ECI object are kilometer-based.+
- // tsince - Time in minutes since the TLE epoch (GMT).+
- public Eci GetPosition(double tsince) +
- {+
- Eci eci = m_NoradModel.GetPosition(tsince);+
- eci.ae2km();+
- return eci;+
- }+
- protected double radGet(Tle.eField fld) +Depends on the layer. The NLT Landsat7 and OnEarth Landsat7 are from 1999 to 2003, with 2000 being the most active year. The USGS 1m Digital Ortho varies more. It was taken from 1990 to 2000. Search for a US location though [http://terraserver.com/search/search.asp TerraServer&reg;] and look for the USGS entry. The USGS Topo maps vary from within the past few years to more than a decade ago. Streets and building locations in particular may be quite out of date even if the terrain has changed little. USGS Urban Area Ortho dates from 2001 to 2004 and some areas are still being photographed, you can see the dataset ages at the [http://seamless.usgs.gov/website/seamless/products/listofortho.asp USGS site].
- { +
- return m_tle.getField(fld, Tle.eUnits.U_RAD); +
- }+
- }+
- //+====Can I see the world in real-time?====
- // Julian.cs+
- //+
- // This class encapsulates Julian dates with the epoch of 12:00 noon (12:00 UT)+
- // on January 1, 4713 B.C. Some epoch dates:+
- // 01/01/1990 00:00 UTC - 2447892.5+
- // 01/01/1990 12:00 UTC - 2447893.0+
- // 01/01/2000 00:00 UTC - 2451544.5+
- // 01/01/2001 00:00 UTC - 2451910.5+
- //+
- // Note the Julian day begins at noon, which allows astronomers to have the+
- // same date in a single observing session.+
- //+
- // References:+
- // "Astronomical Formulae for Calculators", Jean Meeus+
- // "Satellite Communications", Dennis Roddy, 2nd Edition, 1995.+
- //+
- // Copyright (c) 2003 Michael F. Henry+
- //+
- // mfh 12/24/2003+
- //+
- /// <summary>+This just isn't practical and won't be possible anytime soon. To do this requires a network of satellites dedicated to covering the earth. Just to provide as much detail as the base layers WorldWind loads first, the camera resolution on each one has to total about 100 megapixels. Perhaps the military has such a network, but it is certainly off-limits to anyone else. The images have to be received on the ground and processed. Then they all have to be combined where they overlap and corrected for the distortion caused by the earth's curvature. Finally after compressing the imagery from gigabytes down to several hundred megabytes, a server has to send it out to everyone. This requires an enormous amount of bandwidth for the server. Even if that weren't a problem, the internet connection for the majority of high-speed users is still too slow for more than about one update every hour.
- /// Encapsulates a Julian date.+
- /// </summary>+
- public class Julian+
- {+
- const double EPOCH_JAN1_12H_2000 = 2451545.0; // Jan 1.5 2000 = Jan 1 2000 12h UTC+
- public double FromJan1_12h_2000() { return Date - EPOCH_JAN1_12H_2000; }+
- // /////////////////////////////////////////////////////////////////////+===Landsat===
- // Create a Julian date object from a DateTime object. The time+
- // contained in the DateTime object is assumed to be UTC.+
- public Julian(DateTime dt)+
- {+
- double day = +
- (dt.DayOfYear) + +
- (dt.Hour + +
- ((dt.Minute + +
- ((dt.Second + (dt.Millisecond / 1000.0)) / 60.0)) / 60.0)) / 24.0;+
- Initialize(dt.Year, day);+====With the new landsat, what's with the colors? Why isn't my area covered?====
- }+[[Image:NLTL7.jpg|thumb|NLT Landsat 7 button]]
 +Nasa Learning Technologies has stated there will be additional tweaking and alterations to the coloring. There will be a white paper describing the techniques used, and it will improve over time.
- // /////////////////////////////////////////////////////////////////////+Consider this NLT global mosaic version 0.1, you haven't seen anything yet.
- // Create a Julian date object from a year and day of year.+
- // Example parameters: year = 2001, day = 1.5 (Jan 1 12h)+
- public Julian(int year, double day)+
- {+
- Initialize(year, day);+
- }+
 +NLT servers are working around the clock to process the entire world. Currently only certain areas are in place. Please be patient your area will be there very soon.
- public double Date; // Julian date+The NLT dataset is not yet as high quality as the original ("OnEarth" or "Community") Landsat7 datasets are. The NLT dataset has not been pansharpened yet. NASA feels it is of higher priority to complete a "rough copy" then it is to sharpen it as that takes 4x as long. As soon as coverage is complete look for a pansharpened layer to start trikling around the globe.
- private int m_Year; // Year including century+
- private double m_Day; // Day of year, 0.0 = Jan 1 00h+
- // /////////////////////////////////////////////////////////////////////+====Problems connecting to OnEarth / Limited resolution compared to 1.2e====
- // Initialize the Julian object+
- protected void Initialize(int year, double day)+
- {+
- // 1582 A.D.: 10 days removed from calendar+
- // 3000 A.D.: Arbitrary error checking limit+
- if ((year <= 1582) || (year > 3000) ||+
- (day < 0.0) || (day > 366.5))+
- throw new Exception("Date out of range");+
- m_Year = year;+Recently [http://onearth.jpl.nasa.gov OnEarth], who was serving the original Landsat layer, blocked access to World Wind users.
- m_Day = day;+
- // Now calculate Julian date+This is why older versions of World Wind do not work without the proxy/mirror patch, and why newer versions of World Wind (1.3) use the proxy patch by default.
- // Ref: "Astronomical Formulae for Calculators", Jean Meeus, pages 23-25+
- year--;+
- // Centuries are not leap years unless they divide by 400+Lucian at the onearth server has also asked us not to proxy the data. At this point the only access to the old landsat is the incomplete mirror served from worldwindcentral.com.
- int A = (year / 100);+
- int B = 2 - A + (A / 4);+
- double NewYears = (int)(365.25 * year) ++Work is underway to remedy this situation.
- (int)(30.6001 * 14) + +
- 1720994.5 + B; // 1720994 = Jan 01 year 0+
- Date = NewYears + day;+Latest news (2005-04-24): See http://www.worldwindcentral.com/wiki/World_Wind_Central_Add-on_Pack for a patch that addresses this issue, and http://forum.worldwind.arc.nasa.gov/index.php?showtopic=2743 for the related announcement on the NASA site.
- }+
- // /////////////////////////////////////////////////////////////////////+===USGS===
- // toGMST()+
- // Calculate Greenwich Mean Sidereal Time for the Julian date. The +
- // return value is the angle, in radians, measuring eastward from the+
- // Vernal Equinox to the prime meridian. This angle is also referred+
- // to as "ThetaG" (Theta GMST).+
- // +
- // References:+
- // The 1992 Astronomical Almanac, page B6.+
- // Explanatory Supplement to the Astronomical Almanac, page 50.+
- // Orbital Coordinate Systems, Part III, Dr. T.S. Kelso, +
- // Satellite Times, Nov/Dec 1995+
- public double toGMST() +
- {+
- double UT = (Date + 0.5) % 1.0;+
- double TU = (FromJan1_12h_2000() - UT) / 36525.0;+
- double GMST = 24110.54841 + TU * +====How do I load the .25 meter resolution maps, as shown in the screenshot of D.C. on this web site?====
- (8640184.812866 + TU * (0.093104 - TU * 6.2e-06));+[[Image:Usgs-urban.jpg|thumb|USGS Urban button]]
 +You can access these images by either selecting Layer Manager->Images->High Resolution Terrain Mapped->USGS Urban Area, or clicking the USGS Urban button.
- GMST = (GMST + Globals.SEC_PER_DAY * Globals.OMEGA_E * UT) % Globals.SEC_PER_DAY;+==== All I see is white tiles when viewing the USGS Urban data!====
- +
- if (GMST < 0.0)+
- GMST += Globals.SEC_PER_DAY; // "wrap" negative modulo value+
- return (Globals.TWOPI * (GMST / Globals.SEC_PER_DAY));+USGS urban data is not available for all areas. If you aren't looking in the right place (in one of the cities listed at the [http://www.terraserver.com/providers/usgs_urban.asp Terraserver website], you'll see whitish green, and nothing else. The [[Urban Layer Highlighter]] is extremely helpful locating areas.
- }+
- // /////////////////////////////////////////////////////////////////////+====How to make use of the USGS layers====
- // toLMST()+
- // Calculate Local Mean Sidereal Time for given longitude (for this date).+
- // The longitude is assumed to be in radians measured west from Greenwich.+
- // The return value is the angle, in radians, measuring eastward from the+
- // Vernal Equinox to the given longitude.+
- public double toLMST(double lon)+
- {+
- return (toGMST() + lon) % Globals.TWOPI;+
- }+
- public double toDayOfYear()+[http://www.usgs.gov/ USGS] is the [http://en.wikipedia.org/wiki/Acronym acronym] for U.S. Geological Survey. In other words, the data that is available in the USGS layers is only for the USA. While it is possible that similar data is available for other parts of the world, most of it is not freely available, and therefore is not incorporated into World Wind.
- {+See [[Using_the_USGS_Layers]] for step-by-step illustrated instructions.
- return m_Day;+
- }+
- // /////////////////////////////////////////////////////////////////////+===SRTM===
- // toTime()+
- // Convert to type DateTime.+
- public DateTime toTime()+
- {+
- // Jan 1+
- DateTime dt = new DateTime(m_Year, 1, 1);+
- // m_Day = 1 = Jan1+====Why does <''insert mountain or other relief feature''> not look like it should?====
- dt = dt.AddDays(m_Day - 1.0);+[[Image:Mountains.jpg|thumb|Illustration]]
- return dt; 
- } 
- } 
- //+This is due to the fact that the elevation data, SRTM, is taken much like a bat's echolocation or sonar measurements - the elevation is "sounded" from a satellite. Unfortunately, these "soundings" are only taken about every 90 meters, so the data isn't incredibly accurate. As a result, mountains and such (for example, Matterhorn) may look strange. Imagine the satellite collects elevation points in a grid. So it flies over the Alps where two peaks are 50 meters apart. It takes one reading, say, 40 meters away from one peak's top, but manages to hit the highest point of a different peak right on the top. It never hits the first peak's tippy top.
- // Eci.cs+
- //+
- // 12/22/2003+
- //+
- // Copyright (c) 2003 Michael F. Henry+
- //+
- /// <summary>+
- /// Encapsulates an Earth-Centered Inertial coordinate position/velocity.+
- /// </summary>+
- public class Eci+
- {+
- public Eci(Vector3 pos, Julian date, bool IsAeUnits)+
- {+
- m_pos = pos;+
- m_date = date;+
- m_VecUnits = (IsAeUnits ? VecUnits.UNITS_AE : VecUnits.UNITS_NONE);+
- }+
- protected enum VecUnits 
- { 
- UNITS_NONE, // not initialized 
- UNITS_AE, 
- UNITS_KM, 
- }; 
- private Vector3 m_pos;+Referring to the illustration, say the vertical blue lines are measurements taken. The red line will be what Worldwind shows, grey being the actual landscape. The left peak shows as being higher in WW, but the right one is actually the highest.
- private Julian m_date;+
- private VecUnits m_VecUnits;+
- // /////////////////////////////////////////////////////////////////////+In addition, some surfaces look bumpy that shouldn't be, such as airplane runways. This is caused by different materials and ground coverings giving false readings becuase of the way they reflect the radar. For more on the method used to collect the data, see the [http://www2.jpl.nasa.gov/srtm/instr.htm JPL Website].
- public Vector3 getPos() { return m_pos; }+
- public Julian getDate(){ return m_date; }+
- public bool UnitsAreAe() { return m_VecUnits == VecUnits.UNITS_AE; }+===Google Earth===
- public bool UnitsAreKm() { return m_VecUnits == VecUnits.UNITS_KM; }+
- // ///////////////////////////////////////////////////////////////////////////+====Which is better Google Earth or World Wind?====
- // Return the corresponding geodetic position (based on the current ECI+
- // coordinates/Julian date).+
- // Assumes the earth is an oblate spheroid as defined in WGS '72.+
- // Side effects: Converts the position and velocity vectors to km-based units.+
- // Reference: The 1992 Astronomical Almanac, page K12. +
- // Reference: www.celestrak.com (Dr. TS Kelso)+
- public CoordGeo toGeo()+
- {+
- ae2km(); // Vectors must be in kilometer-based units+
- double theta = Globals.AcTan(m_pos.Y, m_pos.X);+It is easy to construct a set of criteria by which either once can be made to seem inferior, but the truth is that they are two very different products aimed at different audiences. Google Earth uses commercial satellite imagery, and thus has much more data (and more recent data) available to users than World Wind. On the other hand, Google Earth is lacking the Scientific Visualization Viewer capabilities of World Wind, and cannot be extended with user-authored add-ons.
- double lon = (theta - m_date.toGMST()) % Globals.TWOPI;+
- +
- if (lon < 0.0) +
- lon += Globals.TWOPI; // "wrap" negative modulo+
- double r = Math.Sqrt(Globals.Sqr(m_pos.X) + Globals.Sqr(m_pos.Y));+==Cache and data related questions==
- double e2 = Globals.F * (2.0 - Globals.F);+
- double lat = Globals.AcTan(m_pos.Z, r);+
- const double DELTA = 1.0e-07;+===Can you make the amount of cache adjustable?===
- double phi;+
- double c;+
- do +Please see your WorldWind.exe.config file. Open it with notepad (or any text editor) and you can easily adjust the cache size.
- {+
- phi = lat;+
- c = 1.0 / Math.Sqrt(1.0 - e2 * Globals.Sqr(Math.Sin(phi)));+
- lat = Globals.AcTan(m_pos.Z + Globals.XKMPER * c * e2 * Math.Sin(phi), r);+
- }+
- while (Math.Abs(lat - phi) > DELTA);+
- +
- double alt = r / Math.Cos(lat) - Globals.XKMPER * c;+
- return new CoordGeo(lat, lon, alt); // radians, radians, kilometers+===Can I copy my cache data to another computer?===
- }+
- // ///////////////////////////////////////////////////////////////////////////+Yes you can. Click [http://forum.worldwind.arc.nasa.gov/index.php?showtopic=164&hl= here] for discussion.
- // Convert the position and velocity vector units from Globals.AE-based units+
- // to kilometer based units.+
- public void ae2km()+
- {+
- if (UnitsAreAe())+
- { +
- MulPos((float)(Globals.XKMPER / Globals.AE)); // km+
- m_VecUnits = VecUnits.UNITS_KM;+
- }+
- }+
- protected void MulPos(float factor) +===Can I use my 1.2e cache in 1.3?===
- {+
- m_pos.Multiply(factor); +
- }+
- }+
- //+Yes you can. See: [[Converting 1.2e Cache for use in 1.3]]
- // Coord.cs+
- //+
- // 12/22/2003+
- //+
- // Copyright (c) 2003 Michael F. Henry+
- //+
- /// <summary>+
- /// Geocentric coordinates+
- /// </summary>+
- public class CoordGeo +
- {+
- public CoordGeo(double lat, double lon, double alt)+
- {+
- Lat = lat;+
- Lon = lon;+
- Alt = alt;+
- }+
- public double Lat; // Latitude, radians (negative south)+===How large is the data set? Is it available for download?===
- public double Lon; // Longitude, radians (negative west)+
- public double Alt; // Altitude, km (above mean sea level)+
- }+
- //+Collectively the data sets are around 4.6 Terabytes. As such they are not available as a full package for localized download. There are, however, several data sets available for download as [[World Wind Cache Packs|cache packs]].
- // This class provides a base class for the NORAD SGP4/SDP4 orbit models.+
- //+
- // Historical Note:+
- // The equations used here (and in derived classes) to determine satellite +
- // ECI coordinates/velocity come from the December, 1980 NORAD document +
- // "Space Track Report No. 3". The report details 6 orbital models and +
- // provides FORTRAN IV implementations of each. The classes here +
- // implement only two of the orbital models: SGP4 and SDP4. These two models, +
- // one for "near-earth" objects and one for "deep space" objects, are widely+
- // used in satellite tracking software and can produce very accurate results+
- // when used with current NORAD two-line element datum.+
- //+
- // The NORAD FORTRAN IV SGP4/SDP4 implementations were converted to Pascal by+
- // Dr. TS Kelso in 1995. In 1996 these routines were ported in a straight-+
- // forward manner to C++ by Varol Okan. In 2002-03 that work formed the target+
- // of a major code refactoring in C++ by Michael F. Henry. In addition to +
- // introducing an object-oriented architecture, the refactoring eradicated+
- // the last residues of the original FORTRAN code, such as labels and gotos.+
- // In late 2003, the refactored C++ version of the SGP4/SDP4 code was ported+
- // to C# by Michael F. Henry; this is the code base which appears here.+
- //+
- // For excellent information on the underlying physics of orbits, visible +
- // satellite observations, current NORAD TLE data, and other related material,+
- // see www.celestrak.com which is maintained by Dr. TS Kelso.+
- //+
- // mfh 12/23/2003+
- //+
- // Copyright (c) 2003 Michael F. Henry+
- //+
- /// <summary>+
- /// This class provides a base class for the NORAD SGP4/SDP4 orbit models.+
- /// </summary>+
- public class NoradSGP4+
- {+
- // Orbital parameter variables which need only be calculated one+
- // time for a given orbit (ECI position time-independent).+
- protected double m_satInc; // inclination+
- protected double m_satEcc; // eccentricity+
- protected double m_cosio; protected double m_theta2; protected double m_x3thm1; protected double m_eosq; +===How about bittorrent for the data sets?===
- protected double m_betao2; protected double m_betao; protected double m_aodp; protected double m_xnodp;+
- protected double m_s4; protected double m_qoms24; protected double m_perigee; protected double m_tsi;+
- protected double m_eta; protected double m_etasq; protected double m_eeta; protected double m_coef;+
- protected double m_coef1; protected double m_c1; protected double m_c2; protected double m_c3;+
- protected double m_c4; protected double m_sinio; protected double m_a3ovk2; protected double m_x1mth2;+
- protected double m_xmdot; protected double m_omgdot; protected double m_xhdot1; protected double m_xnodot;+
- protected double m_xnodcf; protected double m_t2cof; protected double m_xlcof; protected double m_aycof;+
- protected double m_x7thm1;+
- private double m_c5; +
- private double m_omgcof;+
- private double m_xmcof;+
- private double m_delmo;+
- private double m_sinmo;+
- protected Orbit m_Orbit;+
- // /////////////////////////////////////////////////////////////////////+Because of the size of the data used, and the limited amount of data users download of the total available data, it is unlikely that p2p would make much of a dent in the problem of serving that data.
- protected Eci FinalPosition(double incl, double omega, double e, +
- double a, double xl, double xnode, +
- double xn, double tsince)+
- {+
- if ((e * e) > 1.0)+
- throw new Exception("Error in satellite data");+
- double beta = Math.Sqrt(1.0 - e * e);+But see above.
- // Long period periodics +==Known Issues==
- double axn = e * Math.Cos(omega);+
- double temp = 1.0 / (a * beta * beta);+
- double xll = temp * m_xlcof * axn;+
- double aynl = temp * m_aycof;+
- double xlt = xl + xll;+
- double ayn = e * Math.Sin(omega) + aynl;+
- // Solve Kepler's Equation +===Is there a way to narrow down a search for a place?===
- double capu = Globals.Fmod2p(xlt - xnode);+
- double temp2 = capu;+
- double temp3 = 0.0;+
- double temp4 = 0.0;+
- double temp5 = 0.0;+
- double temp6 = 0.0;+
- double sinepw = 0.0;+
- double cosepw = 0.0;+
- bool fDone = false;+
- for (int i = 1; (i <= 10) && !fDone; i++)+We realized this problem almost immediately (there are approximately 2 million places with 3 million more about to be imported) and we're going to associate a "Place" with a country or geographic identity. Perhaps you will type in "Paris France" and you will only get matches that have those two keywords. Also, if anyone hasn't noticed, the searching tool is case sensitive, and that will of course be changed as well.
- {+
- sinepw = Math.Sin(temp2);+
- cosepw = Math.Cos(temp2);+
- temp3 = axn * sinepw;+
- temp4 = ayn * cosepw;+
- temp5 = axn * cosepw;+
- temp6 = ayn * sinepw;+
- double epw = (capu - temp4 + temp3 - temp2) / +In addition, we want to display more meta-data information about a particular place, such as the type of place(mountain, populated place, beach...), and perhaps attributes such as population or elevation. We of course are open to suggestions that anyone else might have in terms of what would be useful.
- (1.0 - temp5 - temp6) + temp2;+
- if (Math.Abs(epw - temp2) <= Globals.E6A)+Several people are working on placenames right now. Stay tuned.
- fDone = true;+
- else+
- temp2 = epw;+
- }+
- // Short period preliminary quantities +===There are place names all over the place!===
- double ecose = temp5 + temp6;+
- double esine = temp3 - temp4;+
- double elsq = axn * axn + ayn * ayn;+
- temp = 1.0 - elsq;+
- double pl = a * temp;+
- double r = a * (1.0 - ecose);+
- double temp1 = 1.0 / r;+
- double rdot = Globals.XKE * Math.Sqrt(a) * esine * temp1;+
- double rfdot = Globals.XKE * Math.Sqrt(pl) * temp1;+
- temp2 = a * temp1;+
- double betal = Math.Sqrt(temp);+
- temp3 = 1.0 / (1.0 + betal);+
- double cosu = temp2 * (cosepw - axn + ayn * esine * temp3);+
- double sinu = temp2 * (sinepw - ayn - axn * esine * temp3);+
- double u = Globals.AcTan(sinu, cosu);+
- double sin2u = 2.0 * sinu * cosu;+
- double cos2u = 2.0 * cosu * cosu - 1.0;+
- temp = 1.0 / pl;+Yes, the amount of placenames is a bit of a nuisance, and we're working on ways to remedy this problem. We still want those placenames in there, we just don't want them to take up so much real estate on the screen.
- temp1 = Globals.CK2 * temp;+
- temp2 = temp1 * temp;+
- // Update for short periodics +&mdash; Side note,if you go to the layer manager (view / layer manager) under placenames you can click off certain ones. It may be helpful to remove the one labeled "US Anthropogenic Features" which contains info about churches, schools and other landmarks in the US.
- double rk = r * (1.0 - 1.5 * temp2 * betal * m_x3thm1) + +
- 0.5 * temp1 * m_x1mth2 * cos2u;+
- double uk = u - 0.25 * temp2 * m_x7thm1 * sin2u;+
- double xnodek = xnode + 1.5 * temp2 * m_cosio * sin2u;+
- double xinck = incl + 1.5 * temp2 * m_cosio * m_sinio * cos2u;+
- double rdotk = rdot - xn * temp1 * m_x1mth2 * sin2u;+
- double rfdotk = rfdot + xn * temp1 * (m_x1mth2 * cos2u + 1.5 * m_x3thm1);+
- // Orientation vectors +===The entire time the application is running, it uses 50-100% of the CPU, why?===
- double sinuk = Math.Sin(uk);+
- double cosuk = Math.Cos(uk);+
- double sinik = Math.Sin(xinck);+
- double cosik = Math.Cos(xinck);+
- double sinnok = Math.Sin(xnodek);+
- double cosnok = Math.Cos(xnodek);+
- double xmx = -sinnok * cosik;+
- double xmy = cosnok * cosik;+
- double ux = xmx * sinuk + cosnok * cosuk;+
- double uy = xmy * sinuk + sinnok * cosuk;+
- double uz = sinik * sinuk;+
- double vx = xmx * cosuk - cosnok * sinuk;+
- double vy = xmy * cosuk - sinnok * sinuk;+
- double vz = sinik * cosuk;+
- // Position+World Wind was not coded for performance, sadly. At least, you can rest assured that this problem is very common and most users experience it - there is nothing wrong with your computers. This will get optimized in future releases, but we're still heavily in the Research & Development stage.
- Vector3 vecPos = new Vector3((float)(rk * ux),(float)(rk * uy),(float)(rk * uz));+
- // Validate on altitude+Also there are a few bugs attributed to high CPU usage. Check out: [http://forum.worldwind.arc.nasa.gov/index.php?showtopic=372]
- double altKm = (vecPos.Length() * (Globals.XKMPER / Globals.AE));+
- if ((altKm < Globals.EARTH_RAD) || (altKm > (2 * Globals.GEOSYNC_ALT)))+===Borders are in the wrong place, fix them!===
- throw new Exception("Satellite orbit may have decayed");+
- +
- DateTime gmt = m_Orbit.EpochTime().AddMinutes(tsince);+
- return new Eci(vecPos, new Julian(gmt), true);+The data to build the orignal borders was correct data for when it was gathered. Some areas have since become outdated. As basic as country borders might seem, it's actually been very hard finding good and updated data. If someone has a source for updated borders, it can be integrated into World Wind, but because of priorities there is much more to improve first. Since this is an open source project, users are encouraged to help fix borders and submit them.
- }+
- // ///////////////////////////////////////////////////////////////////////////+==Tips==
- // Initialize()+
- // Perform the initialization of member variables, specifically the variables+
- // used by derived-class objects to calculate ECI coordinates.+
- // Initialize any variables which are time-independent when+
- // calculating the ECI coordinates of the satellite.+
- public NoradSGP4(Orbit orbit) +
- {+
- m_Orbit = orbit;+
- m_satInc = m_Orbit.Inclination();+
- m_satEcc = m_Orbit.Eccentricity();+
- m_cosio = Math.Cos(m_satInc);+===How can I extract data from Worldwind for use in other modeling and mapping applications?===
- m_theta2 = m_cosio * m_cosio;+
- m_x3thm1 = 3.0 * m_theta2 - 1.0;+
- m_eosq = m_satEcc * m_satEcc;+
- m_betao2 = 1.0 - m_eosq;+
- m_betao = Math.Sqrt(m_betao2);+
- // The "recovered" semi-minor axis and mean motion.+All the data is cached in the installation folder under the "Cache" directory. It's organized by the dataset, however, images are in DDS compressed format. Please see above for DDS viewers.
- m_aodp = m_Orbit.SemiMinor(); +
- m_xnodp = m_Orbit.mnMotionRec();+
- // For perigee below 156 km, the values of Globals.S and Globals.QOMS2T are altered.+You may have more luck reading up about the WMS protocol, and then interfacing with the same servers that WW connects to.
- m_perigee = Globals.XKMPER * (m_aodp * (1.0 - m_satEcc) - Globals.AE);+
- m_s4 = Globals.S;+===Are images on World Wind copyrighted?===
- m_qoms24 = Globals.QOMS2T;+
- if (m_perigee < 156.0)+The Landsat Global Mosaic, Blue Marble, and the USGS raster maps and images are all Public Domain.
- {+
- m_s4 = m_perigee - 78.0;+
- if (m_perigee <= 98.0)+===Can I use images on World Wind for commercial purposes?===
- m_s4 = 20.0;+
- m_qoms24 = Math.Pow((120.0 - m_s4) * Globals.AE / Globals.XKMPER, 4.0);+The various servers you receive data from do request that you give them credit, however this is not required. You may do what you wish with these images.
- m_s4 = m_s4 / Globals.XKMPER + Globals.AE;+
- }+
- double pinvsq = 1.0 / (m_aodp * m_aodp * m_betao2 * m_betao2);+===What is the most proportionate "vertical exaggeration"?===
- m_tsi = 1.0 / (m_aodp - m_s4);+Although it seems that 2 or 3 should be the "correct" vertical exaggeration, "1" is the correct and real vertical exaggeration. More correctly, "1" means that the vertical height is multiplied by 1.0, whereas vertical exaggeration of 3 means that vertical height is multiplied by 3.0.
- m_eta = m_aodp * m_satEcc * m_tsi;+
- m_etasq = m_eta * m_eta;+
- m_eeta = m_satEcc * m_eta;+
- double psisq = Math.Abs(1.0 - m_etasq);+===Secret Keys===
- m_coef = m_qoms24 * Math.Pow(m_tsi,4.0);+*Wireframe: Ctrl+W
- m_coef1 = m_coef / Math.Pow(psisq,3.5);+*Diagnostic Info: Ctrl+D
 +*HTTP Monitor: Ctrl+H
 +[[Keyboard_actions]]
- double c2 = m_coef1 * m_xnodp * +==Future Versions==
- (m_aodp * (1.0 + 1.5 * m_etasq + m_eeta * (4.0 + m_etasq)) ++
- 0.75 * Globals.CK2 * m_tsi / psisq * m_x3thm1 * +
- (8.0 + 3.0 * m_etasq * (8.0 + m_etasq)));+
- m_c1 = m_Orbit.BStar() * c2;+===When will the next version be out?===
- m_sinio = Math.Sin(m_satInc);+
- double a3ovk2 = -Globals.XJ3 / Globals.CK2 * Math.Pow(Globals.AE,3.0);+Check the [[Road Map]] for information on future versions.
- m_c3 = m_coef * m_tsi * a3ovk2 * m_xnodp * Globals.AE * m_sinio / m_satEcc;+===Do you think you could add boundaries of other sub-national entities, such as Swiss cantons, Australian states, and Canadian provinces and territories?===
- m_x1mth2 = 1.0 - m_theta2;+
- m_c4 = 2.0 * m_xnodp * m_coef1 * m_aodp * m_betao2 * +
- (m_eta * (2.0 + 0.5 * m_etasq) ++
- m_satEcc * (0.5 + 2.0 * m_etasq) - +
- 2.0 * Globals.CK2 * m_tsi / (m_aodp * psisq) *+
- (-3.0 * m_x3thm1 * (1.0 - 2.0 * m_eeta + m_etasq * (1.5 - 0.5 * m_eeta)) ++
- 0.75 * m_x1mth2 * +
- (2.0 * m_etasq - m_eeta * (1.0 + m_etasq)) * +
- Math.Cos(2.0 * m_Orbit.ArgPerigee())));+
- double theta4 = m_theta2 * m_theta2;+Chris : It's coming.
- double temp1 = 3.0 * Globals.CK2 * pinvsq * m_xnodp;+
- double temp2 = temp1 * Globals.CK2 * pinvsq;+
- double temp3 = 1.25 * Globals.CK4 * pinvsq * pinvsq * m_xnodp;+
- m_xmdot = m_xnodp + 0.5 * temp1 * m_betao * m_x3thm1 ++Llynix - the only reason these files aren't in there is they haven't been generated yet. If you have some free time, and a basic knowledge of computer programing why not volunteer to convert them?
- 0.0625 * temp2 * m_betao * +
- (13.0 - 78.0 * m_theta2 + 137.0 * theta4);+
- double x1m5th = 1.0 - 5.0 * m_theta2;+Please see [[Additional Boundaries]]
- m_omgdot = -0.5 * temp1 * x1m5th + 0.0625 * temp2 * +Update - A ton of people took the call and made up boundaries, but now we need to sort them, get them in one place, and check the validity and political correctness of these files. Then integrate them into the WW boundary pack. Boundaries for the Canadian provinces and territories are now included.
- (7.0 - 114.0 * m_theta2 + 395.0 * theta4) ++
- temp3 * (3.0 - 36.0 * m_theta2 + 49.0 * theta4);+
- double xhdot1 = -temp1 * m_cosio;+Meanwhile boundaries could use some optimizing.
- m_xnodot = xhdot1 + (0.5 * temp2 * (4.0 - 19.0 * m_theta2) ++===How about other planets?===
- 2.0 * temp3 * (3.0 - 7.0 * m_theta2)) * m_cosio;+
- m_xnodcf = 3.5 * m_betao2 * xhdot1 * m_c1;+
- m_t2cof = 1.5 * m_c1;+
- m_xlcof = 0.125 * a3ovk2 * m_sinio * +
- (3.0 + 5.0 * m_cosio) / (1.0 + m_cosio);+
- m_aycof = 0.25 * a3ovk2 * m_sinio;+
- m_x7thm1 = 7.0 * m_theta2 - 1.0;+
- m_c5 = 2.0 * m_coef1 * m_aodp * m_betao2 * +We already have coverage of the Moon, and user-created coverage of Mars. Other planets may come in the future.
- (1.0 + 2.75 * (m_etasq + m_eeta) + m_eeta * m_etasq);+
- m_omgcof = m_Orbit.BStar() * m_c3 * Math.Cos(m_Orbit.ArgPerigee());+
- m_xmcof = -Globals.TWOTHRD * m_coef * m_Orbit.BStar() * Globals.AE / m_eeta;+
- m_delmo = Math.Pow(1.0 + m_eta * Math.Cos(m_Orbit.mnAnomaly()), 3.0);+
- m_sinmo = Math.Sin(m_Orbit.mnAnomaly());+
- }+
- // ///////////////////////////////////////////////////////////////////////////+===I would love to see a feature that showed day/night in realtime say taken from the USNO atomic clock. Perhaps a setting where you could follow the terminator and such.===
- // getPosition() +
- // This procedure returns the ECI position and velocity for the satellite+
- // in the orbit at the given number of minutes since the TLE epoch time+
- // using the NORAD Simplified General Perturbation 4, near earth orbit+
- // model.+
- //+
- // tsince - Time in minutes since the TLE epoch (GMT).+
- // eci - ECI object to hold position information.+
- // To convert the returned ECI position vector to km,+
- // multiply each component by: +
- // (XKMMPER / Globals.AE).+
- // To convert the returned ECI velocity vector to km/sec, +
- // multiply each component by:+
- // (XKMPER / Globals.AE) * (MIN_PER_DAY / 86400).+
- public Eci GetPosition(double tsince)+
- {+
- // For m_perigee less than 220 kilometers, the isimp flag is set and+
- // the equations are truncated to linear variation in Math.Sqrt a and+
- // quadratic variation in mean anomaly. Also, the m_c3 term, the+
- // delta omega term, and the delta m term are dropped.+
- bool isimp = ((m_aodp * (1.0 - m_satEcc) / Globals.AE) < (220.0 / Globals.XKMPER + Globals.AE));+
- double d2 = 0.0;+It's on our list, slightly more elevated now that you asked for it.
- double d3 = 0.0;+
- double d4 = 0.0;+
- double t3cof = 0.0;+===Stars?===
- double t4cof = 0.0;+
- double t5cof = 0.0;+
- if (!isimp)+Chris : We actually have plans to import a "Military-Grade" star map. It's probably overkill, but we like it that way.
- {+
- double c1sq = m_c1 * m_c1;+
- d2 = 4.0 * m_aodp * m_tsi * c1sq;+I think Chris is referring to: [http://skyserver.sdss.org/dr1/en/ http://skyserver.sdss.org/dr1/en/]
- double temp = d2 * m_tsi * m_c1 / 3.0;+Maybe we could use same star catalog as Celestia:
 +http://www.shatters.net/celestia/download.html
- d3 = (17.0 * m_aodp + m_s4) * temp;+===Will there be an option to export animations/movies in the future?===
- d4 = 0.5 * temp * m_aodp * m_tsi * +
- (221.0 * m_aodp + 31.0 * m_s4) * m_c1;+
- t3cof = d2 + 2.0 * c1sq;+
- t4cof = 0.25 * (3.0 * d3 + m_c1 * (12.0 * d2 + 10.0 * c1sq));+
- t5cof = 0.2 * (3.0 * d4 + 12.0 * m_c1 * d3 + 6.0 * +
- d2 * d2 + 15.0 * c1sq * (2.0 * d2 + c1sq));+
- }+
- // Update for secular gravity and atmospheric drag. +Windows Media encoder allows screen capturing (all or selected area) and
- double xmdf = m_Orbit.mnAnomaly() + m_xmdot * tsince;+converts to .wmv video. This works very well but does require a
- double omgadf = m_Orbit.ArgPerigee() + m_omgdot * tsince;+substantial amount of video memory and CPU usage.
- double xnoddf = m_Orbit.RAAN() + m_xnodot * tsince;+
- double omega = omgadf;+
- double xmp = xmdf;+
- double tsq = tsince * tsince;+
- double xnode = xnoddf + m_xnodcf * tsq;+
- double tempa = 1.0 - m_c1 * tsince;+
- double tempe = m_Orbit.BStar() * m_c4 * tsince;+
- double templ = m_t2cof * tsq;+
- if (!isimp)+The encoder can be downloaded for free here
- {+http://www.microsoft.com/windows/windowsmedia/9series/encoder/default.aspx
- double delomg = m_omgcof * tsince;+
- double delm = m_xmcof * (Math.Pow(1.0 + m_eta * Math.Cos(xmdf), 3.0) - m_delmo);+
- double temp = delomg + delm;+
- xmp = xmdf + temp;+==Developers==
- omega = omgadf - temp;+
- double tcube = tsq * tsince;+===What license is World Wind released under?===
- double tfour = tsince * tcube;+
- tempa = tempa - d2 * tsq - d3 * tcube - d4 * tfour;+[http://www.opensource.org/licenses/nasa1.3.php Nasa Open Source license v1.3].
- tempe = tempe + m_Orbit.BStar() * m_c5 * (Math.Sin(xmp) - m_sinmo);+
- templ = templ + t3cof * tcube + tfour * (t4cof + tsince * t5cof);+
- }+
- double a = m_aodp * Globals.Sqr(tempa);+===Will World Wind remain always free?===
- double e = m_satEcc - tempe;+
- double xl = xmp + omega + xnode + m_xnodp * templ;+In short, yes. It's a government funded program and as such cannot be charged for (other than through federal taxes).
- double xn = Globals.XKE / Math.Pow(a, 1.5);+
- return FinalPosition(m_satInc, omgadf, e, a, xl, xnode, xn, tsince);+Chris:
- }+ 
- }+The program itself is open-source and will always be free. Access to NASA provided data will also remain free. However, there might be private companies that want to provide their data through World Wind (perhaps magazines or encyclopedias) and perhaps might charge a fee for access to their data. As long as there are people who want NASA provided data, and are using World Wind for that purpose, it gives the departments in charge of providing data a reason to ask for more funding to improve bandwidth to the data.
-}+ 
-#endregion+===Why did you decide on C# and DirectX?===
 + 
 +See this forum posting: [http://forum.worldwind.arc.nasa.gov/index.php?showtopic=8&view=findpost&p=17]
 + 
 +===Mac and linux ports?===
 + 
 +Since this is open-source, we encourage any OSX programmers to start a port and we will try our best to provide whatever resources we can towards the effort. Right now our development staff consists of one programmer and one graphics designer, but we are an ambitious duo so we will do our very best to please everyone.
 + 
 +For more information:
 + 
 +[http://forum.worldwind.arc.nasa.gov/index.php?showtopic=133]
 + 
 +===In what areas do you need the most help? How can I contribute?===
 + 
 +Check the [[How to Get Involved]] page to see how you can help with the World Wind project.
 + 
 +==Copyrights==
 + 
 +[[Copyright Questions When Using Images From World Wind]]
 + 
 +==Links==
 + 
 +===What data does World Wind use and where can I access it?===
 + 
 +[[World Wind Data Sources]]
 + 
 +===Where can I find more links?===
 + 
 +Please see this forum : [http://forum.worldwind.arc.nasa.gov/index.php?showtopic=411&hl=]
 + 
 +And this forum : [http://forum.worldwind.arc.nasa.gov/index.php?showtopic=679&hl=]
 + 
 +==Simplified Chinese Version of this FAQ==
 + 
 +[[SC Unofficial FAQ]]
 + 
 +[[Category:End User Documentation]]

Revision as of 15:23, 31 July 2005

This is a list of frequently asked questions. If you have any questions please read this before asking in the Forums or Chat.

Contents

Before Installing

How can I download NASA World Wind?

The latest version is 1.3.1.1.

This version is clearly marked if you go to Help->About in World Wind.

To get the latest version visit NASA_World_Wind_Download

What about the source code?

The source code is for developers. It is an additional download to the Full Install. If you just want to use World Wind and look around, all you need is the Full Install.

If you want the source code as well, download both. Once you run the full install, copy the Data directory from your World Wind full install directory into your source directory.

System Requirements

Windows 95,98,ME compatibility

Version 1.3 of World Wind shouldn't have a problem running unless it is due to an older computer / video card. I would appreciate some feedback on this. The latest version removed the texture converter code so the annoying black dos box shouldn't show up.

Software Requirements

The installer should detect and direct you to install these by default. If you are installing these because you believe there is an error, please install in the order listed below.

Microsoft .NET 1.1

Microsoft Directx 9.0c (December 2004 redistributable)

Minimum configuration

With the minimum configuration, performance and functionality may be less than expected.

Recommended configuration

  • 1.4 GHz or higher CPU
  • 256 MB of RAM
  • DSL/cable connection or faster
  • 3 GB of disk space

Installation

CRC Error

Version 1.3
  • Some people recieve a CRC error when downloading the installer. This is caused by a corrupt download. Please redownload the program. (I would highly appreciate if someone could check MD5 sums as listed on the NASA World Wind Download page, and verify that this is a corrupt download. Also, if you repeatedly receive the same corrupt download from a particular server, please notify us immediately. User:Llynix)

Error writing file ______

  • The installer requires about 700 megs on your windows drive (usually c:) to install. This is regardless of where you install it to. Normally users who don't have room to decompress the files have this problem.
Version 1.2e and older versions

Please install the Latest Version.

Problems After a Successful Install

Every time I try to run the program it crashes with a "JIT debugger" error message.

Yikes, these are the worst. A few notes when trying to debug these. The process ID and thread ID are pointless and don't really help at all. Any other error codes you might receive may be helpful. Do not be concerned that there was no debugger found. As we get more organized and get more of an idea what errors are coming up I will try to post additional information here.

Some people have reported that installing the software requirements listed above has fixed their issues.

if someone understand this .it may help! http://thinstall.com/help/?debugging_netapplications.htm

Error x135

More information is needed. I would like a full error code (If I recall this is a hex code, and it has a C in front of it followed by a lot of zeros.)

0xc0000135

This error occurs when you try to run a .NET application but .NET is not installed (or is corrupt). To solve this error message, either install, or remove and reinstall .NET.

Error x02

More information is needed. Would appreciate the full error code.

cordbg.exe !a 0x5b4 code

More information is needed. Perhaps a .NET 1.1 issue?

Program Crashes with "unable to load font 'Tahoma Bold' (9em)?"

This is a known issue and should be fixed in 1.3.1

Please download the latest patch.

My video card isn't working

Check out the Video Card Compatibility list. Please, by all means, edit it depending on whether yours works.

Ensure that your video card drivers are up to date.

Try going to Start->Run and typing 'dxdiag'. This should load up the DirectX Diagnosis program. Under Display please make sure everything is working and enabled.

Why am I getting an error about "mscorwks.dll"?

This is an old error that shouldn't be affecting users anymore. I would like feedback if someone does experience it with 1.3 or higher.

Most likely, you've got .NET 1.0, but World Wind requires .NET 1.1. Just download it from here, and you should be up and running.

My computer is crashing/hangs

Most likely you have a hardware/driver problem. Test your computer stability with 3D graphics by running for instance 3DMark or other DirectX benchmarking software.

Issues Downloading Tiles

To make sure there is no server-side problem check Server status page.

Download Monitor

World Wind version 1.3 has a download monitor which can be very helpful diagnosing problems. Hold down Control (Ctrl) and hit H.

Why am I getting 'Problem connecting to server. Trying again in 2 minutes'

Several possible reasons:

  1. May be the server is down. You could say... try again in 2 minutes.
  2. You may be behind a blocking proxy/firewall. You'll need to configure a port remapper, or hunt down an admin to help. See below.
  3. Make sure you have installed .NET Framework 1.1 SP1. (Issue WW-6)
  4. You could be in a country that blocks access to worldwind sites & download servers. Try to find a proxy? We haven't yet had any confirmed reports of this.
  5. Remember to use the HTTP Download Monitor (CTRL+H) to see what exactly is going on.

Is there a way to set a proxy?

The current version of worldwind has limited proxy support. (I believe it defaults to the proxy settings in Internet Explorer.) Future versions should feature a more robust proxy support.

Proxy Issues

Gillesk is working hard on proxy support. I need to link and put more information here. you should use a portmapper like "AnalogX PortMapper" downloadable @ http://www.analogx.com/files/pmapperi.exe ps: concerning people who are behind a proxy

I found a way: Press "Alt+Q" and configure it.

Why are the wrong image tiles showing up?

Possibly and probably due to the server bandwidth issues.

A workaround is to delete the numbered folders in the "cache" directory, but then of course you have to re-download all the images the next time you run the program. It's not obvious which particular cache files correspond to the "bad" areas.

You can also use a DDS viewer to browse and delete the offending files:

  • Nvidia's DDS viewer — By installing this you can switch to thumbnail view in the explorer and find and delete those nasty tiles.
  • Another good DDS format reader is Irfanview.

Also it is entirely possible that you are viewing more than one layer. Go to the layer manager and under images make sure only one box is checked. Otherwise things look very messed up.

If you do manage to find a "bad" tile using a server and upon reconnecting keep on downloading that same "bad" tile, please kindly record the filename and level (folder number) of the tile and let someone know. I should probably point to a wiki link but I don't know where it is right now.

Imagery related questions and tips

The questions we get every day

Aah! I zoom in and it's all blurry! Help!

If you're looking in the United States and it's blurry please read Why can't I see my house/car/etc?.

If you're looking outside the United States please read Can I use this for international locations?.

Why can't I see my house/car/etc?

USGS Imagery of Washington, D.C.
USGS Imagery of Washington, D.C.

AKA Why am I not getting pictures like this --->

That is the USGS Urban Area Imagery. USGS Urban is about .25m/pixel and only covers certain areas in the United States. These are the color images you may have seen. You can generally see cars with this layer. Note that it is only available for select cities, if you are not looking at the right place the images will be white. A list of available cities can be found at USGS Urban Areas.

Alternatively you can use the USGS 1m / topography which covers most of the United States, but is in black and white color. You can see most buildings and roads. You can probably find your house.

More information below.

Can I use this for international locations?

The United States Geological Survey (USGS) only has high resolution data available for the United States. However, the LandSat 7 data is available globally.

The LandSat 7 imagery has a lot less resolution than the USGS Ortho imagery. However, if you still don't believe the resolution is as good as it should be, click the sample images in LandSat 7 and compare your results. If the images are of different quality it may be a downloading issue - see Issues Downloading Tiles.

While there is high resolution imagery for many other locations, most of this imagery is licensed and is not freely available. If you know of any public domain or unrestricted datasets that we can incorporate please feel free to tell us about it.

New Zealand is currently the only other country available with high resolution imagery. You must install World Wind Central Add-on Pack to see this imagery.

We encourage all international users to contact their local politicians about releasing GIS data for all to use.

Pivot Irrigation
Pivot Irrigation

What are these crazy circles?

These are fields watered by a method called pivot irrigation. See this thread for more information.

When was this imagery photographed?

Depends on the layer. The NLT Landsat7 and OnEarth Landsat7 are from 1999 to 2003, with 2000 being the most active year. The USGS 1m Digital Ortho varies more. It was taken from 1990 to 2000. Search for a US location though TerraServer® and look for the USGS entry. The USGS Topo maps vary from within the past few years to more than a decade ago. Streets and building locations in particular may be quite out of date even if the terrain has changed little. USGS Urban Area Ortho dates from 2001 to 2004 and some areas are still being photographed, you can see the dataset ages at the USGS site.

Can I see the world in real-time?

This just isn't practical and won't be possible anytime soon. To do this requires a network of satellites dedicated to covering the earth. Just to provide as much detail as the base layers WorldWind loads first, the camera resolution on each one has to total about 100 megapixels. Perhaps the military has such a network, but it is certainly off-limits to anyone else. The images have to be received on the ground and processed. Then they all have to be combined where they overlap and corrected for the distortion caused by the earth's curvature. Finally after compressing the imagery from gigabytes down to several hundred megabytes, a server has to send it out to everyone. This requires an enormous amount of bandwidth for the server. Even if that weren't a problem, the internet connection for the majority of high-speed users is still too slow for more than about one update every hour.

Landsat

With the new landsat, what's with the colors? Why isn't my area covered?

NLT Landsat 7 button
NLT Landsat 7 button

Nasa Learning Technologies has stated there will be additional tweaking and alterations to the coloring. There will be a white paper describing the techniques used, and it will improve over time.

Consider this NLT global mosaic version 0.1, you haven't seen anything yet.

NLT servers are working around the clock to process the entire world. Currently only certain areas are in place. Please be patient your area will be there very soon.

The NLT dataset is not yet as high quality as the original ("OnEarth" or "Community") Landsat7 datasets are. The NLT dataset has not been pansharpened yet. NASA feels it is of higher priority to complete a "rough copy" then it is to sharpen it as that takes 4x as long. As soon as coverage is complete look for a pansharpened layer to start trikling around the globe.

Problems connecting to OnEarth / Limited resolution compared to 1.2e

Recently OnEarth, who was serving the original Landsat layer, blocked access to World Wind users.

This is why older versions of World Wind do not work without the proxy/mirror patch, and why newer versions of World Wind (1.3) use the proxy patch by default.

Lucian at the onearth server has also asked us not to proxy the data. At this point the only access to the old landsat is the incomplete mirror served from worldwindcentral.com.

Work is underway to remedy this situation.

Latest news (2005-04-24): See http://www.worldwindcentral.com/wiki/World_Wind_Central_Add-on_Pack for a patch that addresses this issue, and http://forum.worldwind.arc.nasa.gov/index.php?showtopic=2743 for the related announcement on the NASA site.

USGS

How do I load the .25 meter resolution maps, as shown in the screenshot of D.C. on this web site?

USGS Urban button
USGS Urban button

You can access these images by either selecting Layer Manager->Images->High Resolution Terrain Mapped->USGS Urban Area, or clicking the USGS Urban button.

All I see is white tiles when viewing the USGS Urban data!

USGS urban data is not available for all areas. If you aren't looking in the right place (in one of the cities listed at the Terraserver website, you'll see whitish green, and nothing else. The Urban Layer Highlighter is extremely helpful locating areas.

How to make use of the USGS layers

USGS is the acronym for U.S. Geological Survey. In other words, the data that is available in the USGS layers is only for the USA. While it is possible that similar data is available for other parts of the world, most of it is not freely available, and therefore is not incorporated into World Wind. See Using_the_USGS_Layers for step-by-step illustrated instructions.

SRTM

Why does <insert mountain or other relief feature> not look like it should?

Illustration
Illustration


This is due to the fact that the elevation data, SRTM, is taken much like a bat's echolocation or sonar measurements - the elevation is "sounded" from a satellite. Unfortunately, these "soundings" are only taken about every 90 meters, so the data isn't incredibly accurate. As a result, mountains and such (for example, Matterhorn) may look strange. Imagine the satellite collects elevation points in a grid. So it flies over the Alps where two peaks are 50 meters apart. It takes one reading, say, 40 meters away from one peak's top, but manages to hit the highest point of a different peak right on the top. It never hits the first peak's tippy top.


Referring to the illustration, say the vertical blue lines are measurements taken. The red line will be what Worldwind shows, grey being the actual landscape. The left peak shows as being higher in WW, but the right one is actually the highest.

In addition, some surfaces look bumpy that shouldn't be, such as airplane runways. This is caused by different materials and ground coverings giving false readings becuase of the way they reflect the radar. For more on the method used to collect the data, see the JPL Website.

Google Earth

Which is better Google Earth or World Wind?

It is easy to construct a set of criteria by which either once can be made to seem inferior, but the truth is that they are two very different products aimed at different audiences. Google Earth uses commercial satellite imagery, and thus has much more data (and more recent data) available to users than World Wind. On the other hand, Google Earth is lacking the Scientific Visualization Viewer capabilities of World Wind, and cannot be extended with user-authored add-ons.

Cache and data related questions

Can you make the amount of cache adjustable?

Please see your WorldWind.exe.config file. Open it with notepad (or any text editor) and you can easily adjust the cache size.

Can I copy my cache data to another computer?

Yes you can. Click here for discussion.

Can I use my 1.2e cache in 1.3?

Yes you can. See: Converting 1.2e Cache for use in 1.3

How large is the data set? Is it available for download?

Collectively the data sets are around 4.6 Terabytes. As such they are not available as a full package for localized download. There are, however, several data sets available for download as cache packs.

How about bittorrent for the data sets?

Because of the size of the data used, and the limited amount of data users download of the total available data, it is unlikely that p2p would make much of a dent in the problem of serving that data.

But see above.

Known Issues

Is there a way to narrow down a search for a place?

We realized this problem almost immediately (there are approximately 2 million places with 3 million more about to be imported) and we're going to associate a "Place" with a country or geographic identity. Perhaps you will type in "Paris France" and you will only get matches that have those two keywords. Also, if anyone hasn't noticed, the searching tool is case sensitive, and that will of course be changed as well.

In addition, we want to display more meta-data information about a particular place, such as the type of place(mountain, populated place, beach...), and perhaps attributes such as population or elevation. We of course are open to suggestions that anyone else might have in terms of what would be useful.

Several people are working on placenames right now. Stay tuned.

There are place names all over the place!

Yes, the amount of placenames is a bit of a nuisance, and we're working on ways to remedy this problem. We still want those placenames in there, we just don't want them to take up so much real estate on the screen.

— Side note,if you go to the layer manager (view / layer manager) under placenames you can click off certain ones. It may be helpful to remove the one labeled "US Anthropogenic Features" which contains info about churches, schools and other landmarks in the US.

The entire time the application is running, it uses 50-100% of the CPU, why?

World Wind was not coded for performance, sadly. At least, you can rest assured that this problem is very common and most users experience it - there is nothing wrong with your computers. This will get optimized in future releases, but we're still heavily in the Research & Development stage.

Also there are a few bugs attributed to high CPU usage. Check out: [1]

Borders are in the wrong place, fix them!

The data to build the orignal borders was correct data for when it was gathered. Some areas have since become outdated. As basic as country borders might seem, it's actually been very hard finding good and updated data. If someone has a source for updated borders, it can be integrated into World Wind, but because of priorities there is much more to improve first. Since this is an open source project, users are encouraged to help fix borders and submit them.

Tips

How can I extract data from Worldwind for use in other modeling and mapping applications?

All the data is cached in the installation folder under the "Cache" directory. It's organized by the dataset, however, images are in DDS compressed format. Please see above for DDS viewers.

You may have more luck reading up about the WMS protocol, and then interfacing with the same servers that WW connects to.

Are images on World Wind copyrighted?

The Landsat Global Mosaic, Blue Marble, and the USGS raster maps and images are all Public Domain.

Can I use images on World Wind for commercial purposes?

The various servers you receive data from do request that you give them credit, however this is not required. You may do what you wish with these images.

What is the most proportionate "vertical exaggeration"?

Although it seems that 2 or 3 should be the "correct" vertical exaggeration, "1" is the correct and real vertical exaggeration. More correctly, "1" means that the vertical height is multiplied by 1.0, whereas vertical exaggeration of 3 means that vertical height is multiplied by 3.0.

Secret Keys

  • Wireframe: Ctrl+W
  • Diagnostic Info: Ctrl+D
  • HTTP Monitor: Ctrl+H

Keyboard_actions

Future Versions

When will the next version be out?

Check the Road Map for information on future versions.

Do you think you could add boundaries of other sub-national entities, such as Swiss cantons, Australian states, and Canadian provinces and territories?

Chris : It's coming.

Llynix - the only reason these files aren't in there is they haven't been generated yet. If you have some free time, and a basic knowledge of computer programing why not volunteer to convert them?

Please see Additional Boundaries

Update - A ton of people took the call and made up boundaries, but now we need to sort them, get them in one place, and check the validity and political correctness of these files. Then integrate them into the WW boundary pack. Boundaries for the Canadian provinces and territories are now included.

Meanwhile boundaries could use some optimizing.

How about other planets?

We already have coverage of the Moon, and user-created coverage of Mars. Other planets may come in the future.

I would love to see a feature that showed day/night in realtime say taken from the USNO atomic clock. Perhaps a setting where you could follow the terminator and such.

It's on our list, slightly more elevated now that you asked for it.

Stars?

Chris : We actually have plans to import a "Military-Grade" star map. It's probably overkill, but we like it that way.

I think Chris is referring to: http://skyserver.sdss.org/dr1/en/

Maybe we could use same star catalog as Celestia: http://www.shatters.net/celestia/download.html

Will there be an option to export animations/movies in the future?

Windows Media encoder allows screen capturing (all or selected area) and converts to .wmv video. This works very well but does require a substantial amount of video memory and CPU usage.

The encoder can be downloaded for free here http://www.microsoft.com/windows/windowsmedia/9series/encoder/default.aspx

Developers

What license is World Wind released under?

Nasa Open Source license v1.3.

Will World Wind remain always free?

In short, yes. It's a government funded program and as such cannot be charged for (other than through federal taxes).

Chris:

The program itself is open-source and will always be free. Access to NASA provided data will also remain free. However, there might be private companies that want to provide their data through World Wind (perhaps magazines or encyclopedias) and perhaps might charge a fee for access to their data. As long as there are people who want NASA provided data, and are using World Wind for that purpose, it gives the departments in charge of providing data a reason to ask for more funding to improve bandwidth to the data.

Why did you decide on C# and DirectX?

See this forum posting: [2]

Mac and linux ports?

Since this is open-source, we encourage any OSX programmers to start a port and we will try our best to provide whatever resources we can towards the effort. Right now our development staff consists of one programmer and one graphics designer, but we are an ambitious duo so we will do our very best to please everyone.

For more information:

[3]

In what areas do you need the most help? How can I contribute?

Check the How to Get Involved page to see how you can help with the World Wind project.

Copyrights

Copyright Questions When Using Images From World Wind

Links

What data does World Wind use and where can I access it?

World Wind Data Sources

Where can I find more links?

Please see this forum : [4]

And this forum : [5]

Simplified Chinese Version of this FAQ

SC Unofficial FAQ

Personal tools