There is a strong perception among people working with geographical data that a standard means of representing three-dimensional geo-referenced data will be not only useful but essential in order to make such data generally useful and widespread. Work going on in private industry, government and academia is rapidly moving geographical information from two-dimensional cartographic representations to full three-dimensional models.
VRML is an obvious building block for standardizing external representations of this kind of data. In order to be generally useful, however, such data must not only be accurately represented but easily generated and manipulated. There is a general perception in the field of cartographic modelling, however, that VRML is at the same time both inadequate and too general for such data.
Therefore, we will attempt to identify the kinds of information that are either essential or especially useful in assuring the accurate geo-referencing of arbitrary datasets and recommend means of providing such external data in VRML datasets. In addition, we will attempt to identify shortcomings and inadequacies in the current VRML standard which lead to undesirable difficulties in representing common types of geographical data and then to recommend either means of bypassing these shortcomings or extensions and improvements to the standard which will be forwarded to the appropriate standardization bodies.
A wide variety of coordinate systems have been developed by many different mapping agencies around the world for specifying accurate locations on the surface of the earth. The most familar georeferencing coordinate systems are perhaps Latitude/Longitude and UTM. In most recent work, they refer to the geodetic datum known as WGS84, the standard earth surface measurement used by the Global Positioning System (GPS). Both of these are geodetic coordinate systems, defining and making reference to the surface of the earth, and sometimes trying to represent a gravitational "up" vector. Another kind of coordinate system is the geocentric coordinate system, typically either a simple Cartesian or polar system, based around some "center".
A discussion of some of the history, methods and results of the attempts to standardize earth measurement systems (geodesy) is the NIMA document "Geodesy for the Layman". With this and the "GPS Overview" from the University of Texas Geography Department we have a basis for discussion.
In VRML, a world has a simple, local, Cartesian coordinate system with the Y axis defined as "up". The most basic problem in georeferencing a VRML world is thus to be able to transform from a standard georeferencing system to the VRML local system. In GeoVRML 1.0, we adopted the SEDRIS Spatial Reference Model which is an earth reference model that currently supports 12 coordinate systems. This also includes a software package for converting between various geographic coordinate systems that we converted to Java, producing the GeoTransform package.
Of course one obvious significant issue is that VRML provides only an SFFloat data type, which guarantees only 23 bits of mantissa. With only this available to us, there is no straightforward way to accurately represent even a civilian-grade GPS location.
The Working Group has proposed a means of managing these absolute location references using standard geographical coordinates: GeoVRML RFC 1: Coordinate Systems. This proposal is now part of the GeoVRML 1.0 Recommended Practice.
As with location, there is a need for dealing with content that is timestamped with respect to an absolute reference. At this point, it seems that the Coordinated Universal Time (UTC) time standard is the appropriate place to start. We will need to adopt one of the standard representations of the UTC, either numeric or textual, and augment that with a method for describing the accuracy and resolution of the measurements. Being able to merge and play back time-referenced recordings or interpretations of past events will also require standard tools for managing events and absolute times.
Useful references on the topic of time referencing include:
Typically, terrain imagery is provided (e.g. by the USGS) as ortho-rectified image mosaics of 10,000 by 10,000 pixels or greater. Such an image is clearly not going to be loaded into texture-mapped memory on any current consumer-grade graphics hardware. The obvious response to this problem has been to break the image into manageable tiles, typically 128 by 128 or 256 by 256. This is certainly straightforward and easily automated. But VRML is a 3D standard and almost everyone will wish to tie this imagery to geometry, and in this case the usual source for such geometry is digital elevation maps (DEMs). These maps typically are delivered as floating-point arrays of 1200 by 1200 pixels or more. It is here that we meet the greatest challenge, for we can't easily expect to transmit 1.4 million polygon definitions over even an ISDN line. Not only will we need to tile the DEM as well, but we will almost certainly need to manage the texture-mapped elevation geometry in some form of level-of-detail (LOD) hierarchy (typically a quad-tree).
Level of Detail
Consider a connected web of VRML worlds that move from the whole world (including near-earth space) and sub-meter resolution digital terrain photography. A conservative estimate of the resolution ratios involved gives at least a 100,000:1 change in resolution. If we assume a 2:1 change for each level of detail in a VRML LOD hierarchy, then that implies at minimum 17 levels of detail. None of the current browsers seems to perform stably with any more than 4 levels of detail in a scene. Moreover, these browsers attempt to "optimize display speed" by loading all levels of detail at read time (assuming that component LOD levels are separated into different files by Inline nodes). Clearly, new solutions for representing very deep LOD hierarchies are necessary.
We have produced a mechanism to manage a quad-tree based level-of-detail with the GeoVRML 1.0 The GeoLOD Node. It selectively loads levels of the LOD tree so as to minimize the memory footprint of the browser for very deep trees.
Resolution and Accuracy
Floating point numbers in VRML97 are represented using single-precision only, which means that we are restricted to around 6 digits of precision for all of our coordinates. However, for many geographic applications we require far higher precision, such as double-precision which offers around 15 digits of precision. We are therefore faced with the problem of modeling large, geo-referenced coordinates using only single precision values. This can be done by introducing the concept of local coordinate systems (LCSs) - where any LCS contains values within single-precision range - and then selecting the most appropriate LCS to use based upon the user's viewpoint.
The GeoVRML Working Group recently issued a proposal that the next generation VRML specification provide support for double-precision floating point values. As a result, double-precision support is to appear in the developing X3D standard.
It is hoped that by providing tools and recommended practice for representing geo-referenced data in VRML that these standards will be uptaken by the geographic community at large, thus enabling geographic VRML to be interchanged between different data producers. This is meant both in terms of using a standard syntactic representation as well as seamlessly integrating different geo-referenced data together, e.g. if one data producer generates a model of the state of California and another producer generates a model of the state of Nevada, then joining these two models together should result in the two states being correctly juxtaposed.
An important issue here is the notion of metadata. Metadata means data about data, i.e. information that described the geo-referenced data. This could include details such as the dataset's name, location, resolution, extent, source of the data, copyright information, etc. GeoVRML 1.0 includes a means to represent a subset of metadata within the VRML scene and referencing some various larger metadata standard, such as: