160 likes | 173 Views
NeXtEarth is a map server and client that serves images from an NGA data set, providing an easier way to access and update data sets. It supports multiple platforms and integrates with NeXtMidas. The API is based on GoogleMaps' API and uses a QuadTree algorithm for positioning and resolution.
E N D
Map Server and Client09 May 2006Joseph Czechowski IV (TMA)Jay Hallam (Zeta)
What Is It? • NeXtEarth consists of two components: • Map server • Serves images in a GoogleEarth-like manner from an NGA data set • Client • Can be any system that meets the API • NeXtMidas PLOT command is one such client
Why? • Using a map server versus accessing the NGA data set directly means: • Requires fewer sites to be updated with new data sets • Easier to build clients, simpler API • Clients can run anywhere, not just where direct access (via NFS) is practical • Can now use WebStart • Available on any network • Client is platform-independent • Windows, Linux,… • Integrated into NeXtMidas • Natively supports Midas files as overlays
768 256 1024 256 +1 X +1 = 24 API • API based on GoogleMaps’ API • Each view is made up of N tiles • Each tile is a 256x256 pixel JPEG • Tiles are “stitched” together by client when drawn to screen • Number of tiles requested by client depends on screen resolution/size • Example (screen is 1024 x 768):
API (Cont.) • Examples: • GoogleMaps: • http://<server>/kh?t=tq&v=3 • Modified Mercator Projection • NeXtEarth: • http://<server>/nms?t=tq&background=bluemarble • LatLon/Equirectangular Projection • Same as used by NGA, XGEOPLOT
tq tr tt ts API (Cont.) • API based on GoogleMaps’ API • Positioning and resolution determined by QuadTree algorithm • 1st Resolution Level = t • (whole world in one 256x256 JPEG) • 2nd Resolution Level = tq, tr, ts, tt • (whole world takes four 256x256 JPEGs) • Nth Resolution Level (N > 2) • (whole world takes 8x4(N-3) 256x256 JPEGs)
DegLat Pixel DegLon Pixel = API (Cont.) Above 90o N • 1st Resolution Level • (whole world in one 256x256 JPEG) • Algorithm assumes 180 for both latitude and longitude so that: • Causes black bar at the top/bottom in levels 1 and 2. • After 2nd zoom level there is no data above 90oN or below 90oS Below 90o S t
API (Cont.) Above 90o N • 2nd Resolution Level • (whole world takes four 256x256 JPEGs) tq tr tt ts Below 90o S
API (Cont.) • 3rd Resolution Level • (Whole world takes eight 256x256 JPEGs) tqt tqt trt trt ttq ttr tsq tsr
API (Cont.) • 4th Resolution Level • (Whole world takes 32 JPEGs) tqtq tqtr tqtt tqts
API (Cont.) • Known API Differences • Map Projection (from server) • Google uses a modified Mercator projection, NeXtEarth uses LatLon (matches NGA data) • v= argument vs. options= • Google indicates plot options with v=[integer] • NeXtEarth uses options=[string] • Example: options=ALLIMAGERY+JOG+ONC
API (Cont.) • Known API Differences (cont) • Background = option • NeXtEarth allows control over the “background” (low-resolution image), many users use BLUEMARBLE or NONE • Hybrid maps in Google • Imagery with streets overlaid option in Google
Development • Client-server approach was a natural progression from existing NeXtMidas functionality • Used existing rendering in PLOT • Made data available over HTTP • Based client on existing NeXtMidas client for GoogleMaps • Basic functionality and first site installation required only two weeks of work • Approximately 1000 lines of new code
NGA Data InMemory Image Plot Draw Render JPEG Plot Network NGA Data JPEG JPEG Plot Network Development (Cont.) Stand-Alone NeXtMidas (Geoplot): Connecting to GoogleMaps: Draw Google NeXtEarth: Render Draw
Server Installation • Requires Java • Optionally C compiler (MrSID) • Server installation steps: • Install NeXtMidas • Install MAP option tree • Run MAPPER to create MTOC • Starting the server: • Run MAPSERVER primitive • See explain file for list of options
Future Considerations • Add support for Google Keyhole Markup Language (KML) files • XML files defining map overlays and features • Serve up XML files defining available data • Indicates available chart types and coverage mesh • Ability to get data from a remote database