Marking up HEALPix index columns in VOTable

Mark Taylor M.B.Taylor at bristol.ac.uk
Thu Aug 25 12:23:20 CEST 2016


Hi all,

sorry for the belated response, I've just got back from holiday.

On Mon, 15 Aug 2016, Markus Demleitner wrote:

> On Thu, Aug 11, 2016 at 04:03:37PM +0200, Marco Molinaro wrote:
> > if the order is what is needed,
> > considering the MOC standardization to be in place,
> > I vote for a solution that is a part of Rick's suggestion
> > 
> > N -> pos.healpix;meta.number
> > 
> > into a table level PARAM.
> > Maybe mixed to a single addition to UCD words:
> > 
> > meta.order
> > 
> > if we want some more specific detail and a reusable word.
> > (thus going pos.healpix;meta.order)
> > 
> > However I must say that I'm working on a tableset that,
> > if it were to return such field, would have a non-homogeneous
> > order for tessellation. But this case is not covered by the
> > "horrible" solution either.
> 
> If I understand correctly what your problem is, I'd say it'd be
> solved by what I think we need anyway to allow multiple healpix
> columns (and hence potentially multiple orders) per table: some form
> of grouping.

While I can see that it's not impossible in principle to have
multiple columns using HEALPix indices with different orders
in a single table, I'm struggling to think of any physical 
situation where that would be a desirable/meaningful thing to do.

But: yes I think some form of grouping should be able to solve 
Marco's problem.

> I'm still not a great fan of this since it involves referencing, and
> getting referencing right always is a bit tricky -- but if people
> really consider using VALUES as prohibitively ugly (while I'd still
> say healpix ranges and hence orders are a perfectly legitimate use
> case), there's probably no way around it.

Agree on all points.

> Let's at least keep that as simple as we possibly can, then.  I think
> the minimal thing we can say is:
> 
>   A FIELD containing a healpix index is marked up with a
>   ucd="pos.healpix".  It must be referenced from a GROUP that will
>   normally contain a PARAM with pos.healpix;meta.number that contains
>   the healpix order (log_4(nsides)):
> 
>     <GROUP>
>       <PARAM datatype="short" name="order_1"
>         ucd="meta.number;pos.healpix" value="3"/>
>       <FIELDref ref="hp_1"/>
>     </GROUP>
>    ...
>    <FIELD id="hp_1" datatype="long" name="hp_1" ucd="pos.healpix"/>
>   
>   [meta.number is P, so it must be first, and I'd argue that's a good
>   thing, too; I'd advocate having meta.order, too, though].

meta.number's documentation is as follows:

    "Number (of things; e.g. nb of object in an image)"

which, assuming "nb" here means count, really doesn't fit healpix
order (what are the things it's a nb of?  You could argue that it
makes sense for NSIDE, though I really don't want to use NSIDE).
So, using meta.number is already abusing the existing UCD documented
semantics.  Agreed meta.order would work well - but that doesn't
exist in the current UCD list.

>   In case a column contains healpixes of differing orders, the order 
>   can also be stored in a separate column:
> 
>      <GROUP>
>       <FIELDref ref="order_2"/>
>       <FIELDref ref="hp_2"/>
>     </GROUP>
>     ...
>     <FIELD id="order_2" datatype="short" name="order"
>         ucd="meta.number;pos.healpix"/>
>     <FIELD id="hp_2" datatype="long" name="hp_2" ucd="pos.healpix"/>
> 
>   From a consumer point of view, the rule is: If a FIELD has a ucd or
>   pos.healpix, look for a GROUP that contains a FIELDref to that
>   FIELD.  This GROUP must contain either a PARAM with ucd
>   meta.number;pos.healpix or a FIELDref with this ucd.   Obtain the
>   order number from there.  If no such GROUP, FIELDref, or PARAM can
>   be found, ignore the FIELD or raise an error.
> 
> It may not be overly pretty, but it's not overly complex either and
> neither requires prior nor likely complicates later DM work.

Yes do-able, though fiddly and abuses meta.number.
If it's the consensus I'll implement it ...

> And I really can't convince you that simply going for VALUES (which,
> yes, cannot cover the inhomogeneous case) would do the trick for now?

... but I'd still be reasonably happy to use VALUES as an ad-hoc
solution for now if we want to do it properly on a longer timescale
(e.g. meta.order and maybe meta.scheme in a future UCD list,
or follow Francois's argument and define names in STC2).

Mark

--
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor at bris.ac.uk +44-117-9288776  http://www.star.bris.ac.uk/~mbt/


More information about the apps mailing list