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.
- data/LICENSE +339 -0
- data/REQUIREMENTS +4 -0
- data/Rakefile.rb +296 -0
- data/lib/voruby/adql/adql.rb +2735 -0
- data/lib/voruby/adql/ext.rb +15 -0
- data/lib/voruby/adql/loader.rb +5 -0
- data/lib/voruby/adql/operations.rb +54 -0
- data/lib/voruby/adql/parser.rb +160 -0
- data/lib/voruby/adql/transforms.rb +573 -0
- data/lib/voruby/ext.rb +17 -0
- data/lib/voruby/loader.rb +4 -0
- data/lib/voruby/misc/propertyfile.rb +36 -0
- data/lib/voruby/plastic/applications.rb +174 -0
- data/lib/voruby/plastic/constants.rb +30 -0
- data/lib/voruby/plastic/loader.rb +10 -0
- data/lib/voruby/plastic/plastic.rb +1 -0
- data/lib/voruby/resources/conesearch/conesearch.rb +9 -0
- data/lib/voruby/resources/conesearch/conesearch_v0_2.rb +55 -0
- data/lib/voruby/resources/conesearch/conesearch_v0_3.rb +50 -0
- data/lib/voruby/resources/conesearch/conesearch_v1_0.rb +72 -0
- data/lib/voruby/resources/conesearch/loader.rb +4 -0
- data/lib/voruby/resources/loader.rb +50 -0
- data/lib/voruby/resources/nodes.rb +190 -0
- data/lib/voruby/resources/openskynode/loader.rb +4 -0
- data/lib/voruby/resources/openskynode/openskynode.rb +9 -0
- data/lib/voruby/resources/openskynode/openskynode_v0_1.rb +54 -0
- data/lib/voruby/resources/sia/loader.rb +5 -0
- data/lib/voruby/resources/sia/sia.rb +9 -0
- data/lib/voruby/resources/sia/sia_v0_6.rb +90 -0
- data/lib/voruby/resources/sia/sia_v0_7.rb +89 -0
- data/lib/voruby/resources/sia/sia_v1_0.rb +122 -0
- data/lib/voruby/resources/stsci.rb +59 -0
- data/lib/voruby/resources/vodataservice/coverage_v0_2.rb +195 -0
- data/lib/voruby/resources/vodataservice/coverage_v0_3.rb +158 -0
- data/lib/voruby/resources/vodataservice/loader.rb +5 -0
- data/lib/voruby/resources/vodataservice/vodataservice.rb +9 -0
- data/lib/voruby/resources/vodataservice/vodataservice_v0_4.rb +189 -0
- data/lib/voruby/resources/vodataservice/vodataservice_v0_5.rb +163 -0
- data/lib/voruby/resources/vodataservice/vodataservice_v1_0.rb +221 -0
- data/lib/voruby/resources/voregistry/loader.rb +4 -0
- data/lib/voruby/resources/voregistry/voregistry.rb +9 -0
- data/lib/voruby/resources/voregistry/voregistry_v0_2.rb +40 -0
- data/lib/voruby/resources/voregistry/voregistry_v0_3.rb +30 -0
- data/lib/voruby/resources/voregistry/voregistry_v1_0.rb +86 -0
- data/lib/voruby/resources/voresource/loader.rb +17 -0
- data/lib/voruby/resources/voresource/voresource.rb +9 -0
- data/lib/voruby/resources/voresource/voresource_v0_10.rb +322 -0
- data/lib/voruby/resources/voresource/voresource_v0_9.rb +405 -0
- data/lib/voruby/resources/voresource/voresource_v1_0.rb +230 -0
- data/lib/voruby/services/ext.rb +11 -0
- data/lib/voruby/services/gestalt/footprint.rb +95 -0
- data/lib/voruby/services/gestalt/wcs_fixer.rb +105 -0
- data/lib/voruby/services/gestalt/wesix.rb +155 -0
- data/lib/voruby/services/loader.rb +7 -0
- data/lib/voruby/services/registry/registry.rb +53 -0
- data/lib/voruby/services/resolver/resolver.rb +35 -0
- data/lib/voruby/sesame/loader.rb +6 -0
- data/lib/voruby/sesame/sesame_v1_0.rb +64 -0
- data/lib/voruby/simple/loader.rb +6 -0
- data/lib/voruby/simple/parameters.rb +196 -0
- data/lib/voruby/simple/sap.rb +446 -0
- data/lib/voruby/spacetime/loader.rb +3 -0
- data/lib/voruby/spacetime/spacetime.rb +607 -0
- data/lib/voruby/stc/coords_v1_20.rb +900 -0
- data/lib/voruby/stc/loader.rb +55 -0
- data/lib/voruby/stc/region_v1_20.rb +274 -0
- data/lib/voruby/stc/stc_v1_20.rb +1196 -0
- data/lib/voruby/util.rb +27 -0
- data/lib/voruby/voevent/loader.rb +7 -0
- data/lib/voruby/voevent/voevent_v1_0.rb +213 -0
- data/lib/voruby/voevent/voevent_v1_1.rb +196 -0
- data/lib/voruby/votables/chandra.rb +410 -0
- data/lib/voruby/votables/cnoc.rb +393 -0
- data/lib/voruby/votables/data.rb +179 -0
- data/lib/voruby/votables/galex.rb +390 -0
- data/lib/voruby/votables/hst.rb +391 -0
- data/lib/voruby/votables/int.rb +391 -0
- data/lib/voruby/votables/libxml_parser.rb +411 -0
- data/lib/voruby/votables/libxml_votable.rb +67 -0
- data/lib/voruby/votables/loader.rb +10 -0
- data/lib/voruby/votables/meta.rb +763 -0
- data/lib/voruby/votables/misc.rb +51 -0
- data/lib/voruby/votables/nsa.rb +393 -0
- data/lib/voruby/votables/nsar3.rb +410 -0
- data/lib/voruby/votables/rexml_parser.rb +408 -0
- data/lib/voruby/votables/rexml_votable.rb +67 -0
- data/lib/voruby/votables/sdss.rb +393 -0
- data/lib/voruby/votables/transforms.rb +388 -0
- data/lib/voruby/votables/tree.rb +45 -0
- data/lib/voruby/votables/types.rb +391 -0
- data/lib/voruby/votables/votable.rb +630 -0
- data/lib/voruby/votables/xmm.rb +394 -0
- data/test/adql/test1.adql +49 -0
- data/test/adql/test2.adql +51 -0
- data/test/adql/test3.adql +81 -0
- data/test/adql/test4.adql +53 -0
- data/test/adql/test5.adql +55 -0
- data/test/adql/test6.adql +18 -0
- data/test/adql/test7.adql +48 -0
- data/test/adql/unittest.rb +1672 -0
- data/test/plastic/test.rb +44 -0
- data/test/plastic/test.vot +5385 -0
- data/test/plastic/unittest.rb +66 -0
- data/test/resources/conesearch/conesearch_v0_3.xml +31 -0
- data/test/resources/conesearch/conesearch_v1_0.xml +86 -0
- data/test/resources/conesearch/unittest_v0_3.rb +22 -0
- data/test/resources/conesearch/unittest_v1_0.rb +24 -0
- data/test/resources/openskynode/open_sky_node_v0_1.xml +32 -0
- data/test/resources/openskynode/unittest_v0_1.rb +31 -0
- data/test/resources/sia/simple_image_access_v0_7.xml +36 -0
- data/test/resources/sia/simple_image_access_v1_0.xml +122 -0
- data/test/resources/sia/unittest_v0_7.rb +24 -0
- data/test/resources/sia/unittest_v1_0.rb +29 -0
- data/test/resources/stsci.xml +336 -0
- data/test/resources/unittest_stsci.rb +25 -0
- data/test/resources/vodataservice/catalog_service_resource_v1_0.xml +128 -0
- data/test/resources/vodataservice/data_collection_resource_v0_5.xml +54 -0
- data/test/resources/vodataservice/data_collection_resource_v1_0.xml +117 -0
- data/test/resources/vodataservice/data_service_resource_v1_0.xml +115 -0
- data/test/resources/vodataservice/sky_service_resource_v0_10.xml +45 -0
- data/test/resources/vodataservice/table_service_resource_v1_0.xml +122 -0
- data/test/resources/vodataservice/tabular_sky_service_resource_v0_10.xml +60 -0
- data/test/resources/vodataservice/unittest_v0_5.rb +126 -0
- data/test/resources/vodataservice/unittest_v1_0.rb +151 -0
- data/test/resources/voregistry/authority_resource_v0_3.xml +20 -0
- data/test/resources/voregistry/authority_resource_v1_0.xml +82 -0
- data/test/resources/voregistry/registry_service_v0_3.xml +20 -0
- data/test/resources/voregistry/registry_service_v1_0.xml +107 -0
- data/test/resources/voregistry/unittest_v0_3.rb +31 -0
- data/test/resources/voregistry/unittest_v1_0.rb +34 -0
- data/test/resources/voresource/organisation_resource_v1_0.xml +90 -0
- data/test/resources/voresource/resource_organisation_v0_10.xml +22 -0
- data/test/resources/voresource/resource_service_v0_10.xml +19 -0
- data/test/resources/voresource/resource_v0_10.xml +19 -0
- data/test/resources/voresource/resource_v1_0.xml +79 -0
- data/test/resources/voresource/service_resource_v1_0.xml +91 -0
- data/test/resources/voresource/unittest_v0_10.rb +61 -0
- data/test/resources/voresource/unittest_v0_9.rb +4 -0
- data/test/resources/voresource/unittest_v1_0.rb +190 -0
- data/test/services/gestalt/unittest.rb +74 -0
- data/test/services/registry/unittest.rb +34 -0
- data/test/services/resolver/unittest.rb +38 -0
- data/test/simple/unittest.rb +46 -0
- data/test/spacetime/unittest.rb +39 -0
- data/test/stc/catalog_entry_location_v1_20.xml +112 -0
- data/test/stc/obs_data_location_v1_20.xml +108 -0
- data/test/stc/search_location_v1_20.xml +54 -0
- data/test/stc/stc_resource_profile_v1_20.xml +60 -0
- data/test/stc/unittest_v1_20.rb +620 -0
- data/test/voevent/unittest_v1_0.rb +79 -0
- data/test/voevent/unittest_v1_1.rb +70 -0
- data/test/voevent/voevent_v1_0.xml +96 -0
- data/test/voevent/voevent_v1_1.xml +76 -0
- data/test/votables/test.vot +366 -0
- data/test/votables/unittest.rb +54 -0
- metadata +256 -0
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'xml/mapping'
|
3
|
+
|
4
|
+
require 'voruby/loader'
|
5
|
+
|
6
|
+
require 'voruby/resources/nodes'
|
7
|
+
require 'voruby/resources/voresource/voresource_v0_10'
|
8
|
+
|
9
|
+
module VORuby
|
10
|
+
module STC
|
11
|
+
def self.dispatch_from_element_name(ns, override=nil)
|
12
|
+
Proc.new{ |xml|
|
13
|
+
name = (override)? override.call(xml.name): xml.name
|
14
|
+
eval("#{ns}::#{name}.load_from_xml(xml)")
|
15
|
+
}
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.expand_group(sub_groups, group, expanded=[])
|
19
|
+
group_name = (group.is_a?(String))? group: group.to_s.split('::')[-1]
|
20
|
+
return if !sub_groups.has_key?(group_name)
|
21
|
+
|
22
|
+
sub_groups[group_name].each do |klass|
|
23
|
+
expanded.push(klass)
|
24
|
+
|
25
|
+
klass_name = klass.name.split('::')[-1]
|
26
|
+
if sub_groups.has_key?(klass_name)
|
27
|
+
sub_groups[klass_name].each do |sub_klass|
|
28
|
+
expanded.push(sub_klass)
|
29
|
+
|
30
|
+
sub_klass_name = sub_klass.name.split('::')[-1]
|
31
|
+
expand_group(sub_groups, sub_klass, expanded)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
return expanded
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.group_members(sub_groups, group)
|
40
|
+
group_name = (group.is_a?(String))? group: group.to_s.split('::')[-1]
|
41
|
+
raise "Substition group #{group_name} does not exist" if !sub_groups.has_key?(group_name)
|
42
|
+
|
43
|
+
return STC::expand_group(sub_groups, group)
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.group_member_names(group, sub_groups, nsprefix=nil)
|
47
|
+
return STC::group_members(sub_groups, group).collect{ |klass|
|
48
|
+
element_name = klass.name.split('::')[-1]
|
49
|
+
element_name = "#{nsprefix}:#{element_name}" if nsprefix
|
50
|
+
element_name
|
51
|
+
}
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,274 @@
|
|
1
|
+
require 'voruby/stc/loader'
|
2
|
+
|
3
|
+
require 'voruby/stc/coords_v1_20'
|
4
|
+
include VORuby::STCcoords::V1_20
|
5
|
+
|
6
|
+
module VORuby
|
7
|
+
module STCregion
|
8
|
+
module V1_20
|
9
|
+
|
10
|
+
# Forward declarations
|
11
|
+
class RegionType; end
|
12
|
+
class Region; end
|
13
|
+
class ShapeType < RegionType; end
|
14
|
+
class CircleType < ShapeType; end
|
15
|
+
class EllipseType < CircleType; end
|
16
|
+
class SmallCircleType; end
|
17
|
+
class VertexType; end
|
18
|
+
class PolygonType < ShapeType; end
|
19
|
+
class BoxType < ShapeType; end
|
20
|
+
class SectorType < ShapeType; end
|
21
|
+
class ConstraintType; end
|
22
|
+
class ConvexType < ShapeType; end
|
23
|
+
class ConvexHullType < ShapeType; end
|
24
|
+
class SkyIndexType < ShapeType; end
|
25
|
+
class UnionType < RegionType; end
|
26
|
+
class Union; end
|
27
|
+
class IntersectionType < RegionType; end
|
28
|
+
class Intersection; end
|
29
|
+
class NegationType < RegionType; end
|
30
|
+
class Negation; end
|
31
|
+
class AllSky; end
|
32
|
+
class Circle; end
|
33
|
+
class Ellipse; end
|
34
|
+
class Polygon; end
|
35
|
+
class Box; end
|
36
|
+
class Sector; end
|
37
|
+
class Convex; end
|
38
|
+
class ConvexHull; end
|
39
|
+
class SkyIndex; end
|
40
|
+
|
41
|
+
SubstitutionGroups = {
|
42
|
+
'Region' => [Intersection, Union, Negation, AllSky, Circle, Ellipse, Polygon, Box, Sector, Convex, ConvexHull, SkyIndex]
|
43
|
+
}
|
44
|
+
|
45
|
+
# Region is the base type for everything.
|
46
|
+
class RegionType
|
47
|
+
include XML::Mapping
|
48
|
+
|
49
|
+
# the fill_factor (value between 0 and 1) indicates the fraction of the region that is actually included;
|
50
|
+
# possible application: large scale resource coverage areas
|
51
|
+
numeric_node :fill_factor, '@fill_factor', :optional => true, :default_value => 1.0
|
52
|
+
text_node :note, '@note', :optional => true
|
53
|
+
end
|
54
|
+
|
55
|
+
# Head element of the Region substitution group.
|
56
|
+
class Region
|
57
|
+
include XML::Mapping
|
58
|
+
|
59
|
+
object_node :value, '', :class => RegionType, :optional => false
|
60
|
+
end
|
61
|
+
|
62
|
+
# Shape is the abstract type that is the building block of regions; in real life it needs to be replaced by a concrete shape.
|
63
|
+
class ShapeType
|
64
|
+
object_node :unit, '@unit', :class => PosUnitType, :optional => true, :default_value => 'deg'
|
65
|
+
end
|
66
|
+
|
67
|
+
# Circle shape: center and radius.
|
68
|
+
class CircleType
|
69
|
+
# the radius of the circle
|
70
|
+
numeric_node :radius, 'Radius', :optional => false
|
71
|
+
|
72
|
+
# the coordinates of the circle's center
|
73
|
+
object_node :center, 'Center', :class => Double2Type, :optional => false
|
74
|
+
end
|
75
|
+
|
76
|
+
# Ellipse shape: adds semi-minor axis and position angle to circleType.
|
77
|
+
class EllipseType
|
78
|
+
# half the minor axis of the ellipse, in radius_unit
|
79
|
+
numeric_node :minor_radius, 'MinorRadius', :optional => false
|
80
|
+
|
81
|
+
# position angle of major axis (Radius)
|
82
|
+
object_node :pos_angle, 'PosAngle', :class => PosAngleType, :optional => false
|
83
|
+
end
|
84
|
+
|
85
|
+
# SmallCircleType indicates in polygons that side is along small circle; with optional pole.
|
86
|
+
class SmallCircleType
|
87
|
+
include XML::Mapping
|
88
|
+
|
89
|
+
object_node :pole, 'Pole', :class => Double2Type, :optional => true
|
90
|
+
end
|
91
|
+
|
92
|
+
# Vertex is a position with optional SmallCircle element;
|
93
|
+
# the SmallCircle element indicates that the polygon side
|
94
|
+
# formed by that vertex and its predecessor vertex is a small
|
95
|
+
# circle, rather than a great circle; SmallCircle has no meaning
|
96
|
+
# in Cartesian coordinates.
|
97
|
+
class VertexType
|
98
|
+
include XML::Mapping
|
99
|
+
|
100
|
+
object_node :position, 'Position', :class => Double2Type, :optional => false
|
101
|
+
object_node :small_circle, 'SmallCircle', :class => SmallCircleType, :optional => true
|
102
|
+
end
|
103
|
+
|
104
|
+
# Polygon: one or more vertices;
|
105
|
+
# counter-clockwise encircled area is enclosed;
|
106
|
+
# sides should span less than 180 deg in each coordinate if spherical
|
107
|
+
class PolygonType
|
108
|
+
array_node :vertices, 'Vertex', :class => VertexType, :optional => false
|
109
|
+
end
|
110
|
+
|
111
|
+
# Box shape: a rectangle defined by its center and size on both dimensions;
|
112
|
+
# since it is a polygon, it is redundant, but simple rectangles with great
|
113
|
+
# circle sides are awkward to define in spherical coordinates.
|
114
|
+
class BoxType
|
115
|
+
# the coordinates of the box's center
|
116
|
+
object_node :center, 'Center', :class => Double2Type, :optional => false
|
117
|
+
# the lengths of the box's sides
|
118
|
+
object_node :size, 'Size', :class => Double2Type, :optional => false
|
119
|
+
end
|
120
|
+
|
121
|
+
# A sector is the counter-clockwise area between two half-lines.
|
122
|
+
class SectorType
|
123
|
+
# the vertex position of the sector
|
124
|
+
object_node :position, 'Position', :class => Double2Type, :optional => false
|
125
|
+
# the area ccw from this position angle is included
|
126
|
+
object_node :pos_angle1, 'PosAngle1', :class => PosAngleType, :optional => false
|
127
|
+
# the area cw from this position angle is included
|
128
|
+
object_node :pos_angle2, 'PosAngle2', :class => PosAngleType, :optional => false
|
129
|
+
end
|
130
|
+
|
131
|
+
# An area on the unit sphere defined by the intersection with a plane.
|
132
|
+
class ConstraintType
|
133
|
+
include XML::Mapping
|
134
|
+
|
135
|
+
# the distance along the normal vector where the constraint plane
|
136
|
+
# intersects that vector; if positive, the spherical sector on the
|
137
|
+
# far side (seen from the center) is selected; if negative, the point
|
138
|
+
# of intersection is in the opposite direction of the vector, resulting
|
139
|
+
# in more than a hemisphere; the valid range is -1.0 to +1.0
|
140
|
+
numeric_node :offset, 'Offset', :optional => false
|
141
|
+
|
142
|
+
# this needs to be a spherical coordinate vector; it is the unit vector
|
143
|
+
# that is normal to the plane that forms a constraint for a convex
|
144
|
+
object_node :vector, 'Vector', :class => Double3Type, :optional => false
|
145
|
+
end
|
146
|
+
|
147
|
+
# A convex polygon defined by one or more Constraints.
|
148
|
+
class ConvexType
|
149
|
+
array_node :constraints, 'Constraint', :class => ConstraintType, :optional => false
|
150
|
+
end
|
151
|
+
|
152
|
+
# A convex hull.
|
153
|
+
class ConvexHullType
|
154
|
+
array_node :points, 'Point', :class => Double3Type, :optional => false
|
155
|
+
end
|
156
|
+
|
157
|
+
# This is a hook for regions defined in sky indexing schemes.
|
158
|
+
class SkyIndexType; end
|
159
|
+
|
160
|
+
# The union of two or more regions is a region.
|
161
|
+
class UnionType
|
162
|
+
full_array_node :regions, 'Region/(' + STC::group_member_names(Region, SubstitutionGroups).join('|') + ')',
|
163
|
+
:unmarshaller => STC::dispatch_from_element_name('VORuby::STCregion::V1_20', Proc.new{|name| "#{name}Type"}),
|
164
|
+
:optional => false
|
165
|
+
end
|
166
|
+
class Union
|
167
|
+
include XML::Mapping
|
168
|
+
|
169
|
+
object_node :value, '', :class => UnionType, :optional => false
|
170
|
+
end
|
171
|
+
|
172
|
+
# The intersection of two or more regions is a region.
|
173
|
+
class IntersectionType
|
174
|
+
full_array_node :regions, 'Region/(' + STC::group_member_names(Region, SubstitutionGroups).join('|') + ')',
|
175
|
+
:unmarshaller => STC::dispatch_from_element_name('VORuby::STCregion::V1_20', Proc.new{|name| "#{name}Type"}),
|
176
|
+
:optional => false
|
177
|
+
end
|
178
|
+
class Intersection
|
179
|
+
include XML::Mapping
|
180
|
+
|
181
|
+
object_node :value, '', :class => IntersectionType, :optional => false
|
182
|
+
end
|
183
|
+
|
184
|
+
# The negation of a region is a region.
|
185
|
+
class NegationType
|
186
|
+
full_object_node :region, 'Region/(' + STC::group_member_names(Region, SubstitutionGroups).join('|') + ')',
|
187
|
+
:unmarshaller => STC::dispatch_from_element_name('VORuby::STCregion::V1_20', Proc.new{|name| "#{name}Type"}),
|
188
|
+
:optional => false
|
189
|
+
end
|
190
|
+
class Negation
|
191
|
+
include XML::Mapping
|
192
|
+
|
193
|
+
object_node :value, '', :class => NegationType, :optional => false
|
194
|
+
end
|
195
|
+
|
196
|
+
# AllSky is just a convenience, meaning no bounds.
|
197
|
+
class AllSky
|
198
|
+
include XML::Mapping
|
199
|
+
|
200
|
+
object_node :value, '', :class => RegionType, :optional => false
|
201
|
+
end
|
202
|
+
|
203
|
+
# The circle is defined by a center and a radius.
|
204
|
+
class Circle
|
205
|
+
include XML::Mapping
|
206
|
+
|
207
|
+
object_node :value, '', :class => CircleType, :optional => false
|
208
|
+
end
|
209
|
+
|
210
|
+
# Ellipse is an extension of the circle shape, with a minor axis radius and position angle.
|
211
|
+
class Ellipse
|
212
|
+
include XML::Mapping
|
213
|
+
|
214
|
+
object_node :value, '', :class => EllipseType, :optional => false
|
215
|
+
end
|
216
|
+
|
217
|
+
# A polygon is a shape delineated by a list of vertices connected with lines,
|
218
|
+
# great circles, or small circles; the inside of the polygon is circumscribed
|
219
|
+
# counter-clockwise by the list of vertices; the polygon may be concave but not
|
220
|
+
# self-intersecting; the last vertex in the list is the predecessor of the first.
|
221
|
+
# For celestial coordinates it is assumed that we are looking at the sphere
|
222
|
+
# from the inside, with Right Ascension increasing to the left. Sides should span
|
223
|
+
# less than 180 deg in each coordinate.
|
224
|
+
class Polygon
|
225
|
+
include XML::Mapping
|
226
|
+
|
227
|
+
object_node :value, '', :class => PolygonType, :optional => false
|
228
|
+
end
|
229
|
+
|
230
|
+
# A box is a rectangle; the midpoints of its sides are the endpoints of a cross
|
231
|
+
# centered on the center position with arms that extend half the size for each
|
232
|
+
# coordinate in both directions, and the sides are lines or great circles that
|
233
|
+
# intersect the cross at its end points at right angles; the arms of the cross
|
234
|
+
# are parallel to the coordinate axes at the center point.
|
235
|
+
class Box
|
236
|
+
include XML::Mapping
|
237
|
+
|
238
|
+
object_node :value, '', :class => BoxType, :optional => false
|
239
|
+
end
|
240
|
+
|
241
|
+
# A sector selects the area between two half great circles or half lines meeting in a specified point.
|
242
|
+
class Sector
|
243
|
+
include XML::Mapping
|
244
|
+
|
245
|
+
object_node :value, '', :class => SectorType, :optional => false
|
246
|
+
end
|
247
|
+
|
248
|
+
# A convex is defined as the intersection of one or more half-plane constraints
|
249
|
+
# with the unit sphere; this may also be described as the union of one or more
|
250
|
+
# convex polygons bounded by one or more constraint planes.
|
251
|
+
class Convex
|
252
|
+
include XML::Mapping
|
253
|
+
|
254
|
+
object_node :value, '', :class => ConvexType, :optional => false
|
255
|
+
end
|
256
|
+
|
257
|
+
# A convex hull is the convex polygon that contains all of the specified
|
258
|
+
# positions; the points have to be constrained to lie in one hemisphere.
|
259
|
+
class ConvexHull
|
260
|
+
include XML::Mapping
|
261
|
+
|
262
|
+
object_node :value, '', :class => ConvexHullType, :optional => false
|
263
|
+
end
|
264
|
+
|
265
|
+
# A shape defined through a sky indexing scheme; this is really a substitutino group for concrete implementations.
|
266
|
+
class SkyIndex
|
267
|
+
include XML::Mapping
|
268
|
+
|
269
|
+
object_node :value, '', :class => SkyIndexType, :optional => false
|
270
|
+
end
|
271
|
+
|
272
|
+
end
|
273
|
+
end
|
274
|
+
end
|