89 |
Information should only be retrieved with the respective |
Information should only be retrieved with the respective |
90 |
get*() methods. |
get*() methods. |
91 |
""" |
""" |
92 |
root = xml.dom.minidom.parseString(data).documentElement |
xml_dom = xml.dom.minidom.parseString(data) |
93 |
|
root = xml_dom.documentElement |
94 |
|
|
95 |
# Extract the title |
# Extract the title |
96 |
foo = getElementByName(getElementByName(root, 'Service'), 'Title') |
foo = getElementByName(getElementByName(root, 'Service'), 'Title') |
126 |
self.peekLayers(getElementByName(getElementByName( |
self.peekLayers(getElementByName(getElementByName( |
127 |
root, 'Capability'), 'Layer'), -1) |
root, 'Capability'), 'Layer'), -1) |
128 |
|
|
129 |
|
xml_dom.unlink() |
130 |
|
|
131 |
|
|
132 |
def peekLayers(self, top, parent): |
def peekLayers(self, top, parent): |
133 |
""" |
""" |
186 |
self.layers[index]['bbox'][srs][corner] \ |
self.layers[index]['bbox'][srs][corner] \ |
187 |
= foo.attributes.get(corner).nodeValue |
= foo.attributes.get(corner).nodeValue |
188 |
|
|
|
# Check for integrity |
|
|
self.checkLayerSRS(index) |
|
|
|
|
189 |
# Traverse subsidiary layers |
# Traverse subsidiary layers |
190 |
sublayer = getElementsByName(top, 'Layer') |
sublayer = getElementsByName(top, 'Layer') |
191 |
for l in sublayer: |
for l in sublayer: |
192 |
self.peekLayers(l, index) |
self.peekLayers(l, index) |
193 |
|
|
194 |
|
|
|
def checkLayerSRS(self, index): |
|
|
""" |
|
|
Checks the integrity of the underlying XML data. |
|
|
|
|
|
This is done by comparing the <SRS> elements with the |
|
|
calculated list from the BoundingBox elements. |
|
|
|
|
|
index -- position in the layers array to check |
|
|
""" |
|
|
|
|
|
pivot = index |
|
|
calculated = [] |
|
|
while pivot != -1: |
|
|
if 'bbox' in self.layers[pivot]: |
|
|
for srs in self.layers[pivot]['bbox'].keys(): |
|
|
if srs not in calculated: |
|
|
calculated.append(srs) |
|
|
pivot = self.layers[pivot]['parent'] |
|
|
|
|
|
pivot = index |
|
|
specified = [] |
|
|
while pivot != -1: |
|
|
if 'srs' in self.layers[pivot]: |
|
|
for srs in self.layers[pivot]['srs']: |
|
|
if srs not in specified: |
|
|
specified.append(srs) |
|
|
pivot = self.layers[pivot]['parent'] |
|
|
|
|
|
equal = True |
|
|
# Check for same number of elements |
|
|
if len(calculated) != len(specified): |
|
|
equal = False |
|
|
|
|
|
# Loop through all elements for existance |
|
|
for elm in calculated: |
|
|
if elm not in specified: |
|
|
equal = False |
|
|
|
|
|
if not equal: |
|
|
if self.srs_discrepancies is None: |
|
|
self.srs_discrepancies = [] |
|
|
if 'name' in self.layers[index]: |
|
|
id = "name:%s" % self.layers[index]['name'] |
|
|
else: |
|
|
id = "title:%s" % self.layers[index]['title'] |
|
|
self.srs_discrepancies.append(id) |
|
|
|
|
|
|
|
195 |
def getTitle(self): |
def getTitle(self): |
196 |
""" |
""" |
197 |
Returns the main title of the WMS object. |
Returns the main title of the WMS object. |
337 |
- Layers may optionally add to the global SRS list, or to the |
- Layers may optionally add to the global SRS list, or to the |
338 |
list inherited from a parent layer. |
list inherited from a parent layer. |
339 |
|
|
340 |
|
- A server which has the ability to transform data to |
341 |
|
different SRSes may choose not to provide an explicit |
342 |
|
BoundingBox for every possible SRS available for each Layer. |
343 |
|
Thus the list of <SRS> elements are authoritative. |
344 |
|
|
345 |
This implementation returns the list of SRS for the given |
This implementation returns the list of SRS for the given |
346 |
layer, calculated by looking at BoundingBoxes defined in the |
layer, calculated by looking at BoundingBoxes defined in the |
347 |
named layer and all layers higher in the hierarchy up to the |
named layer and all layers higher in the hierarchy up to the |
357 |
|
|
358 |
result = [] |
result = [] |
359 |
while pivot != -1: |
while pivot != -1: |
360 |
if 'bbox' in self.layers[pivot]: |
if 'srs' in self.layers[pivot]: |
361 |
for srs in self.layers[pivot]['bbox'].keys(): |
for srs in self.layers[pivot]['srs']: |
362 |
if srs not in result: |
if srs not in result: |
363 |
result.append(srs) |
result.append(srs) |
364 |
pivot = self.layers[pivot]['parent'] |
pivot = self.layers[pivot]['parent'] |