voruby 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (156) hide show
  1. data/LICENSE +339 -0
  2. data/REQUIREMENTS +4 -0
  3. data/Rakefile.rb +296 -0
  4. data/lib/voruby/adql/adql.rb +2735 -0
  5. data/lib/voruby/adql/ext.rb +15 -0
  6. data/lib/voruby/adql/loader.rb +5 -0
  7. data/lib/voruby/adql/operations.rb +54 -0
  8. data/lib/voruby/adql/parser.rb +160 -0
  9. data/lib/voruby/adql/transforms.rb +573 -0
  10. data/lib/voruby/ext.rb +17 -0
  11. data/lib/voruby/loader.rb +4 -0
  12. data/lib/voruby/misc/propertyfile.rb +36 -0
  13. data/lib/voruby/plastic/applications.rb +174 -0
  14. data/lib/voruby/plastic/constants.rb +30 -0
  15. data/lib/voruby/plastic/loader.rb +10 -0
  16. data/lib/voruby/plastic/plastic.rb +1 -0
  17. data/lib/voruby/resources/conesearch/conesearch.rb +9 -0
  18. data/lib/voruby/resources/conesearch/conesearch_v0_2.rb +55 -0
  19. data/lib/voruby/resources/conesearch/conesearch_v0_3.rb +50 -0
  20. data/lib/voruby/resources/conesearch/conesearch_v1_0.rb +72 -0
  21. data/lib/voruby/resources/conesearch/loader.rb +4 -0
  22. data/lib/voruby/resources/loader.rb +50 -0
  23. data/lib/voruby/resources/nodes.rb +190 -0
  24. data/lib/voruby/resources/openskynode/loader.rb +4 -0
  25. data/lib/voruby/resources/openskynode/openskynode.rb +9 -0
  26. data/lib/voruby/resources/openskynode/openskynode_v0_1.rb +54 -0
  27. data/lib/voruby/resources/sia/loader.rb +5 -0
  28. data/lib/voruby/resources/sia/sia.rb +9 -0
  29. data/lib/voruby/resources/sia/sia_v0_6.rb +90 -0
  30. data/lib/voruby/resources/sia/sia_v0_7.rb +89 -0
  31. data/lib/voruby/resources/sia/sia_v1_0.rb +122 -0
  32. data/lib/voruby/resources/stsci.rb +59 -0
  33. data/lib/voruby/resources/vodataservice/coverage_v0_2.rb +195 -0
  34. data/lib/voruby/resources/vodataservice/coverage_v0_3.rb +158 -0
  35. data/lib/voruby/resources/vodataservice/loader.rb +5 -0
  36. data/lib/voruby/resources/vodataservice/vodataservice.rb +9 -0
  37. data/lib/voruby/resources/vodataservice/vodataservice_v0_4.rb +189 -0
  38. data/lib/voruby/resources/vodataservice/vodataservice_v0_5.rb +163 -0
  39. data/lib/voruby/resources/vodataservice/vodataservice_v1_0.rb +221 -0
  40. data/lib/voruby/resources/voregistry/loader.rb +4 -0
  41. data/lib/voruby/resources/voregistry/voregistry.rb +9 -0
  42. data/lib/voruby/resources/voregistry/voregistry_v0_2.rb +40 -0
  43. data/lib/voruby/resources/voregistry/voregistry_v0_3.rb +30 -0
  44. data/lib/voruby/resources/voregistry/voregistry_v1_0.rb +86 -0
  45. data/lib/voruby/resources/voresource/loader.rb +17 -0
  46. data/lib/voruby/resources/voresource/voresource.rb +9 -0
  47. data/lib/voruby/resources/voresource/voresource_v0_10.rb +322 -0
  48. data/lib/voruby/resources/voresource/voresource_v0_9.rb +405 -0
  49. data/lib/voruby/resources/voresource/voresource_v1_0.rb +230 -0
  50. data/lib/voruby/services/ext.rb +11 -0
  51. data/lib/voruby/services/gestalt/footprint.rb +95 -0
  52. data/lib/voruby/services/gestalt/wcs_fixer.rb +105 -0
  53. data/lib/voruby/services/gestalt/wesix.rb +155 -0
  54. data/lib/voruby/services/loader.rb +7 -0
  55. data/lib/voruby/services/registry/registry.rb +53 -0
  56. data/lib/voruby/services/resolver/resolver.rb +35 -0
  57. data/lib/voruby/sesame/loader.rb +6 -0
  58. data/lib/voruby/sesame/sesame_v1_0.rb +64 -0
  59. data/lib/voruby/simple/loader.rb +6 -0
  60. data/lib/voruby/simple/parameters.rb +196 -0
  61. data/lib/voruby/simple/sap.rb +446 -0
  62. data/lib/voruby/spacetime/loader.rb +3 -0
  63. data/lib/voruby/spacetime/spacetime.rb +607 -0
  64. data/lib/voruby/stc/coords_v1_20.rb +900 -0
  65. data/lib/voruby/stc/loader.rb +55 -0
  66. data/lib/voruby/stc/region_v1_20.rb +274 -0
  67. data/lib/voruby/stc/stc_v1_20.rb +1196 -0
  68. data/lib/voruby/util.rb +27 -0
  69. data/lib/voruby/voevent/loader.rb +7 -0
  70. data/lib/voruby/voevent/voevent_v1_0.rb +213 -0
  71. data/lib/voruby/voevent/voevent_v1_1.rb +196 -0
  72. data/lib/voruby/votables/chandra.rb +410 -0
  73. data/lib/voruby/votables/cnoc.rb +393 -0
  74. data/lib/voruby/votables/data.rb +179 -0
  75. data/lib/voruby/votables/galex.rb +390 -0
  76. data/lib/voruby/votables/hst.rb +391 -0
  77. data/lib/voruby/votables/int.rb +391 -0
  78. data/lib/voruby/votables/libxml_parser.rb +411 -0
  79. data/lib/voruby/votables/libxml_votable.rb +67 -0
  80. data/lib/voruby/votables/loader.rb +10 -0
  81. data/lib/voruby/votables/meta.rb +763 -0
  82. data/lib/voruby/votables/misc.rb +51 -0
  83. data/lib/voruby/votables/nsa.rb +393 -0
  84. data/lib/voruby/votables/nsar3.rb +410 -0
  85. data/lib/voruby/votables/rexml_parser.rb +408 -0
  86. data/lib/voruby/votables/rexml_votable.rb +67 -0
  87. data/lib/voruby/votables/sdss.rb +393 -0
  88. data/lib/voruby/votables/transforms.rb +388 -0
  89. data/lib/voruby/votables/tree.rb +45 -0
  90. data/lib/voruby/votables/types.rb +391 -0
  91. data/lib/voruby/votables/votable.rb +630 -0
  92. data/lib/voruby/votables/xmm.rb +394 -0
  93. data/test/adql/test1.adql +49 -0
  94. data/test/adql/test2.adql +51 -0
  95. data/test/adql/test3.adql +81 -0
  96. data/test/adql/test4.adql +53 -0
  97. data/test/adql/test5.adql +55 -0
  98. data/test/adql/test6.adql +18 -0
  99. data/test/adql/test7.adql +48 -0
  100. data/test/adql/unittest.rb +1672 -0
  101. data/test/plastic/test.rb +44 -0
  102. data/test/plastic/test.vot +5385 -0
  103. data/test/plastic/unittest.rb +66 -0
  104. data/test/resources/conesearch/conesearch_v0_3.xml +31 -0
  105. data/test/resources/conesearch/conesearch_v1_0.xml +86 -0
  106. data/test/resources/conesearch/unittest_v0_3.rb +22 -0
  107. data/test/resources/conesearch/unittest_v1_0.rb +24 -0
  108. data/test/resources/openskynode/open_sky_node_v0_1.xml +32 -0
  109. data/test/resources/openskynode/unittest_v0_1.rb +31 -0
  110. data/test/resources/sia/simple_image_access_v0_7.xml +36 -0
  111. data/test/resources/sia/simple_image_access_v1_0.xml +122 -0
  112. data/test/resources/sia/unittest_v0_7.rb +24 -0
  113. data/test/resources/sia/unittest_v1_0.rb +29 -0
  114. data/test/resources/stsci.xml +336 -0
  115. data/test/resources/unittest_stsci.rb +25 -0
  116. data/test/resources/vodataservice/catalog_service_resource_v1_0.xml +128 -0
  117. data/test/resources/vodataservice/data_collection_resource_v0_5.xml +54 -0
  118. data/test/resources/vodataservice/data_collection_resource_v1_0.xml +117 -0
  119. data/test/resources/vodataservice/data_service_resource_v1_0.xml +115 -0
  120. data/test/resources/vodataservice/sky_service_resource_v0_10.xml +45 -0
  121. data/test/resources/vodataservice/table_service_resource_v1_0.xml +122 -0
  122. data/test/resources/vodataservice/tabular_sky_service_resource_v0_10.xml +60 -0
  123. data/test/resources/vodataservice/unittest_v0_5.rb +126 -0
  124. data/test/resources/vodataservice/unittest_v1_0.rb +151 -0
  125. data/test/resources/voregistry/authority_resource_v0_3.xml +20 -0
  126. data/test/resources/voregistry/authority_resource_v1_0.xml +82 -0
  127. data/test/resources/voregistry/registry_service_v0_3.xml +20 -0
  128. data/test/resources/voregistry/registry_service_v1_0.xml +107 -0
  129. data/test/resources/voregistry/unittest_v0_3.rb +31 -0
  130. data/test/resources/voregistry/unittest_v1_0.rb +34 -0
  131. data/test/resources/voresource/organisation_resource_v1_0.xml +90 -0
  132. data/test/resources/voresource/resource_organisation_v0_10.xml +22 -0
  133. data/test/resources/voresource/resource_service_v0_10.xml +19 -0
  134. data/test/resources/voresource/resource_v0_10.xml +19 -0
  135. data/test/resources/voresource/resource_v1_0.xml +79 -0
  136. data/test/resources/voresource/service_resource_v1_0.xml +91 -0
  137. data/test/resources/voresource/unittest_v0_10.rb +61 -0
  138. data/test/resources/voresource/unittest_v0_9.rb +4 -0
  139. data/test/resources/voresource/unittest_v1_0.rb +190 -0
  140. data/test/services/gestalt/unittest.rb +74 -0
  141. data/test/services/registry/unittest.rb +34 -0
  142. data/test/services/resolver/unittest.rb +38 -0
  143. data/test/simple/unittest.rb +46 -0
  144. data/test/spacetime/unittest.rb +39 -0
  145. data/test/stc/catalog_entry_location_v1_20.xml +112 -0
  146. data/test/stc/obs_data_location_v1_20.xml +108 -0
  147. data/test/stc/search_location_v1_20.xml +54 -0
  148. data/test/stc/stc_resource_profile_v1_20.xml +60 -0
  149. data/test/stc/unittest_v1_20.rb +620 -0
  150. data/test/voevent/unittest_v1_0.rb +79 -0
  151. data/test/voevent/unittest_v1_1.rb +70 -0
  152. data/test/voevent/voevent_v1_0.xml +96 -0
  153. data/test/voevent/voevent_v1_1.xml +76 -0
  154. data/test/votables/test.vot +366 -0
  155. data/test/votables/unittest.rb +54 -0
  156. metadata +256 -0
