ivoa / dm-usecases

The is repo gathers all the material to be used in the DM workshop 2020
The Unlicense
1 stars 3 forks source link

MeasCoords enhancement #46

Open lmichel opened 3 years ago

lmichel commented 3 years ago

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.