-
Notifications
You must be signed in to change notification settings - Fork 3
Description
The topics reported here have already been developed on either the mailing list or the RFC page
Need a lon/lat sky position
Let's have a look at the Coords:Point class that represents a sky position:
<INSTANCE dmrole="meas:Measure.coord" dmtype="coords:Point">
<INSTANCE dmrole="coords:Point.axis1" dmtype="ivoa:RealQuantity">
<ATTRIBUTE dmrole="ivoa:RealQuantity.value" dmtype="ivoa:real" ref="RAJ2000"/>
<ATTRIBUTE dmrole="ivoa:Quantity.unit" dmtype="ivoa:Unit" value="deg"/>
</INSTANCE>
<INSTANCE dmrole="coords:Point.axis2" dmtype="ivoa:RealQuantity">
<ATTRIBUTE dmrole="ivoa:RealQuantity.value" dmtype="ivoa:real" ref="DEJ2000"/>
<ATTRIBUTE dmrole="ivoa:Quantity.unit" dmtype="ivoa:Unit" value="deg"/>
</INSTANCE>
<INSTANCE dmrole="coords:Coordinate.coordSys" dmref="SpaceSys_ICRS_Spherical"/>
</INSTANCE>Reading this, Ive no way to guess that coords:Point.axis1 is a right ascension and coords:Point.axis2 the declination.
This might be not an issue for clients into which the model is hard-coded (e.g. code generated from the VODML), but this is a big issue for clients exploring the mapping by using e.g. Xpath selectors (I can testify).
MCT needs a lonLatPoint class looking like this:
<INSTANCE dmrole="meas:Measure.coord" dmtype="coords:LonLatPoint">
<ATTRIBUTE dmrole="coords:LonLatPoint.longitude" dmtype="ivoa:real" ref="RAJ2000"/>
<ATTRIBUTE dmrole="coords:LonLatPoint.latitude" dmtype="ivoa:real" ref="DEJ2000"/>
<ATTRIBUTE dmrole="coords:LonLatPoint.unit" dmtype="ivoa:string" value="deg"/>
<INSTANCE dmrole="coords:Coordinate.coordSys" dmref="SpaceSys_ICRS_Spherical"/>
</INSTANCE>Proper Motion
This MCT pattern is the following:
meas -> coord
Having all measures build on the same pattern is a good point for both interoperability and developers and it must be preserved as much as possible.
So why is it broken for proper motions?
meas -> coord lon
| -> coord lat
The proper motion (or a LonLatProper motion) could use the above coords:LonLatPoint as coordinate class.