EPN2020-RI
EUROPLANET2020 Research Infrastructure
H2020-INFRAIA-2014-2015
Grant agreement no: 654208
Document: VESPA-009-TN v0.4
VESPA Contribution to NASA-JPL WebGeoCalc tool
Date: $action.dateFormatter.formatGivenString("yyyy-MM-dd",$content.getLastModificationDate())
Start date of project: 01 September 2015
Duration: 48 Months
Responsible WP Leader: Stéphane Erard
Project co-funded by the European Union's Horizon 2020 research and innovation programme | ||
Dissemination level | ||
PU | Public | |
PP | Restricted to other programme participants (including the Commission Service) | |
RE | Restricted to a group specified by the consortium (including the Commission Services) | |
CO | Confidential, only for members of the consortium (excluding the Commission Services) |
Project Number | 654208 |
Project Title | EPN2020 - RI |
Project Duration | 48 months: 01 September 2015 – 30 August 2019 |
Document Number | VESPA-009-TN v0.4(78) |
Delivery date | 2016-03-01 |
Title of Document | VESPA Contribution to NASA-JPL WebGeoCalc tool |
Contributing Work package (s) | WP11 |
Dissemination level | PU |
Author (s) |
Abstract: WebGeoCalc is an online interface to the NAIF/SPICE Library developed by NASA/JPL. In order to increase interoperability the WebGeoCalc team is working on adding VOTable output in the tool and asked for inputs from the VESPA team. This document is proposing VOTable output templates for WebGeoCalc. |
Document history (to be deleted before submission to Commission) | ||||
Date | Version | Editor | Change | Status |
| 0.1 | initial issue | DRAFT | |
| 0.2 | added more details on VOTable FIELD | DRAFT | |
| 0.3 | simplified document and added 1 example | DRAFT | |
| 0.4 | Added Appendix C on New UCD discussion | DRAFT |
Table of Contents
Reference Documents
- RD1: IVOA VOTable Specification. http://www.ivoa.net/documents/latest/VOT.html
- RD2: IVOA STC Model. http://www.ivoa.net/documents/latest/STC.html
- RD3: IVOA UCD Recommendation. http://www.ivoa.net/documents/latest/UCDlist.html
- RD4: Proposed Update of UCD for Planetary Sciences. http://wiki.ivoa.net/internal/IVOA/IvoaSemantics/WD-UCDlist-1.3-20150608.pdf
1. WebGeoCalc Capabilities
WebGeoCalc (WGC) is an online interface to the NAIF/SPICE kernel library developed at NASA-JPL. It proposes various types of calculations, as shown on Figure 1. For each calculation the user can select tabular data output or various plotting options. Tabular data can currently be exported into 3 formats: Excel, CSV (Comme Separated Values), or plain text. In appendix we present all the output parameters for each calculation type. These parameters include the calculation inputs, the computed parameters and the SPICE kernel used for the computation.
Fig. 1. WebGeoCalc entry page screen shot.
2. VOTable output formatting
VOTable [RD1] is an XML based format dedicated to tabular data. It has been forged by IVOA, and is now used in many science domains linked to astronomy, space sciences and space exploration. VOTable can be used a simple container including minimal metadata allowing table column description (name, unit, data type...). A more complete use is also possible, taking advantage of other IVOA data models, in particular the STC [RD2] data model (Space Time Coordinates) and the Characterization data model (axes descriptions). While the minimal use is fully acceptable for all VOTable compliant tools, the latter allows more flexible automated processing.
There are two main types of header metadata in a VOTable: the PARAM and FIELD elements. The PARAM elements are used to described generic metadata, whereas FIELD elements are describing each columns of the table. Each PARAM or FIELD must have a UCD (Unified Content Descriptor) [RD3,RD4] attribute.
PARAM metadata
The input parameters of the calculation should be placed into PARAM elements. It is always proposed to group metadata covering the same area or concept with a GROUP element. The following example shows a GROUP element containing all the calculation input parameters of a "State Vector" output.
Another GROUP shall be used to specify the kernels used for the calculation:
NB: It would probably be nicer to have an array of char strings instead of a series of PARAM elements, but such string arrays are not really supported in VOTable (as far as we understood).
FIELD metadata
The FIELD metadata are the VOTable column descriptors.
3. Examples of VOTable outputs for ephemeris calculations
Miriade
The Miriade query interface at IMCCE is providing VOTable output of ephemeris computations. Here is an output example:
The full VOTable file is available here: miriade-output.xml
CDPP
The CDPP team has developed an online "Space physics coordinate and time transformation tool" named TREPS. It is proposing to output data in VOTable, but the capabilities of VOTable were not fully implemented. The CDPP team will update this export format following the recommendation presented in this document.
Example of TREPS vocable export: treps_export_A9rHNJ7q9l.xml
Appendix A - WebGeoCalc Calculations
For each calculation, we propose the UCD to be put into the PARAM and FIELD descriptors of the VOTable header.
The Date and Time parameters are common for all calculations, and the corresponding FIELD header section unit, UCD, datatype, utype and xtype should be
Parameter | Unit | datatype | UCD | xtype | Note |
---|---|---|---|---|---|
Date | char | time.epoch | datetime | Time Format = "Calendar Date and Time" | |
Date | d | double | time.epoch | Time Format = "Julian Date" | |
Date | s | double | time.epoch | Time Format = "Seconds past J2000" | |
Time at Target | char | time.epoch | datetime | Time Format = "Calendar Date and Time" | |
Time at Target | d | double | time.epoch | Time Format = "Julian Date" | |
Time at Target | s | double | time.epoch | Time Format = "Seconds past J2000" | |
Light Time | s | double | time.duration | ||
Time at Point | char | time.epoch | datetime | Time Format = "Calendar Date and Time" | |
Time at Point | d | double | time.epoch | Time Format = "Julian Date" | |
Time at Point | s | double | time.epoch | Time Format = "Seconds past J2000" |
Geometry Calculator - State Vector
Purpose : Calculate the position and velocity of a target with respect to an observer.
Inputs: Target, Observer, Reference frame, Light propagation, Time system, Time format, Time range, State representation
Outputs: Date, Time at Target, Light Time (s), and depending on the selected State representation, the other parameters are the following:
- Rectangular: Distance (km), Speed (km/s), X (km), Y (km), Z (km), dX/dt (km/s), dY/dt (km/s), dZ/dt (km/s)
- Right Ascension, Declination, Range: Right Ascension (deg), Declination (deg), Range (km), d Right Ascension/dt (deg/s), d Declination/dt (deg/s), d Range/dt (km/s), Speed (km/s)
- Planetocentric: Longitude (deg), Latitude (deg), Radius (km), d Longitude/dt (deg/s), d Latitude/dt (deg/s), d Radius/dt (km/s), Speed (km/s)
- Planetodetic and Planetographic: Longitude (deg), Latitude (deg), Altitude (km), d Longitude/dt (deg/s), d Latitude/dt (deg/s), d Altitude/dt (km/s), Speed (km/s)
- Cylindrical: Longitude (deg), Z (km), Radius (km), d Longitude/dt (deg/s), dZ/dt (km/s), d Radius/dt (km/s), Speed (km/s)
- Spherical: Longitude (deg), Colatitude (deg), Radius (km), d Longitude/dt (deg/s), d Colatitude/dt (deg/s), d Radius/dt (km/s), Speed (km/s)
The FIELD header section unit, UCD, datatype and utype should be:
Parameter | Unit | datatype | UCD | Note |
---|---|---|---|---|
Distance | km | double | pos.distance | |
Speed | km/s | double | phys.veloc | |
X | km | double | pos.distance | |
Y | km | double | pos.distance | |
Z | km | double | pos.distance | |
dX/dt | km/s | double | arith.rate;pos.distance | |
dY/dt | km/s | double | arith.rate;pos.distance | |
dZ/dt | km/s | double | arith.rate;pos.distance | |
Right Ascension | deg | double | pos.eq.ra | |
Declination | deg | double | pos.eq.dec | |
Range | km | double | pos.distance | |
d(Right Ascension)/dt | deg/s | double | arith.rate;pos.eq.ra | |
d(Declination)/dt | deg/s | double | arith.rate;pos.eq.dec | |
d(Range)/dt | km/s | double | arith.rate;pos.distance | |
Longitude | deg | double | pos.bodyrc.lon | |
Latitude | deg | double | pos.bodyrc.lat | |
Radius | km | double | pos.distance | |
Altitude | km | double | pos.bodyrc.alt | |
d(Longitude)/dt | deg/s | double | arith.rate;pos.bodyrc.lon | |
d(Latitude)/dt | deg/s | double | arith.rate;pos.bodyrc.lat | |
d(Radius)/dt | km/s | double | arith.rate;pos.distance | |
d(Altitude)/dt | km/s | double | arith.rate;pos.bodyrc.alt | |
Colatitude | deg | double | pos.bodyrc.colat * | This UCD is invalid, no replacement found. |
d(Colatitude)/dt | deg/s | double | arith.rate;pos.bodyrc.colat * |
Notes:
- Adding generic spherical/cartesian/cylindrical UCD should be studied with IVOA Semantic group.
Geometry Calculator - Angular Separation
Purpose: Calculate the angular separation between two targets as seen from an observer.
Inputs: Target 1, Target 1 shape, Target 2, Target 2 shape, Observer, Light propagation, Time system, Time format, Time range
Outputs: Date, Angular Separation (deg)
The FIELD header section unit, UCD, datatype, utype and xtype should be:
Parameter | Unit | datatype | UCD | Note |
---|---|---|---|---|
Angular Separation | deg | double | pos.angDistance |
Geometry Calculator - Angular Size
Purpose: Calculate the angular size of a target as seen from an observer.
Inputs: Target, Observer, Light propagation, Time system, Time format, Time range
Outputs: Date, Angular Size (deg)
The FIELD header section unit, UCD, datatype, utype and xtype should be:
Parameter | Unit | datatype | UCD | Note |
---|---|---|---|---|
Angular Size | deg | double | phys.angSize |
[to be updated]
Geometry Calculator - Frame Transformation
Purpose: Calculate the transformation between two reference frames.
Inputs: Frame 1, Frame 2, Light propagation, Time system, Time format, Time range, Orientation Representation, Rotation Order, Angular Units, Angular Velocity form, Angular velocity units
Outputs: Date, and depending on the selected Orientation Representation and Angular Units the other parameters are the following:
- Eurler Angles: Angle 1 (deg or rad), Angle 2 (deg or rad), Angle 3 (deg or rad)
- Rotation Axis and Angle: Angle (deg or rad), Axis X, Axis Y, Axis Z
- Quaternion: QCos, QSin1, QSin2, QSin3
- Matrix: Row, Column 1, Column 2, Column 3
- Matrix, "flagged": Column 1, Column 2, Column 3
[to be updated]
Geometry Calculator - Illumination Angles
Purpose: Calculate the emission, phase and solar incidence angles at a point on a target as seen from an observer.
Inputs: Target, Reference Frame, Observer, Coordinate System, Latitude, Longitude, Light Propagation, Time system, Time format, Time range
Outputs: Date, Incidence Angle (deg), Emission Angle (deg), Phase Angle (deg), Observer Distance (km), Time at Point, Light Time (s)
The FIELD header section unit, UCD, datatype, utype and xtype should be:
Parameter | Unit | datatype | UCD | Notes |
---|---|---|---|---|
Incidence Angle | deg | double | pos.incidenceAng * | UCD could be pos.posAng |
Emission Angle | deg | double | pos.emergenceAng * | UCD could be pos.posAng |
Phase Angle | deg | double | pos.phaseAng | |
Observer Distance | km | double | pos.distance |
[to be updated]
Geometry Calculator - Sub-solar Point
Purpose: Calculate the sub-solar point on a target as seen from an observer.
Inputs: Target, Reference Frame, Observer, Sub-point Type, Light Propagation, Time system, Time format, Time range, Position Representation
Outputs: Date, Longitude (deg), Latitude (deg), Sub-Point Radius (km), Observer Distance (km), Incidence Angle (deg), Emission Angle (deg), Phase Angle (deg), Time at Point, Light Time (s)
Geometry Calculator - Sub-observer Point
Purpose: Calculate the sub-observer point on a target as seen from an observer.
Geometry Calculator - Surface Intercept Point
Purpose: Calculate the intercept point of a vector or vectors on a target as seen from an observer.
Geometry Calculator - Orbital Elements
Purpose: Calculate the osculating elements of the orbit of a target body around a central body.
Geometry Event Finder - Position Finder
Purpose: Find time intervals when a coordinate of an observer-target position vector satisfies a condition.
Geometry Event Finder - Angular Separation Finder
Purpose: Find time intervals when the angle between two bodies, as seen by an observer, satisfies a condition.
Geometry Event Finder - Distance Finder
Purpose: Find time intervals when the distance between a target and observer satisfies a condition.
Geometry Event Finder - Sub-Point Finder
Purpose: Find time intervals when a coordinate of the sub-observer point on a target satisfies a condition.
Geometry Event Finder - Occultation Finder
Purpose: Find time intervals when an observer sees one target occulted by, or in transit across, another.
Geometry Event Finder - Surface Intercept Finder
Purpose: Find time intervals when a coordinate of a surface intercept vector satisfies a condition.
Geometry Event Finder - Target in Field of View
Purpose: Find time intervals when a target intersects the space bounded by the field-of-view of an instrument.
Geometry Event Finder - Ray in Field of View
Purpose: Find time intervals when a specified ray is contained in the space bounded by an instrument's field-of-view.
Time Calculator - Time Conversion
Purpose: Convert times from one time system or format to another.
[to be updated]
Appendix B - Using STC Data Model
More complete description of FIELD including reference frame STC standard description can be done:
The utype
attribute is used as a pointer to a data model element, so that the parameter or field is semantically and accurately defined. The data model used here is the IVOA STC data model. This data model includes a series of predefined coordinate systems (see this page). This list shall be updated with inputs from the planetary science community. Inputs from the NAIF/SPICE team would be very valuable.
The coordinate frame description (including state representation, name, center...) should be defined in the COO_SYS_FRAME group. This will be investigated.
The following table gives the utypes that should be used for each FIELD parameter:
Parameter | utype | Notes |
---|---|---|
Date | stc:astroCoords.Time.TimeInstant.ISOTime | Time Format = "Calendar Date and Time" |
Date | stc:astroCoords.Time.TimeInstant.JDTime | Time Format = "Julian Date" |
Date | stc:astroCoords.Time.TimeInstant.TimeOffset | Time Format = "Seconds past J2000" |
Time at Target | stc:astroCoords.Time.TimeInstant.ISOTime | Time Format = "Calendar Date and Time" |
Time at Target | stc:astroCoords.Time.TimeInstant.JDTime | Time Format = "Julian Date" |
Time at Target | stc:astroCoords.Time.TimeInstant.TimeOffset | Time Format = "Seconds past J2000" |
Light Time | stc:astroCoords.Time.TimeInstant.TimeOffset | |
Distance | stc:astroCoords.Position1D.Value | |
Speed | stc:astroCoords.Velocity1D.Value | |
X | stc:astroCoords.Position3D.Value3.C1 | |
Y | stc:astroCoords.Position3D.Value3.C2 | |
Z | stc:astroCoords.Position3D.Value3.C3 | |
dX/dt | stc:astroCoords.Velocity3D.Value3.C1 | |
dY/dt | stc:astroCoords.Velocity3D.Value3.C2 | |
dZ/dt | stc:astroCoords.Velocity3D.Value3.C3 | |
Right Ascension | stc:astroCoords.Position3D.Value3.C1 | |
Declination | stc:astroCoords.Position3D.Value3.C2 | |
Range | stc:astroCoords.Position3D.Value3.C3 | |
d(Right Ascension)/dt | stc:astroCoords.Velocity3D.Value3.C1 | |
d(Declination)/dt | stc:astroCoords.Velocity3D.Value3.C2 | |
d(Range)/dt | stc:astroCoords.Velocity3D.Value3.C3 | |
Longitude | stc:astroCoords.Position3D.Value3.C1 | |
Latitude | stc:astroCoords.Position3D.Value3.C2 | |
Radius | stc:astroCoords.Position3D.Value3.C3 | |
Altitude | stc:astroCoords.Position3D.Value3.C3 | |
d(Longitude)/dt | stc:astroCoords.Velocity3D.Value3.C1 | |
d(Latitude)/dt | stc:astroCoords.Velocity3D.Value3.C2 | |
d(Radius)/dt | stc:astroCoords.Velocity3D.Value3.C3 | |
d(Altitude)/dt | stc:astroCoords.Velocity3D.Value3.C3 | |
Colatitude | stc:astroCoords.Position3D.Value3.C2 | |
d(Colatitude)/dt | stc:astroCoords.Velocity3D.Value3.C2 |
Appendix C - New UCDs for planetary ephemeris and attitude data
During the preparation of this document, a series of missing UCDs were identified. We list them here, with a tentative definition. This list will be discussed with the IVOA Semantics Working Group.
UCD | Definition | Similar UCD (more generic) |
---|---|---|
pos.bodyrc.colat | Body related coordinate (colatitude on the body) | pos.bodyrc.lat |
pos.incidenceAng | Incidence Angle, solar zenithal angle | pos.posAng |
pos.emergenceAng | Emergence Angle, observer zenithal angle | pos.posAng |
pos.cylindrical.r | Cylindrical coordinates, distance to Z-axis | pos.distance |
pos.cylindrical.th | Cylindrical coordinates, azimuth around Z-axis | pos.bodyrc.lon |
pos.cylindrical.z | Cylindrical coordinates, altitude along Z-axis | pos.cartesian.z |
pos.rotation.eulerAng | Euler Angles representation of a rotation | |
pos.rotation.quaternion | Quaternion representation of a rotation | |
pos.rotation.matrix | Matrix representation of a rotation | |
pos.rotation.axis | Axis of a rotation, spin axis | |
phys.component | Component of a vector or of a matrix |
2 Comments
Baptiste Cecconi
These are 2 different projects (both using SPICE under the hood). Cosmographia is a 3D visualization tool, where as WeGeoCalc is a query interface to SPICE. The first provides nice images, while the second provides plots and tables.
Stéphane Erard
To be linked with cosmographia ? https://naif.jpl.nasa.gov/naif/cosmographia.html