Current Page: NeXtMidas User's Guide Graphics NeXtEarth - Client/Server Mapping
| ### NeXtEarth #### What is NeXtEarth? Prior to NeXtEarth users had to have a local (or NFS mounted) copy of ALL of the raw NGA charts and imagery in order to plot it with the NeXtMidas MAP option tree. Since the data sets commonly used are on the order of 2TB in size this is a major issue. The size alone precludes the use of maps a WebStart application. Since most users used NFS mounts to "localize" the data the performance of the MAP option tree became highly dependent on the performance of those NFS mounts (this has been a major issue for a number of users). Late in 2005 the NeXtMidas team was asked to come up with a solution that would eliminate the issue of requiring local copies of the NGA data. One of their key criteria was that existing NeXtMidas applications would need to be able to use this solution with minimal changes to their applications (the goal was to require only a one or two line change in a macro). At the same time many people pointed to the success of Google Earth and suggested that NeXtMidas use a similar approach. The NeXtMidas team decided to use three important ideas employed by Google: The server responds to a HTTP request for an image and returns an appropriate JPEG. The Earth is laid out as a large number of tiles measuring 256 by 256 pixels (the number of tiles depends on resolution). When the user wants to view a particular area the client requests the required tiles from the server and then assembles them into a cohesive picture on the screen. The tiles are identified through the use of a QuadTree algorithm that identifies both the location and resolution of the tile. Each successive resolution level has four times the resolution and four times the number of tiles as the previous level. Unlike Google the NeXtMidas team has to work in the following requirements: Clients need to be able to select, in detail, which data they wish to see (some want only specific charts, others only want imagery). Clients need to be able to control brightness and contrast of the data; this could be done on either the client or the server. The charts and imagery need to be rendered (on the server) from the source data provided by NGA and need to be able to update the rendered tiles automatically if the source data is updated. The system needs to be extensible so future requirements for the server to use raw data from a database would not affect clients. #### Comparison to Google While the NeXtMidas Map Server has many things in common with Google Maps there are a few key differences. The most notable of which is the image projection used. NeXtMidas uses the LatLon projection, same as most data supplied by NGA, while Google uses a Mercader projection. NeXtMidas also chooses to use the QuadTree positioning for all data, not just imagry.
| NeXtEarth | GoogleEarth
Target Audience | Midas Users | Private & Commercial Customers
Projection | LatLon (equirectangular) | Mercader
Image Type | .jpeg | .jpeg
Image Size | 256x256 pixels | 256x256 pixels
Positioning | QuadTree | Hybrid (QuadTree for imagery)
Resolution Limit | No fixed limit | Currently 16 levels
Imagery Source | National Geospatial-Intelligence Agency (NGA) | Digital Globe
Maximum Imagery Resolution | 1.00 meter (MrSid format allows higher resolution for select areas) | 0.60 meter
Available Layers | Charts - Global Navigation Chart (GNC) - Jet Navigation Chart (JNC) - Operational Navigation Chart (ONC) - Joint Operations Graphic (JOG) - Topographic Line Map (TLM) - City Graphics (CG) Standard Imagery - 10 meter - 5 meter - 1 meter High-Resolution Imagery - MrSid DTED (Digital Terrain Data) | Street Maps Imagery (various resolutions)
Layer Selection | Automatically switches between charts and imagery types based on resolution. Clients can manually enable/disable individual layers. | Automatically switches between map and image resolution. Clients can select to view maps, imagery or both.
#### Positioning Positioning is done using a QuadTree where the first level (the whole world) is "t" and each successive level is defined by "q", "r", "s", or "t" where "q" is the north-west quadrant ofthe previous level, "r" the north-east, "s" the south-east and "t" the south-west. In the below diagram the level 3 tile with Miami, Florida would be labeled "tqs" (t=World, q=North-West Hemisphere, s=South East Quardant of North-West Hemisphere). This is the same positioning system used by Google for their imagry (note that Google uses a different system for some of their non-imagry data).
Important Note: To simplify the algorithm the Earth is assumed to be square, -180 o to 180 o latitude and -180 o to 180 o longitude. This assumption guarantees that the tiles (which have square pixel size) will cover a square region (in terms of degrees latitude and degrees longitude). A side affect of this assumption is a half-height black border at the top (above 90 o N) and bottom (below 90 o S) of the first resolution level ("t") and a half-height black border at either the top ("tq" and "tr") or bottom ("ts" and "tt") of the second resolution level. Starting with the third resolution level there is no data (i.e. "blackness") for any tile specifier starting with "tqq", "tqr", "trq", "trr", "tss", "tst", "tts", or "ttt".
#### Protocol This section describes Version 1 of the NeXtMidas Map Server protocol ("version=NMS_1"). Note that all parameters are case-insensitive (by convention all parameter names are lower-case and their values are upper-case, the one exception is the value of t= which is lower-case to match Google).
Tag Name | Description | Default | Example
admin= | Accesses administrative functions. Administrative functions are typically used to monitor server performance and to test rendering functions. All administrative functions are implementation dependant and clients must not rely on their functionality. | n/a | admin=stats
background= | Indicates background by name. "NONE" should be used to indicate no background. | background= BLUEMARBLE | background=NONE background=NIGHTSKY
options= | (see below) | options=def | ???
t= | Indicates tile position. (See Positioning for more details.) | t=t | t=tq t=trrqtrsttrs
v= | Reserved. (Used by GoogleEarth.) | n/a | v=3
ver= | Protocol version identifier string. The server must reject any request with an unsupported version identifier. | ver=NMS_1 | ver=NMS_1
#### Map Options The NeXtMidas Map Server serves up many types of charts and imagery. By default the NeXtMidas Map Server serves up a default set of the available charts and imagery (usually a mix of charts and standard-resolution imagery). To customize the charts and imagery that will be used clients can add the options= parameter onto their request. Clients wishing to use the default set of options can omit the options parameter or can use options=DEF. The options parameter is a mask value used to select which source data should be used. Some of the common options include:
Name | Description
CHARTS | Turns all charts on/off
GNC | Chart: Global Navigation Chart
JNC | Chart: Jet Navigation Chart
ONC | Chart: Operational Navigation Chart
JOG | Chart: Joint Operations Graphic
TLM | Chart: Topographic Line Map
CG | Chart: City Graphics
IMAGERY | Turns all imagery on/off
CIB10M | Imagery: 10m
CIB5M | Imagery: 5m
CIB1M | Imagery: 1m
MRSID | High-resolution imagery in MrSid format
DTED | Digital Terrain Data
To specify multiple options separate them with a '+' (the HTML escape for a space) in the URL (order is not important). For example to include only the GNC and JNC charts use:
http://<server>:<port>/nms?t=tqs& options=CHARTS+GNC+JNC
Note that CHARTS and IMAGERY are special "parent" options that can be used to turn on/off all charts or (standard-resolution) imagery. Both of these can be prefixed with "ALL" to turn on all of the data in the category. For example to turn on all of the charts available use:
http://<server>:<port>/nms?t=tqs& options=ALLCHARTS
One additional feature is the add/remove syntax that allows clients to start with the default set of options and add or remove specific options. To add an option prefix it with "ADD"; to remove an option prefix it with "NO". For example to use the default set of options, except remove the JNC and ONC charts and add MRSID imagery use:
http://<server>:<port>/nms?t=tqs& options=NOJNC+NOONC+ADDMRSID
#### Background Images Most data sets cover only a limited part of the Earth and do so only at higher resolutions. The NeXtMidas Map Server uses background images to fill this void. Each background is usually a single (large) image of the entire Earth. The background image is then used when rendering at low resolutions or when rendering outside of the range of the data set. The most common background to use is the BLUEMARBLE background which is simply an image of the Earth created by the NASA Blue Marble project. Clients can choose to employ no background image by setting background=NONE (this is typically used on clients that only require high-resolution data). #### Responding to an Image Request The server will use a background color of black (hex value #000000) for all images since most available image formats (including JPEG) do not support the use of transparent colors. Clients should not assume that black pixels in the image can be rendered as transparent since black is a valid color for use in actual data. When responding to an image request for which there is data coverage the server will simply return the appropriate image. If the image request matches a region for which there is no data the server will return an all-black image and set the HTTP response code to 204 (HTTP_NO_CONTENT). This allows the client to optimize its behavior for regions with no data. (Note: If a background image is being used then, by definition, all areas will have data [except above 90 o N or below 90 o S].)
Important Note: The server will not attempt to return return data which is has a resolution much higher than the requested. A region for which the server indicated there was no content at the current resolution may have data available at a higher resolution.