-
Notifications
You must be signed in to change notification settings - Fork 0
/
VikingXML.xsd
249 lines (239 loc) · 13.3 KB
/
VikingXML.xsd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="VikingXML" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="RefSection">
<xs:annotation>
<xs:documentation>
Defines which section to load a channel from:
Selected: Load images from the users currently selected section
Fixed: Load images from the specified section
Above: Load images from the reference section above the users selected section
Below: Load images from the reference section below the users selected section
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="Selected"/>
<xs:enumeration value="Fixed"/>
<xs:enumeration value="Above"/>
<xs:enumeration value="Below"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="Level">
<xs:annotation>
<xs:documentation>
Describes a level in a "tileset" or "pyramid" image pyramid. A level is a directory containing all of the original tiles downsampled by a common factor.
Level: A number defining what level of the pyramid this is. Must currently be a power of two.
path: A string which is to be appended to the section path to be used to locate images in this level.
GridDimX: Tilesets only, Integer defining the dimensions of the grid in X
GridDimY: Tilesets only, Integer defining the dimensions of the grid in Y
</xs:documentation>
</xs:annotation>
<xs:attribute name="Downsample" type="xs:float" use="required" />
<xs:attribute name="path" type="xs:string" use="required" />
<xs:attribute name="GridDimX" type="xs:integer"/>
<xs:attribute name="GridDimY" type="xs:integer"/>
</xs:complexType>
<xs:complexType name ="ChannelInfo">
<xs:annotation>
<xs:documentation>
Channel info is a collection of channels to display by default for a section.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Channel" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:annotation>
<xs:documentation>
Specifies a channel to display by default.
Section: The section to load the channel from
Channel: The name of the channel, either a pyramid or tileset, to load, or "Selected" for user selected channel
Color: Color to use when displaying channel, specify as a web color i.e. #00ff00
</xs:documentation>
</xs:annotation>
<xs:attribute name="Section" type="RefSection" default="Selected" />
<xs:attribute name="Channel" type="xs:string" default=""/>
<xs:attribute name="Color" type="xs:string" default="0xFFFFFF"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:element name="Volume">
<xs:complexType>
<xs:annotation>
<xs:documentation>
Defines basic properties of the volume being loaded.
Name: The name of the volume.
num_stos: Optional, the number of stos tags in the volume. Only used for loading progress bar and will eventually be removed.
num_sections: Optional, the number of section tags in the volume. Only used for loading progress bar and will eventually be removed.
path: Required, the URL of the root path of the volume. ex. http://192.168.1.1/ Will probably go away eventually.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="DefaultWebAnnotationUserSettings" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="Uri" type="xs:anyURI" use="optional">
<xs:annotation>
<xs:documentation>
URL of default hotkey mapping for volume
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="VolumeToEndpoint" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="Name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
Name of the endpoint database
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Endpoint" type="xs:anyURI" use="required">
<xs:annotation>
<xs:documentation>
Endpoint URL for Viking annotations
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ExportURL" type="xs:anyURI" use="optional">
<xs:annotation>
<xs:documentation>
URL for file exporting
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Authentication" type="xs:anyURI" use="optional">
<xs:annotation>
<xs:documentation>
URL for authenticating users
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="ChannelInfo" minOccurs="0" maxOccurs="1" type="ChannelInfo"/>
<xs:element name="stos" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:annotation>
<xs:documentation>
Defines a slice-to-slice transform (stos). These are used to tell Viking how to warp from section space to volume space.
mappedSection: The section being transformed
controlSection: The section not being transformed
pixelSpacing: stos files are rarely generated against the full-resolution data. This value tells viking how much the
coordinates should be scaled by to match the actual image dimensions.
type: The type of transform to use, currently always use "grid".
path: Required, relative path from Volume path to the stos file containing transformation data.
</xs:documentation>
</xs:annotation>
<xs:attribute name="mappedSection" type="xs:integer" use="required"/>
<xs:attribute name="controlSection" type="xs:integer" use="required"/>
<xs:attribute name="pixelSpacing" type="xs:float" use="required"/>
<xs:attribute name="type" type="xs:string" use="required"/>
<xs:attribute name="path" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="Section" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:annotation>
<xs:documentation>
The section tag describes a slice in the volume at a specific z depth.
name: Friendly name of the section. I would use section number because I haven't tested anything else.
number: Integer, numbers should be sequential according to the order in which sections were cut. It is OK to skip numbers for lost sections.
path: Required, relative path from Volume path to the Section directory.
Each section can support multiple channels. Each Pyramid or Tileset is considered a channel of data.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="transform" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:annotation>
<xs:documentation>
Transforms are only applied to Pyramids. They are generated by the NCRToolset and describe how each tile in a mosaic is positioned in the section.
Name: Name of the transform in the Viking UI
path: Relative path from the section path.
UseForVolume: Boolean, specifies that this transform is used to position tiles in the section before the are warped into the volume. Only the highest quality transform should have this set.
FilePrefix: String to prepend to all file names, if needed. A period is added after the file prefix. Traditionally we prepend the section number to tile names. Tiles are expected to be numbered with three digits. i.e. Section 1 Tile 243 = 0001.243.png. The story on this is long, but I am open to changing it.
FilePostfix: Extension to add to file names, must be supported by XNA library. .png format recommended.
</xs:documentation>
</xs:annotation>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="path" type="xs:string" use="required" />
<xs:attribute name="UseForVolume" type="xs:boolean" default="0" />
<xs:attribute name="FilePrefix" type="xs:string" />
<xs:attribute name="FilePostfix" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="Pyramid" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:annotation>
<xs:documentation>
Image pyramids are generated from the original images captured by an imaging platform. We use these image
pyramids with the NCRToolset to generate transforms which describe where each tile in the pyramid is
positioned in section space. In the pyramid each tiles size is variable according to what level of the
pyramid it is loaded from. This makes for poor performance over the internet. However they are very
useful for debugging the output of the NCRToolset over an intranet.
name: Name of the channel displayed in the Viking UI
path: Relative path from the section path.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Level" minOccurs="1" maxOccurs="unbounded" type ="Level" />
</xs:sequence>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="path" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="Tileset" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:annotation>
<xs:documentation>
In a tileset all the images have a fixed size regardless of the level of the pyramid, we typically use 256x256 pixel tiles. Tiles are laid out on a grid with no overlap.
This optimizes bandwidth use. Tile names include the grid position, i.e. X001_Y001.png
Name: Name of the channel in the Viking UI
path: Relative path from the section path.
FilePrefix: String to prepend to all file names, if needed. A period is added after the file prefix if the attribute is included.
FilePostfix: Extension to add to file names, must be supported by XNA library. .png format recommended.
TileXDim: Pixel X dimensions of each tile
TileYDim: Pixel Y dimensions of each tile
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Level" minOccurs="1" maxOccurs="unbounded" type ="Level"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" />
<xs:attribute name="path" type="xs:string" use="required"/>
<xs:attribute name="FilePrefix" type="xs:string" />
<xs:attribute name="FilePostfix" type="xs:string" />
<xs:attribute name="TileXDim" type="xs:integer" use="required"/>
<xs:attribute name="TileYDim" type="xs:integer" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="ChannelInfo" minOccurs="0" maxOccurs="1" type="ChannelInfo"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" />
<xs:attribute name="number" type="xs:integer" />
<xs:attribute name="path" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="DefaultSection" type="xs:integer" use="optional">
<xs:annotation>
<xs:documentation>
Section to display when volume loads
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="name" type="xs:string" />
<xs:attribute name="num_stos" type="xs:integer" />
<xs:attribute name="num_sections" type="xs:integer" />
<xs:attribute name="StosZip" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>
Optional path to .zip file containing all .stos transforms
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="path" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:schema>