/[thuban]/branches/WIP-pyshapelib-bramz/Extensions/wms/capabilities.py
ViewVC logotype

Annotation of /branches/WIP-pyshapelib-bramz/Extensions/wms/capabilities.py

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2110 - (hide annotations)
Tue Mar 16 19:14:56 2004 UTC (20 years, 11 months ago) by joey
Original Path: trunk/thuban/Extensions/wms/capabilities.py
File MIME type: text/x-python
File size: 4751 byte(s)
class WMSCapabilities to manage capabilites, will incorporate parsing
the capabilities response and provide details for other classes

1 joey 2110 # Copyright (c) 2004 by Intevation GmbH
2     # Authors:
3     # Martin Schulze <[email protected]>
4     #
5     # This program is free software; you can redistribute it and/or modify
6     # it under the terms of the GNU General Public License as published by
7     # the Free Software Foundation; either version 2 of the License, or
8     # (at your option) any later version.
9     #
10     # This program is distributed in the hope that it will be useful,
11     # but WITHOUT ANY WARRANTY; without even the implied warranty of
12     # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13     # GNU General Public License for more details.
14     #
15     # You should have received a copy of the GNU General Public License
16     # along with this program; if not, write to the Free Software
17     # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18    
19     """
20     Maintain WMS Capabilities
21    
22     class WMSCapabilities:
23     __init__ (resource xor filename xor nothing)
24    
25     getErrorMsg()
26    
27     fetchCapabilities (*resource)
28     saveCapabilities (filename)
29     loadCapabilities (filename)
30     printCapabilities ()
31    
32     Requirements:
33     - PyOGCLib <http://www.sourceforge.net/projects/pyogclib>
34    
35     Requires the ogclib installed regularily on the system or checked out
36     next to the Thuban checkout.
37    
38     If this module is executed solitarily, it will fetch the capabilities
39     of the frida service and store them in the local file
40     frida_capabilities.xml for later processing.
41    
42     """
43    
44     __version__ = "$Revision$"
45     # $Source$
46     # $Id$
47    
48     import os
49    
50     # ----------------------------------------------------------------------
51     # FIXME: Temporary code until PyOGCLib is a standard requirement
52    
53     from sys import path
54    
55     # Assume the PyOGCLib to be checked out next to the thuban main directory
56     pyogclib = "../../../PyOGCLib"
57     if os.path.isdir (pyogclib) and os.path.isdir (pyogclib + "/ogclib"):
58     path.insert (0, pyogclib)
59    
60     # We use gettext, so we need to import it and hence need to adjust the
61     # path again
62     if __name__ == "__main__":
63     path.insert (0, "../../")
64    
65     # ----------------------------------------------------------------------
66    
67     from Thuban import _
68    
69     from ogclib.WMSClient import WMSClient
70    
71     class Capabilities (WMSClient):
72     """
73     Thuban class to maintain capabilities. This class provides
74     methods to fetch, save and load capabilities as well as methods to
75     retrieve particular information from the fetched or loaded
76     capabilities XML.
77    
78     If an error occured during processing an error text is assigned to
79     self.errorMsg. If everything went fine, this variable is set to
80     None. The current value can be retrieved by the getErrorMsg()
81     method.
82     """
83    
84     capabilities = None
85     errorMsg = None
86     wmsVersion = None
87    
88     def __init__ (self, *parm):
89     """
90     Initialises Capabilities with one optional parameter
91    
92     filename -- load capabilities from file
93     url -- fetch capabilities from network
94     """
95    
96     if parm and parm[0]:
97     if os.path.isfile (parm[0]):
98     self.loadCapabilities (parm[0])
99     else:
100     if parm[0].find ("http://",0) == 0:
101     self.fetchCapabilities (parm[0])
102     else:
103     self.errorMsg = _("Resource '%s' is neither local file nor URL") % parm[0]
104    
105    
106     def getErrorMsg (self):
107     return self.errorMsg
108    
109    
110     def fetchCapabilities (self, resource):
111     """Fetches the WMS capabilities from an Internet resource"""
112    
113     self.wmsVersion = "1.1"
114     self.capabilities = self.getCapabilities(resource, self.wmsVersion)
115     if not self.capabilities:
116     self.wmsVersion = "1.0"
117     self.capabilities = self.getCapabilities(resource, self.wmsVersion)
118    
119    
120     def saveCapabilities (self, fname):
121     """Save capabilities to local file"""
122    
123     if self.capabilities is None:
124     self.errorMsg = _("No capabilities available")
125     else:
126     try:
127     out = open (fname, "w")
128     out.write (self.capabilities)
129     out.close()
130     except:
131     self.errorMsg = _("Can't open file '%s' for writing") % fname
132    
133    
134     def loadCapabilities (self, fname):
135     """Load capabilities from a local file"""
136    
137     try:
138     input = open (fname, "r")
139     self.capabilities = input.read ()
140     input.close()
141     except:
142     self.errorMsg = _("Can't open file '%s' for reading") % fname
143    
144    
145     def printCapabilities (self):
146     """Prints capabilities to stdout"""
147    
148     print self.capabilities
149    
150    
151    
152     if __name__ == "__main__":
153     capa = Capabilities("http://frida.intevation.org/cgi-bin/frida_wms?")
154     if capa.getErrorMsg() is None:
155     capa.saveCapabilities("frida_capabilities.xml")
156     else:
157     print "Error: " + capa.getErrorMsg()

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26