voruby 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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