@@ -0,0 +1,1196 @@
1
+ require 'voruby/stc/loader'
2
+
3
+ require 'voruby/stc/coords_v1_20'
4
+ require 'voruby/stc/region_v1_20'
5
+
6
+ include VORuby::STCcoords::V1_20
7
+ include VORuby::STCregion::V1_20
8
+
9
+ module VORuby
10
+ module STC
11
+ module V1_20
12
+
13
+ # Forward declarations
14
+ class CoordFrameType; end
15
+ class CoordFrame; end
16
+ class CoordEquinoxType; end
17
+ class SpaceRefFrameType; end
18
+ class ICRSType < SpaceRefFrameType; end
19
+ class FKType < SpaceRefFrameType; end
20
+ class CustomSpaceRefFrameType < SpaceRefFrameType; end
21
+ class SpaceRefFrame; end
22
+ class ICRS; end
23
+ class FK4; end
24
+ class FK5; end
25
+ class ECLIPTIC; end
26
+ class GALACTIC_I; end
27
+ class GALACTIC_II; end
28
+ class SUPER_GALACTIC; end
29
+ class AZ_EL; end
30
+ class BODY; end
31
+ class GEO_C; end
32
+ class GEO_D < ICRSType; end
33
+ class MAG; end
34
+ class GSE; end
35
+ class GSM; end
36
+ class SM; end
37
+ class HGC; end
38
+ class HEE; end
39
+ class HEEQ; end
40
+ class HCI; end
41
+ class HCD; end
42
+ class MERCURY_C; end
43
+ class VENUS_C; end
44
+ class LUNA_C; end
45
+ class MARS_C; end
46
+ class JUPITER_C_III; end
47
+ class SATURN_C_III; end
48
+ class URANUS_C_III; end
49
+ class NEPTUNE_C_III; end
50
+ class PLUTO_C; end
51
+ class MERCURY_G; end
52
+ class VENUS_G; end
53
+ class LUNA_G; end
54
+ class MARS_G; end
55
+ class JUPITER_G_III; end
56
+ class SATURN_G_III; end
57
+ class URANUS_G_III; end
58
+ class NEPTUNE_G_III; end
59
+ class PLUTO_G; end
60
+ class UnknownFrame; end
61
+ class CustomSpaceRefFrame; end
62
+ class PlanetaryEphemType; end
63
+ class ReferencePositionType; end
64
+ class StdRefPosType < ReferencePositionType; end
65
+ class CustomRefPosType < ReferencePositionType; end
66
+ class ReferencePosition; end
67
+ class TOPOCENTER; end
68
+ class BARYCENTER; end
69
+ class HELIOCENTER; end
70
+ class GEOCENTER; end
71
+ class LSR; end
72
+ class LSRK; end
73
+ class LSRD; end
74
+ class GALACTIC_CENTER; end
75
+ class LOCAL_GROUP_CENTER; end
76
+ class MOON; end
77
+ class EMBARYCENTER; end
78
+ class MERCURY; end
79
+ class VENUS; end
80
+ class MARS; end
81
+ class JUPITER; end
82
+ class SATURN; end
83
+ class URANUS; end
84
+ class NEPTUNE; end
85
+ class PLUTO; end
86
+ class RELOCATABLE; end
87
+ class UNKNOWNRefPos; end
88
+ class CustomRefPos; end
89
+ class CoordFlavorType; end
90
+ class CoordFlavor; end
91
+ class SPHERICAL; end
92
+ class CARTESIAN; end
93
+ class UNITSPHERE; end
94
+ class POLAR; end
95
+ class SpaceFrameType < CoordFrameType; end
96
+ class TimeFrameType < CoordFrameType; end
97
+ class SpectralFrameType < CoordFrameType; end
98
+ class DopplerDefinitionType; end
99
+ class RedshiftFrameType < CoordFrameType; end
100
+ class CoordSysType; end
101
+ class CoordSys; end
102
+ class TimeFrame; end
103
+ class SpaceFrame; end
104
+ class SpectralFrame; end
105
+ class RedshiftFrame; end
106
+ class PixelCoordFrame; end
107
+ class GenericCoordFrame; end
108
+ class AstroCoordSystemType < CoordSysType; end
109
+ class AstroCoordSystem; end
110
+ class PixelCoordSystemType < CoordSysType; end
111
+ class PixelCoordSystem; end
112
+ class CoordIntervalType; end
113
+ class CoordInterval; end
114
+ class TimeIntervalType < CoordIntervalType; end
115
+ class CoordScalarIntervalType < CoordIntervalType; end
116
+ class CoordScalarInterval; end
117
+ class Coord2VecIntervalType < CoordIntervalType; end
118
+ class Coord2VecInterval; end
119
+ class Coord3VecIntervalType < CoordIntervalType; end
120
+ class Coord3VecInterval; end
121
+ class SpatialIntervalType; end
122
+ class SphereType < SpatialIntervalType; end
123
+ class Sphere; end
124
+ class VelocitySphereType < SphereType; end
125
+ class VelocitySphere; end
126
+ class PositionIntervalType < SpatialIntervalType; end
127
+ class PositionInterval; end
128
+ class VelocityIntervalType < PositionIntervalType; end
129
+ class VelocityInterval; end
130
+ class SpectralIntervalType < CoordScalarIntervalType; end
131
+ class RegionFileType < SpatialIntervalType; end
132
+ class RegionFile; end
133
+ class RegionType < SpatialIntervalType; end
134
+ class Region; end
135
+ class SpatialInterval; end
136
+ class VelInterval; end
137
+ class RedshiftIntervalType < CoordScalarIntervalType; end
138
+ class CoordAreaType; end
139
+ class AstroCoordAreaType < CoordAreaType; end
140
+ class PixelCoordAreaType < CoordAreaType; end
141
+ class CoordArea; end
142
+ class AstroCoordArea; end
143
+ class PixelCoordArea; end
144
+ class STCMetadataType; end
145
+ class STCMetadata; end
146
+ class STCDescriptionType < STCMetadataType; end
147
+ class STCResourceProfileType < STCDescriptionType; end;
148
+ class STCResourceProfile; end
149
+ class SearchLocationType < STCDescriptionType; end
150
+ class SearchLocation; end
151
+ class CatalogEntryLocationType < STCDescriptionType; end
152
+ class CatalogEntryLocation; end
153
+ class ObsDataLocationType < STCMetadataType; end
154
+ class ObsDataLocation; end
155
+ class ObservatoryLocationType < STCDescriptionType; end
156
+ class ObservationLocationType < STCDescriptionType; end
157
+ class PixelSpaceType < STCDescriptionType; end
158
+
159
+ SubstitutionGroups = {
160
+ 'CoordFrame' => [PixelCoordFrame, GenericCoordFrame],
161
+ 'SpaceRefFrame' => [ICRS, FK4, FK5, ECLIPTIC, GALACTIC_I, GALACTIC_II, SUPER_GALACTIC, AZ_EL, BODY,
162
+ GEO_C, GEO_D, MAG, GSE, GSM, SM, HGC, HEE, HEEQ, HCI, HCD,
163
+ MERCURY_C, VENUS_C, LUNA_C, MARS_C, JUPITER_C_III, SATURN_C_III, URANUS_C_III, NEPTUNE_C_III, PLUTO_C,
164
+ MERCURY_G, VENUS_G, LUNA_G, MARS_G, JUPITER_G_III, SATURN_G_III, URANUS_G_III, NEPTUNE_G_III, PLUTO_G,
165
+ UnknownFrame, CustomSpaceRefFrame],
166
+ 'ReferencePosition' => [TOPOCENTER, BARYCENTER, HELIOCENTER, GEOCENTER,
167
+ LSR, LSRK, LSRD,
168
+ GALACTIC_CENTER, LOCAL_GROUP_CENTER,
169
+ MOON, EMBARYCENTER, MERCURY, VENUS, MARS, JUPITER, SATURN, URANUS, NEPTUNE, PLUTO,
170
+ RELOCATABLE, UNKNOWNRefPos, CustomRefPos],
171
+ 'CoordFlavor' => [SPHERICAL, CARTESIAN, UNITSPHERE, POLAR],
172
+ 'CoordSys' => [AstroCoordSystem, PixelCoordSystem],
173
+ 'CoordInterval' => [CoordScalarInterval, Coord2VecInterval, Coord3VecInterval],
174
+ 'SpatialInterval' => [Sphere, PositionInterval, RegionFile, Region],
175
+ 'VelInterval' => [VelocitySphere, VelocityInterval],
176
+ 'CoordArea' => [AstroCoordArea, PixelCoordArea]
177
+ }
178
+
179
+ # A CoordFrame has to have at least a name.
180
+ class CoordFrameType
181
+ include XML::Mapping
182
+
183
+ text_node :name, 'Name', :optional => true
184
+ end
185
+ class CoordFrame
186
+ include XML::Mapping
187
+
188
+ object_node :value, '', :class => CoordFrameType, :optional => false
189
+ end
190
+
191
+ # Coordinate equinox: B{year} or J{year} with at least one decimal; do not use in conjunction with ICRS.
192
+ class CoordEquinoxType
193
+ include XML::Mapping
194
+
195
+ text_node :value, '', :optional => false
196
+
197
+ def value=(eq)
198
+ raise "Coordinate equinox #{eq} in wrong format" if !eq.match(/^[BJ]\-?\d?\d?\d?\d\d\d\d\.\d\d?\d?$/)
199
+ @value = eq
200
+ end
201
+ end
202
+
203
+ # Abstract space reference frame type.
204
+ class SpaceRefFrameType
205
+ include XML::Mapping
206
+ end
207
+ # Head element for the Coordinate reference frame substitution group: optional equinox
208
+ # with either a standard reference system (ICRS, FK5, FK4) and optional standard pole
209
+ # (equatorial, ecliptic, galactic, etc.), or a custom frame with pole (positive Z-axis)
210
+ # and positive X-axis direction.
211
+ class SpaceRefFrame
212
+ include XML::Mapping
213
+
214
+ object_node :value, '', :class => SpaceRefFrameType, :optional => false
215
+ end
216
+
217
+ # ICRS type: no equinox.
218
+ class ICRSType; end
219
+
220
+ # FK[45] type: needs an equinox.
221
+ class FKType
222
+ object_node :equinox, 'Equinox', :class => CoordEquinoxType, :optional => false
223
+ end
224
+
225
+ # A custom space reference frame type defined through pole and X-axis directions.
226
+ class CustomSpaceRefFrameType
227
+ text_node :frame, 'Frame', :optional => false
228
+
229
+ object_node :pole_zaxis, 'Pole_Zaxis', :class => AstroCoordsType, :optional => false
230
+ object_node :xaxis, 'Xaxis', :class => AstroCoordsType, :optional => false
231
+ end
232
+
233
+ # The ICRS reference frame.
234
+ class ICRS
235
+ include XML::Mapping
236
+
237
+ object_node :value, '', :class => ICRSType, :optional => false
238
+ end
239
+
240
+ # FK4; needs a Besselian epoch.
241
+ class FK4
242
+ include XML::Mapping
243
+
244
+ object_node :value, '', :class => FKType, :optional => false
245
+ end
246
+
247
+ # FK5; needs a Julian epoch.
248
+ class FK5
249
+ include XML::Mapping
250
+
251
+ object_node :value, '', :class => FKType, :optional => false
252
+ end
253
+
254
+ # Ecliptic coordinates; needs an epoch.
255
+ class ECLIPTIC
256
+ include XML::Mapping
257
+
258
+ object_node :value, '', :class => FKType, :optional => false
259
+ end
260
+
261
+ # Center of the Galaxy.
262
+ class GALACTIC_CENTER
263
+ include XML::Mapping
264
+
265
+ object_node :value, '', :class => StdRefPosType, :optional => false
266
+ end
267
+
268
+ # Galactic coordinates; first system.
269
+ class GALACTIC_I
270
+ include XML::Mapping
271
+
272
+ object_node :value, '', :class => ICRSType, :optional => false
273
+ end
274
+
275
+ # Galactic coordinates; second system.
276
+ class GALACTIC_II
277
+ include XML::Mapping
278
+
279
+ object_node :value, '', :class => ICRSType, :optional => false
280
+ end
281
+
282
+ # SuperGalactic coordinates.
283
+ class SUPER_GALACTIC
284
+ include XML::Mapping
285
+
286
+ object_node :value, '', :class => ICRSType, :optional => false
287
+ end
288
+
289
+ # Local Azimuth and Elevation coordinates.
290
+ class AZ_EL
291
+ include XML::Mapping
292
+
293
+ object_node :value, '', :class => ICRSType, :optional => false
294
+ end
295
+
296
+ # Generic Body coordinates.
297
+ class BODY
298
+ include XML::Mapping
299
+
300
+ object_node :value, '', :class => ICRSType, :optional => false
301
+ end
302
+
303
+ # The Geocentric (co-rotating) reference frame.
304
+ class GEO_C
305
+ include XML::Mapping
306
+
307
+ object_node :value, '', :class => ICRSType, :optional => false
308
+ end
309
+
310
+ # The Geodetic reference frame; semi-major axis and inverse
311
+ # flattening may be provided to define the reference spheroid; the default is the IAU 1976 reference spheroid.
312
+ class GEO_D
313
+ numeric_node :radius, '@radius', :optional => true, :default_value => 6378140.0
314
+ numeric_node :inv_flattening, '@inv_flattening', :optional => true, :default_value => 298.257
315
+
316
+ object_node :unit, '@unit', :class => PosUnitType, :optional => true, :default_value => 'm'
317
+ end
318
+
319
+ # The Geomagnetic reference frame.
320
+ class MAG
321
+ include XML::Mapping
322
+
323
+ object_node :value, '', :class => ICRSType, :optional => false
324
+ end
325
+
326
+ # The Geocentric Solar Ecliptic reference frame.
327
+ class GSE
328
+ include XML::Mapping
329
+
330
+ object_node :value, '', :class => ICRSType, :optional => false
331
+ end
332
+
333
+ # The Geocentric Solar Magnetic reference frame.
334
+ class GSM
335
+ include XML::Mapping
336
+
337
+ object_node :value, '', :class => ICRSType, :optional => false
338
+ end
339
+
340
+ # The Solar Magnetic reference frame.
341
+ class SM
342
+ include XML::Mapping
343
+
344
+ object_node :value, '', :class => ICRSType, :optional => false
345
+ end
346
+
347
+ # The Heliographic reference frame.
348
+ class HGC
349
+ include XML::Mapping
350
+
351
+ object_node :value, '', :class => ICRSType, :optional => false
352
+ end
353
+
354
+ # The Heliocentric Earth Ecliptic reference frame.
355
+ class HEE
356
+ include XML::Mapping
357
+
358
+ object_node :value, '', :class => ICRSType, :optional => false
359
+ end
360
+
361
+ # The Heliocentric Earth Equatorial reference frame.
362
+ class HEEQ
363
+ include XML::Mapping
364
+
365
+ object_node :value, '', :class => ICRSType, :optional => false
366
+ end
367
+
368
+ # The Heliocentric Inertial reference frame.
369
+ class HCI
370
+ include XML::Mapping
371
+
372
+ object_node :value, '', :class => ICRSType, :optional => false
373
+ end
374
+
375
+ # The Heliocentric of Date reference frame.
376
+ class HCD
377
+ include XML::Mapping
378
+
379
+ object_node :value, '', :class => ICRSType, :optional => false
380
+ end
381
+
382
+ # The planetocentric reference frame anchored on Mercury.
383
+ class MERCURY_C
384
+ include XML::Mapping
385
+
386
+ object_node :value, '', :class => ICRSType, :optional => false
387
+ end
388
+
389
+ # The planetocentric reference frame anchored on Venus.
390
+ class VENUS_C
391
+ include XML::Mapping
392
+
393
+ object_node :value, '', :class => ICRSType, :optional => false
394
+ end
395
+
396
+ # The lunacentric reference frame anchored on the moon.
397
+ class LUNA_C
398
+ include XML::Mapping
399
+
400
+ object_node :value, '', :class => ICRSType, :optional => false
401
+ end
402
+
403
+ # The planetocentric reference frame anchored on Mars.
404
+ class MARS_C
405
+ include XML::Mapping
406
+
407
+ object_node :value, '', :class => ICRSType, :optional => false
408
+ end
409
+
410
+ # The planetocentric reference frame anchored on Jupiter.
411
+ class JUPITER_C_III
412
+ include XML::Mapping
413
+
414
+ object_node :value, '', :class => ICRSType, :optional => false
415
+ end
416
+
417
+ # The planetocentric reference frame anchored on Saturn.
418
+ class SATURN_C_III
419
+ include XML::Mapping
420
+
421
+ object_node :value, '', :class => ICRSType, :optional => false
422
+ end
423
+
424
+ # The planetocentric reference frame anchored on Uranus.
425
+ class URANUS_C_III
426
+ include XML::Mapping
427
+
428
+ object_node :value, '', :class => ICRSType, :optional => false
429
+ end
430
+
431
+ # The planetocentric reference frame anchored on Neptune.
432
+ class NEPTUNE_C_III
433
+ include XML::Mapping
434
+
435
+ object_node :value, '', :class => ICRSType, :optional => false
436
+ end
437
+
438
+ # The planetographic reference frame anchored on Pluto.
439
+ class PLUTO_C
440
+ include XML::Mapping
441
+
442
+ object_node :value, '', :class => ICRSType, :optional => false
443
+ end
444
+
445
+ # The planetographic reference frame anchored on Mercury.
446
+ class MERCURY_G
447
+ include XML::Mapping
448
+
449
+ object_node :value, '', :class => ICRSType, :optional => false
450
+ end
451
+
452
+ # The planetographic reference frame anchored on Venus.
453
+ class VENUS_G
454
+ include XML::Mapping
455
+
456
+ object_node :value, '', :class => ICRSType, :optional => false
457
+ end
458
+
459
+ # The lunagraphic reference frame anchored on the moon.
460
+ class LUNA_G
461
+ include XML::Mapping
462
+
463
+ object_node :value, '', :class => ICRSType, :optional => false
464
+ end
465
+
466
+ # The planetographic reference frame anchored on Mars.
467
+ class MARS_G
468
+ include XML::Mapping
469
+
470
+ object_node :value, '', :class => ICRSType, :optional => false
471
+ end
472
+
473
+ # The planetographic reference frame anchored on Jupiter.
474
+ class JUPITER_G_III
475
+ include XML::Mapping
476
+
477
+ object_node :value, '', :class => ICRSType, :optional => false
478
+ end
479
+
480
+ # The planetographic reference frame anchored on Saturn.
481
+ class SATURN_G_III
482
+ include XML::Mapping
483
+
484
+ object_node :value, '', :class => ICRSType, :optional => false
485
+ end
486
+
487
+ # The planetographic reference frame anchored on Uranus.
488
+ class URANUS_G_III
489
+ include XML::Mapping
490
+
491
+ object_node :value, '', :class => ICRSType, :optional => false
492
+ end
493
+
494
+ # The planetographic reference frame anchored on Neptune.
495
+ class NEPTUNE_G_III
496
+ include XML::Mapping
497
+
498
+ object_node :value, '', :class => ICRSType, :optional => false
499
+ end
500
+
501
+ # The planetographic reference frame anchored on Pluto.
502
+ class PLUTO_G
503
+ include XML::Mapping
504
+
505
+ object_node :value, '', :class => ICRSType, :optional => false
506
+ end
507
+
508
+ # Unknown space reference frame; the client is responsible for assigning a default.
509
+ class UnkownFrame
510
+ include XML::Mapping
511
+
512
+ object_node :value, '', :class => ICRSType, :optional => false
513
+ end
514
+
515
+ # Coordinate reference frame: a custom pole (positive Z-axis) and positive X-axis direction.
516
+ class CustomSpaceRefFrame
517
+ include XML::Mapping
518
+
519
+ object_node :value, '', :class => CustomSpaceRefFrameType, :optional => false
520
+ end
521
+
522
+ # If solar system positions are implied anywhere, the planetary ephemeris to be used needs
523
+ # to be provided - usually JPL-DE405 with ICRS and JPL-DE200 with FK5.
524
+ class PlanetaryEphemType
525
+ include XML::Mapping
526
+
527
+ text_enumeration_node :value, '', :optional => false,
528
+ :choices => ['JPL-DE200', 'JPL-DE405']
529
+ end
530
+
531
+ # Abstract type for reference positions.
532
+ class ReferencePositionType
533
+ include XML::Mapping
534
+ end
535
+
536
+ # Type for standard reference positions.
537
+ class StdRefPosType
538
+ object_node :planetary_ephem, 'PlanetaryEphem', :class => PlanetaryEphemType, :optional => true
539
+ end
540
+
541
+ # Type for custom positions: specifies reference origin.
542
+ class CustomRefPosType
543
+ object_node :coord_origin, 'CoordOrigin', :class => AstroCoordsType, :optional => false
544
+ end
545
+
546
+ # Head element from the ReferencePosition substitution group: either a "known place"
547
+ # such as geocenter or barycenter (RefPos), or a position defined in a known coordinate system (CoordOrigin).
548
+ class ReferencePosition; end
549
+
550
+ # Location of the observer/telescope.
551
+ class TOPOCENTER
552
+ include XML::Mapping
553
+
554
+ object_node :value, '', :class => StdRefPosType, :optional => false
555
+ end
556
+
557
+ # Barycenter of the solar system.
558
+ class BARYCENTER
559
+ include XML::Mapping
560
+
561
+ object_node :value, '', :class => StdRefPosType, :optional => false
562
+ end
563
+
564
+ # Center of the sun.
565
+ class HELIOCENTER
566
+ include XML::Mapping
567
+
568
+ object_node :value, '', :class => StdRefPosType, :optional => false
569
+ end
570
+
571
+ # Center of the earth.
572
+ class GEOCENTER
573
+ include XML::Mapping
574
+
575
+ object_node :value, '', :class => StdRefPosType, :optional => false
576
+ end
577
+
578
+ # (Kinematic) Local Standard of Rest (only used for Doppler velocities); equivalent to LSRK.
579
+ class LSR
580
+ include XML::Mapping
581
+
582
+ object_node :value, '', :class => StdRefPosType, :optional => false
583
+ end
584
+
585
+ # Kinematic Local Standard of Rest (only used for Doppler velocities); equivalent to LSR.
586
+ class LSRK
587
+ include XML::Mapping
588
+
589
+ object_node :value, '', :class => StdRefPosType, :optional => false
590
+ end
591
+
592
+ # Dynamic Local Standard of Rest (only used for Doppler velocities).
593
+ class LSRD
594
+ include XML::Mapping
595
+
596
+ object_node :value, '', :class => StdRefPosType, :optional => false
597
+ end
598
+
599
+ # Center of the Galaxy.
600
+ class GALACTICE_CENTER
601
+ include XML::Mapping
602
+
603
+ object_node :value, '', :class => StdRefPosType, :optional => false
604
+ end
605
+
606
+ # Center of the Local Group.
607
+ class LOCAL_GROUP_CENTER
608
+ include XML::Mapping
609
+
610
+ object_node :value, '', :class => StdRefPosType, :optional => false
611
+ end
612
+
613
+ # Center of the Moon.
614
+ class MOON
615
+ include XML::Mapping
616
+
617
+ object_node :value, '', :class => StdRefPosType, :optional => false
618
+ end
619
+
620
+ # Barycenter of the Earth-Moon system.
621
+ class EMBARYCENTER
622
+ include XML::Mapping
623
+
624
+ object_node :value, '', :class => StdRefPosType, :optional => false
625
+ end
626
+
627
+ # Center of Mercury.
628
+ class MERCURY
629
+ include XML::Mapping
630
+
631
+ object_node :value, '', :class => StdRefPosType, :optional => false
632
+ end
633
+
634
+ # Center of Venus.
635
+ class VENUS
636
+ include XML::Mapping
637
+
638
+ object_node :value, '', :class => StdRefPosType, :optional => false
639
+ end
640
+
641
+ # Center of Mars.
642
+ class MARS
643
+ include XML::Mapping
644
+
645
+ object_node :value, '', :class => StdRefPosType, :optional => false
646
+ end
647
+
648
+ # Center of Jupiter.
649
+ class JUPITER
650
+ include XML::Mapping
651
+
652
+ object_node :value, '', :class => StdRefPosType, :optional => false
653
+ end
654
+
655
+ # Center of Saturn.
656
+ class SATURN
657
+ include XML::Mapping
658
+
659
+ object_node :value, '', :class => StdRefPosType, :optional => false
660
+ end
661
+
662
+ # Center of Uranus.
663
+ class URANUS
664
+ include XML::Mapping
665
+
666
+ object_node :value, '', :class => StdRefPosType, :optional => false
667
+ end
668
+
669
+ # Center of Neptune.
670
+ class NEPTUNE
671
+ include XML::Mapping
672
+
673
+ object_node :value, '', :class => StdRefPosType, :optional => false
674
+ end
675
+
676
+ # Center of Pluto.
677
+ class PLUTO
678
+ include XML::Mapping
679
+
680
+ object_node :value, '', :class => StdRefPosType, :optional => false
681
+ end
682
+
683
+ # A relocatable origin, especially useful for simulations.
684
+ class RELOCATABLE
685
+ include XML::Mapping
686
+
687
+ object_node :value, '', :class => StdRefPosType, :optional => false
688
+ end
689
+
690
+ # Unknown origin; the client is responsible for assigning a default.
691
+ class UNKNOWNRefPos
692
+ include XML::Mapping
693
+
694
+ object_node :value, '', :class => StdRefPosType, :optional => false
695
+ end
696
+
697
+ # Origin of the coordinate system, given as a position in another, known, coordinate system.
698
+ class CustomRefPos
699
+ include XML::Mapping
700
+
701
+ object_node :value, '', :class => StdRefPosType, :optional => false
702
+ end
703
+
704
+ # Provides the coordinate definitions: number of axes, SPHERICAL, CARTESIAN, or UNITSPHERE, presence of velocities.
705
+ class CoordFlavorType
706
+ include XML::Mapping
707
+
708
+ numeric_node :coord_naxes, '@coord_naxes', :optional => true, :default_value => 2
709
+
710
+ boolean_node :coord_vel, '@coord_vel', 'true', 'false', :optional => true, :default_value => false
711
+ end
712
+
713
+ # Abstract head element for the CoordFlavor substitution group.
714
+ class CoordFlavor; end
715
+
716
+ # Spherical 2-D (longitude, latitude) or 3-D (long, lat, radius/elevation) coordinates.
717
+ class SPHERICAL
718
+ include XML::Mapping
719
+
720
+ object_node :value, '', :class => CoordFlavorType, :optional => false
721
+ end
722
+
723
+ # Cartesian 1-, 2-, or 3-D coordinates.
724
+ class CARTESIAN
725
+ include XML::Mapping
726
+
727
+ object_node :value, '', :class => CoordFlavorType, :optional => false
728
+ end
729
+
730
+ # 3-D Unit sphere coordinates (direction cosines); in (long,lat), X is in the direction (0,0), Y (pi/2,0), Z (0,pi/2).
731
+ class UNITSPHERE
732
+ include XML::Mapping
733
+
734
+ object_node :value, '', :class => CoordFlavorType, :optional => false
735
+ end
736
+
737
+ # 2-D polar coordinates (radius, posangle).
738
+ class POLAR
739
+ include XML::Mapping
740
+
741
+ object_node :value, '', :class => CoordFlavorType, :optional => false
742
+ end
743
+
744
+ # A spatial coordinate frame consists of a coordinate frame and a reference position.
745
+ class SpaceFrameType
746
+ full_object_node :space_ref_frame, STC::group_member_names(SpaceRefFrame, SubstitutionGroups).join('|'),
747
+ :unmarshaller => STC::dispatch_from_element_name('VORuby::STC::V1_20'),
748
+ :optional => false
749
+ full_object_node :reference_position, STC::group_member_names(ReferencePosition, SubstitutionGroups).join('|'),
750
+ :unmarshaller => STC::dispatch_from_element_name('VORuby::STC::V1_20'),
751
+ :optional => false
752
+ full_object_node :offset_center,
753
+ 'OffsetCenter/(' + STC::group_member_names(CoordValue, STCcoords::V1_20::SubstitutionGroups).join('|') + ')',
754
+ :unmarshaller => VORuby::STC::dispatch_from_element_name('VORuby::STCcoords::V1_20'),
755
+ :optional => true
756
+ full_object_node :coord_flavor, STC::group_member_names(CoordFlavor, SubstitutionGroups).join('|'),
757
+ :unmarshaller => STC::dispatch_from_element_name('VORuby::STC::V1_20'),
758
+ :optional => false
759
+ end
760
+ class SpaceFrame
761
+ include XML::Mapping
762
+
763
+ object_node :value, '', :class => SpaceFrameType, :optional => false
764
+ end
765
+
766
+ # The time reference frame consists of a timescale, a reference position, and optionally
767
+ # a reference direction (needed when transformations have been applied).
768
+ class TimeFrameType
769
+ object_node :time_scale, 'TimeScale', :class => TimeScaleType, :optional => false, :default_value => 'TT'
770
+ object_node :time_ref_direction, 'TimeRefDirection', :class => AstroCoordsType, :optional => true
771
+
772
+ full_object_node :reference_position, STC::group_member_names(ReferencePosition, SubstitutionGroups).join('|'),
773
+ :unmarshaller => STC::dispatch_from_element_name('VORuby::STC::V1_20'),
774
+ :optional => false
775
+ end
776
+ class TimeFrame
777
+ include XML::Mapping
778
+
779
+ object_node :value, '', :class => TimeFrameType, :optional => false
780
+ end
781
+
782
+ # Contains the spectral frame reference position.
783
+ class SpectralFrameType
784
+ full_object_node :reference_position, STC::group_member_names(ReferencePosition, SubstitutionGroups).join('|'),
785
+ :unmarshaller => STC::dispatch_from_element_name('VORuby::STC::V1_20'),
786
+ :optional => false
787
+ end
788
+ class SpectralFrame
789
+ include XML::Mapping
790
+
791
+ object_node :value, '', :class => SpectralFrameType, :optional => false
792
+ end
793
+
794
+ # The Doppler definition used: optical, radio, or pseudo-relativistic (i.e., how is a
795
+ # redshift converted to a velocity); the most common is optical, except when the reference is LSR (usually radio).
796
+ class DopplerDefinitionType
797
+ include XML::Mapping
798
+
799
+ text_enumeration_node :value, '', :optional => false,
800
+ :choices => ['OPTICAL', 'RADIO', 'RELATIVISTIC']
801
+ end
802
+
803
+ # Contains the Doppler definitions, including whether the values are velocity or redshift (value_type).
804
+ class RedshiftFrameType
805
+ text_enumeration_node :value_type, '@value_type', :optional => true, :default_value => 'VELOCITY',
806
+ :choices => ['VELOCITY', 'REDSHIFT']
807
+
808
+ object_node :doppler_definition, 'DopplerDefinition', :class => DopplerDefinitionType, :optional => false
809
+
810
+ full_object_node :reference_position, STC::group_member_names(ReferencePosition, SubstitutionGroups).join('|'),
811
+ :unmarshaller => STC::dispatch_from_element_name('VORuby::STC::V1_20'),
812
+ :optional => false
813
+ end
814
+ class RedshiftFrame
815
+ include XML::Mapping
816
+
817
+ object_node :value, '', :class => RedshiftFrameType, :optional => false
818
+ end
819
+
820
+ # A CoordSys consists of at least one coordinate frames.
821
+ class CoordSysType
822
+ include XML::Mapping
823
+
824
+ text_node :coord_sys_type_id, '@ID', :optional => false
825
+
826
+ object_node :time_frame, 'TimeFrame', :class => TimeFrame, :optional => true
827
+ object_node :space_frame, 'SpaceFrame', :class => SpaceFrame, :optional => true
828
+ object_node :spectral_frame, 'SpectralFrame', :class => SpectralFrame, :optional => true
829
+ object_node :redshift_frame, 'RedshiftFrame', :class => RedshiftFrame, :optional => true
830
+
831
+ full_array_node :coord_frames, STC::group_member_names(CoordFrame, SubstitutionGroups).join('|'),
832
+ :unmarshaller => STC::dispatch_from_element_name('VORuby::STC::V1_20'),
833
+ :optional => true, :default_value => []
834
+ end
835
+ class CoordSys
836
+ include XML::Mapping
837
+
838
+ object_node :value, '', :class => CoordSysType, :optional => false
839
+ end
840
+
841
+ # Element for pixel Coordinate Frames.
842
+ class PixelCoordFrame
843
+ include XML::Mapping
844
+
845
+ object_node :value, '', :class => CoordFrameType, :optional => false
846
+ end
847
+
848
+ # Element for generic Coordinate Frames.
849
+ class GenericCoordFrame
850
+ include XML::Mapping
851
+
852
+ object_node :value, '', :class => CoordFrameType, :optional => false
853
+ end
854
+
855
+ # The astronomical coordinate system definition: spatial coordinate frame and reference position;
856
+ # time frame and reference position; the coordinate flavor; spectral frame and (optionally) Doppler
857
+ # frame; and the planetary ephemeris; an ID is required, since this is how coordinate elements are
858
+ # associated with their coordinate systems.
859
+ class AstroCoordSystemType
860
+ text_node :coord_sys_type_id, '@ID', :optional => false
861
+
862
+ object_node :time_frame, 'TimeFrame', :class => TimeFrame, :optional => true
863
+ object_node :space_frame, 'SpaceFrame', :class => SpaceFrame, :optional => true
864
+ object_node :spectral_frame, 'SpectralFrame', :class => SpectralFrame, :optional => true
865
+ object_node :redshift_frame, 'RedshiftFrame', :class => RedshiftFrame, :optional => true
866
+
867
+ array_node :generic_coord_frames, 'GenericCoordFrame', :class => GenericCoordFrame, :optional => true,
868
+ :default_value => []
869
+ end
870
+ class AstroCoordSystem
871
+ include XML::Mapping
872
+
873
+ object_node :value, '', :class => AstroCoordSystemType, :optional => false
874
+ end
875
+
876
+ # The pixel coordinate system definition.
877
+ class PixelCoordSystemType
878
+ text_node :coord_sys_type_id, '@ID', :optional => false
879
+
880
+ array_node :pixel_coord_frames, 'PixelCoordFrame', :class => PixelCoordFrame, :optional => false
881
+ end
882
+ class PixelCoordSystem
883
+ include XML::Mapping
884
+
885
+ object_node :value, '', :class => PixelCoordSystemType, :optional => false
886
+ end
887
+
888
+ # Abstact coordinate interval type.
889
+ class CoordIntervalType
890
+ include XML::Mapping
891
+
892
+ boolean_node :lo_include, '@lo_include', 'true', 'false', :optional => false, :default_value => true
893
+ boolean_node :hi_include, '@hi_include', 'true', 'false', :optional => false, :default_value => true
894
+
895
+ numeric_node :fill_factor, '@fill_factor', :optional => true, :default_value => 1.0
896
+ end
897
+ class CoordInterval; end
898
+
899
+ # The time interval needs to contain a start time or a stop time or both;
900
+ # it needs to refer to a coordinate system; boundaries may or may not be inclusive.
901
+ class TimeIntervalType
902
+ object_node :start_time, 'StartTime', :class => AstronTimeType, :optional => true
903
+ object_node :end_time, 'EndTime', :class => AstronTimeType, :optional => true
904
+ end
905
+
906
+ # Scalar coordinate interval type.
907
+ class CoordScalarIntervalType
908
+ numeric_node :lo_limit, 'LoLimit', :optional => true
909
+ numeric_node :hi_limit, 'HiLimit', :optional => true
910
+ end
911
+ class CoordScalarInterval
912
+ include XML::Mapping
913
+
914
+ object_node :value, '', :class => CoordScalarIntervalType, :optional => false
915
+ end
916
+
917
+ # 2-D coordinate interval type.
918
+ class Coord2VecIntervalType
919
+ object_node :lo_limit_2vec, 'LoLimit2Vec', :class => Double2Type, :optional => true
920
+ object_node :hi_limit_2vec, 'HiLimit2Vec', :class => Double2Type, :optional => true
921
+ end
922
+ class Coord2VecInterval
923
+ include XML::Mapping
924
+
925
+ object_node :value, '', :class => Coord2VecIntervalType, :optional => true
926
+ end
927
+
928
+ # 3-D coordinate interval type.
929
+ class Coord3VecIntervalType
930
+ object_node :lo_limit_3vec, 'LoLimit3Vec', :class => Double3Type, :optional => true
931
+ object_node :hi_limit_3vec, 'HiLimit3Vec', :class => Double3Type, :optional => true
932
+ end
933
+ class Coord3VecInterval
934
+ include XML::Mapping
935
+
936
+ object_node :value, '', :class => Coord3VecIntervalType, :optional => false
937
+ end
938
+
939
+ # Parent type for spatial intervals.
940
+ class SpatialIntervalType
941
+ include XML::Mapping
942
+ end
943
+
944
+ # The spatial interval substitution group head element; a spatial coordinate interval
945
+ # (volume) is specified as a circle (cone) or sphere; a 1-D, 2-D, or 3-D interval; a Region;
946
+ # or a RegionFile.
947
+ class SpatialInterval
948
+ include XML::Mapping
949
+
950
+ object_node :value, '', :class => SpatialIntervalType, :optional => false
951
+ end
952
+
953
+ # Defines a sphere.
954
+ class SphereType
955
+ numeric_node :radius, 'Radius', :optional => false
956
+ numeric_node :fill_factor, '@fill_factor', :optional => true, :default => 1.0
957
+
958
+ object_node :center, 'Center', :class => Double3Type, :optional => false
959
+ object_node :unit, '@unit', :class => PosUnitType, :optional => false
960
+ object_node :radius_unit, '@radius_unit', :class => PosUnitType, :optional => true, :default_value => 'deg'
961
+ end
962
+ class Sphere
963
+ include XML::Mapping
964
+
965
+ object_node :value, '', :class => SphereType, :optional => false
966
+ end
967
+
968
+ # Defines a velocity sphere.
969
+ class VelocitySphereType
970
+ object_node :vel_time_unit, '@vel_time_unit', :class => VelTimeUnitType, :optional => false
971
+ end
972
+ class VelocitySphere
973
+ include XML::Mapping
974
+
975
+ object_node :value, '', :class => VelocitySphereType, :optional => false
976
+ end
977
+
978
+ # Contains a spatial position CoordInterval.
979
+ class PositionIntervalType
980
+ object_node :unit, '@unit', :class => PosUnitType, :optional => false
981
+
982
+ full_object_node :coord_interval, STC::group_member_names(CoordInterval, SubstitutionGroups).join('|'),
983
+ :unmarshaller => STC::dispatch_from_element_name('VORuby::STC::V1_20'),
984
+ :optional => false
985
+ end
986
+ class PositionInterval
987
+ include XML::Mapping
988
+
989
+ object_node :value, '', :class => PositionIntervalType, :optional => false
990
+ end
991
+
992
+ # Contains a spatial velocity CoordInterval.
993
+ class VelocityIntervalType
994
+ object_node :vel_time_unit, '@vel_time_unit', :class => VelTimeUnitType, :optional => false
995
+ end
996
+ class VelocityInterval
997
+ include XML::Mapping
998
+
999
+ object_node :value, '', :class => VelocityIntervalType, :optional => false
1000
+ end
1001
+
1002
+ # Points to a Region file.
1003
+ class RegionFileType
1004
+ object_node :file, 'File', :class => Resources::VOResource::V0_10::AnyURI, :optional => false
1005
+ end
1006
+ class RegionFile
1007
+ include XML::Mapping
1008
+
1009
+ object_node :value, '', :class => RegionFileType, :optional => false
1010
+ end
1011
+
1012
+ # Contains an abstract Region.
1013
+ class RegionType
1014
+ full_object_node :region, STC::group_member_names(Region, STCregion::V1_20::SubstitutionGroups).join('|'),
1015
+ :unmarshaller => STC::dispatch_from_element_name('VORuby::STCregion::V1_20'),
1016
+ :optional => true
1017
+ end
1018
+ class Region
1019
+ include XML::Mapping
1020
+
1021
+ object_node :value, '', :class => RegionType, :optional => false
1022
+ end
1023
+
1024
+ # Contains a Velocity CoordInterval element: a 1-D range, 2-D box, or 3-D cube; plus a time unit for velocity values.
1025
+ class VelInterval; end
1026
+
1027
+ # Contains a 1-D spectral interval.
1028
+ class SpectralIntervalType
1029
+ object_node :unit, '@unit', :class => SpectralUnitType, :optional => false
1030
+ end
1031
+
1032
+ # Contains a 1-D redshift interval; position and time units are required if redshifts are expressed as Doppler velocities.
1033
+ class RedshiftIntervalType
1034
+ object_node :unit, '@unit', :class => PosUnitType, :optional => true
1035
+ object_node :vel_time_unit, '@vel_time_unit', :class => VelTimeUnitType, :optional => true
1036
+ end
1037
+
1038
+ class CoordAreaType
1039
+ include XML::Mapping
1040
+
1041
+ text_node :coord_area_id, '@ID', :optional => false
1042
+ text_node :coord_system_id, '@coord_system_id', :optional => false
1043
+
1044
+ full_object_node :spatial_interval, STC::group_member_names(SpatialInterval, SubstitutionGroups).join('|'),
1045
+ :unmarshaller => STC::dispatch_from_element_name('VORuby::STC::V1_20'),
1046
+ :optional => true
1047
+
1048
+ array_node :time_intervals, 'TimeInterval', :class => TimeIntervalType, :optional => true, :default_value => []
1049
+ array_node :spectral_intervals, 'SpectralInterval', :class => SpectralIntervalType, :optional => true, :default_value => []
1050
+ array_node :redshift_intervals, 'RedshiftInterval', :class => RedshiftIntervalType, :optional => true, :default_value => []
1051
+
1052
+ full_array_node :vel_intervals, STC::group_member_names(VelInterval, SubstitutionGroups).join('|'),
1053
+ :unmarshaller => STC::dispatch_from_element_name('VORuby::STC::V1_20'),
1054
+ :optional => true, :default_value => []
1055
+ full_array_node :coord_intervals, STC::group_member_names(CoordInterval, SubstitutionGroups).join('|'),
1056
+ :unmarshaller => STC::dispatch_from_element_name('VORuby::STC::V1_20'),
1057
+ :optional => true, :default_value => []
1058
+ end
1059
+
1060
+ # Astronomical area type.
1061
+ class AstroCoordAreaType
1062
+ array_node :coord_intervals, 'CoordScalarInterval', :class => CoordScalarInterval, :optional => true
1063
+ end
1064
+ class AstroCoordArea
1065
+ include XML::Mapping
1066
+
1067
+ object_node :value, '', :class => AstroCoordAreaType, :optional => false
1068
+ end
1069
+
1070
+ # Pixel area type.
1071
+ class PixelCoordAreaType
1072
+ array_node :coord_intervals, 'CoordScalarInterval', :class => CoordScalarInterval, :optional => false
1073
+ end
1074
+ class PixelCoordArea
1075
+ include XML::Mapping
1076
+
1077
+ object_node :value, '', :class => PixelCoordAreaType, :optional => false
1078
+ end
1079
+
1080
+ # General coordinate area description; head element but not abstract.
1081
+ class CoordArea; end
1082
+
1083
+ # Abstract stcMetadata type.
1084
+ class STCMetadataType
1085
+ include XML::Mapping
1086
+
1087
+ text_node :type_id, '@ID', :optional => true
1088
+ end
1089
+ class STCMetadata
1090
+ include XML::Mapping
1091
+
1092
+ object_node :value, '', :class => STCMetadataType, :optional => false
1093
+ end
1094
+
1095
+ # Generalized single stcMetadata type.
1096
+ class STCDescriptionType
1097
+ full_array_node :coord_sys, STC::group_member_names(CoordSys, SubstitutionGroups).join('|'),
1098
+ :unmarshaller => STC::dispatch_from_element_name('VORuby::STC::V1_20'),
1099
+ :optional => false
1100
+ full_array_node :coords, STC::group_member_names(Coords, STCcoords::V1_20::SubstitutionGroups).join('|'),
1101
+ :unmarshaller => STC::dispatch_from_element_name('VORuby::STCcoords::V1_20'),
1102
+ :optional => true, :default_value => []
1103
+ full_array_node :coord_areas, STC::group_member_names(CoordArea, SubstitutionGroups).join('|'),
1104
+ :unmarshaller => STC::dispatch_from_element_name('VORuby::STC::V1_20'),
1105
+ :optional => true, :default_value => []
1106
+ end
1107
+
1108
+ # Type for STC Resource Profile.
1109
+ class STCResourceProfileType
1110
+ include XML::Mapping
1111
+
1112
+ text_node :type_id, '@ID', :optional => true
1113
+
1114
+ array_node :coord_sys, 'AstroCoordSystem', :class => AstroCoordSystem, :optional => false
1115
+ array_node :coords, 'AstroCoords', :class => AstroCoords, :optional => false
1116
+ array_node :coord_area, 'AstroCoordArea', :class => AstroCoordArea, :optional => false
1117
+ end
1118
+ class STCResourceProfile
1119
+ include XML::Mapping
1120
+
1121
+ object_node :value, '', :class => STCResourceProfileType, :optional => false
1122
+ end
1123
+
1124
+ # Type for STC search location.
1125
+ class SearchLocationType
1126
+ text_node :type_id, '@ID', :optional => true
1127
+
1128
+ array_node :coord_sys, 'AstroCoordSystem', :class => AstroCoordSystem, :optional => false
1129
+ array_node :coords, 'AstroCoords', :class => AstroCoords, :optional => true, :default_value => []
1130
+
1131
+ object_node :coord_area, 'AstroCoordArea', :class => AstroCoordArea, :optional => false
1132
+ end
1133
+ class SearchLocation
1134
+ include XML::Mapping
1135
+
1136
+ object_node :value, '', :class => SearchLocationType, :optional => false
1137
+ end
1138
+
1139
+ # Type for STC catalog entry description.
1140
+ class CatalogEntryLocationType
1141
+ text_node :type_id, '@ID', :optional => true
1142
+
1143
+ array_node :coord_sys, 'AstroCoordSystem', :class => AstroCoordSystem, :optional => false
1144
+ array_node :coords, 'AstroCoords', :class => AstroCoords, :optional => false
1145
+ array_node :coord_area, 'AstroCoordArea', :class => AstroCoordArea, :optional => true, :default_value => []
1146
+ end
1147
+ class CatalogEntryLocation
1148
+ include XML::Mapping
1149
+
1150
+ object_node :value, '', :class => CatalogEntryLocationType, :optional => false
1151
+ end
1152
+
1153
+ # Type for observational STC metadata.
1154
+ class ObsDataLocationType
1155
+ object_node :observatory_location, 'ObservatoryLocation', :class => ObservatoryLocationType, :optional => false
1156
+ object_node :observation_location, 'ObservationLocation', :class => ObservationLocationType, :optional => false
1157
+ object_node :pixel_space, 'PixelSpace', :class => PixelSpaceType, :optional => true
1158
+ end
1159
+ class ObsDataLocation
1160
+ include XML::Mapping
1161
+
1162
+ object_node :value, '', :class => ObsDataLocationType, :optional => false
1163
+ end
1164
+
1165
+ # Type for an observatory location.
1166
+ class ObservatoryLocationType
1167
+ text_node :type_id, '@ID', :optional => true
1168
+
1169
+ array_node :coord_sys, 'AstroCoordSystem', :class => AstroCoordSystem, :optional => false
1170
+
1171
+ object_node :coords, 'AstroCoords', :class => AstroCoords, :optional => false
1172
+ end
1173
+
1174
+ # Type for describing the coordinate volume occupied by observational data, as seen from the observatory location.
1175
+ class ObservationLocationType
1176
+ text_node :type_id, '@ID', :optional => true
1177
+
1178
+ array_node :coord_sys, 'AstroCoordSystem', :class => AstroCoordSystem, :optional => false
1179
+
1180
+ object_node :coords, 'AstroCoords', :class => AstroCoords, :optional => false
1181
+ object_node :coord_area, 'AstroCoordArea', :class => AstroCoordArea, :optional => true
1182
+ end
1183
+
1184
+ # Type to specify a pixel space.
1185
+ class PixelSpaceType
1186
+ text_node :type_id, '@ID', :optional => true
1187
+
1188
+ object_node :coord_sys, 'PixelCoordSystem', :class => PixelCoordSystem, :optional => false
1189
+ object_node :coord_area, 'PixelCoordArea', :class => PixelCoordArea, :optional => false
1190
+
1191
+ array_node :coords, 'PixelCoords', :class => PixelCoords, :optional => true
1192
+ end
1193
+
1194
+ end
1195
+ end
1196
+ end