The metadata that were illustrated in the example in §3.1.2 actually describe a simple, two-dimensional coordinate system in which each axis is linear. We can turn that collection of metadata into CoordinateSystem easily using the LinearCoordinateSystem:
// create a simple linear coordinate system
CoordinateSystem coord = new LinearCoordinateSystem(cmdata);
Notic how this CoordinateSystem uses the metadata to make a linear
transformation between data voxels and coordinate positions:
double datapos[] = refpos;
CoordPos cpos = coordSys.getCoordPos(datapos);
System.out.println( cpos.getAxisLabel(0) + ": " + cpos.getValueString(0) );
System.out.println( cpos.getAxisLabel(1) + ": " + cpos.getValueString(1) );
System.out.println( cpos.getAxisLabel(2) + ": " + cpos.getValueString(2) );
/*
* OUTPUT:
* East-West: 0
* North-South: 0
* Altitude: 0
*/
double centralTower[] = { 0, 0, 25 };
cpos = coordSys.getCoordPos(centralTower);
System.out.println( cpos.getAxisLabel(0) + ": " + cpos.getValueString(0) );
System.out.println( cpos.getAxisLabel(1) + ": " + cpos.getValueString(1) );
System.out.println( cpos.getAxisLabel(2) + ": " + cpos.getValueString(2) );
/*
* OUTPUT:
* East-West: 28.75
* North-South: -72.25
* Altitude: 250
*/
The LinearCoordinateSystem can also account for rotations and skewing of the coordinate system with respect to the dataset planes.