As you no doubt recall GeoVRML is a recommended practice that extends the VRML97 standard.
In addition to the specification you can easily view GeoVRML files (VRML files that
use the GeoVRML extension nodes) by using the Cortona V3 browser which now provides
native support for these nodes and is the simplest, but not only way of working with GeoVRML.
In addition to Cortona those GeoPeople at SRI, the creators of GeoVRML have created a
GeoVRML runtime utility that you can load up to give the other VRML browsers the ability to
view GeoVRML files.
One particularly interesting GeoVRML example created by Martin Reddy along with
lots of other examples is located on the GeoVRML.org site.
Martin's "World Trips" contains a globe of the Earth with lots of red pointers which
represent places Martin has visited. Moving the cursor over a pointer displays the name
of the location and opens up a page (usually) to a photo of a trip to that location.
It's totally cool!
Let's examine one of the locations in detail, San Francisco. The GeoLocation node is used
to "georeference" any VRML object. The object in this case is the little red pointer.
The field geoSystem uses the "GDC" which is the latitude/longitude system. The "WE" is the specification
for which standard ellipsoid describing the earth to use. (Note that the earth is
not a perfect sphere and many ellipsoids exist with variations of the major and minor axes.
See the Definitions section of the GeoVRML spec for more detailed info.) Notice that the
coordinates 37 and -122 corresponds quite nicely with the lat long coordinates for San Francisco
that you will find on any map. This stuff is real! The +50100 is the elevation.
The geometry that is georeference is contained in the data in the children field of the geoLocation node.
In this case an Anchor and all the geometry associated with it is located there. This is very
straightforward, no fuss no muss.
GeoLocation {
geoSystem [ "GDC", "WE" ]
geoCoords "37.78572 -122.42142 +50100"
children [
Anchor {
description "San Francisco, CA"
parameter "target=_martinstrips"
url "http://www.ai.sri.com/cgi-bin/show_img.pl?img=jpg/sfbay.jpg"
children [
Transform {
rotation 1 0 0 3.14159
children [
Shape {
appearance Appearance {
material Material {
diffuseColor 1 0 0
}
}
geometry Cone {
bottomRadius 50000
height 100000
}
}
]
}
]
}
]
}
In addition to the geoLocation the trip example file also contains viewpoints created
using the geoViewpoint Node. For the San Francisco example above the geoViewpoint is
defined as:
GeoViewpoint {
geoSystem [ "GDC", "WE" ]
position "37.78572 -122.42142 +5000100"
orientation 1 0 0 -1.57
description "Model 29"
}
Note that the position is exactly the same but with a higher elevation. Nice and neat.
That's it for our quickie look at GeoVRML, if you've got any data that you need
geolocated this is definitly the way to go.