/[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 2136 - (hide annotations)
Wed Mar 24 20:05:33 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: 4829 byte(s)
Renamed the class to contain 'WMS', also added a linebreak where required

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 joey 2136 class WMSCapabilities (WMSClient):
72 joey 2110 """
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 joey 2136 self.errorMsg \
104     = _("Resource '%s' is neither local file nor URL")
105     % parm[0]
106 joey 2110
107    
108     def getErrorMsg (self):
109     return self.errorMsg
110    
111    
112     def fetchCapabilities (self, resource):
113     """Fetches the WMS capabilities from an Internet resource"""
114    
115     self.wmsVersion = "1.1"
116     self.capabilities = self.getCapabilities(resource, self.wmsVersion)
117     if not self.capabilities:
118     self.wmsVersion = "1.0"
119     self.capabilities = self.getCapabilities(resource, self.wmsVersion)
120    
121    
122     def saveCapabilities (self, fname):
123     """Save capabilities to local file"""
124    
125     if self.capabilities is None:
126     self.errorMsg = _("No capabilities available")
127     else:
128     try:
129     out = open (fname, "w")
130     out.write (self.capabilities)
131     out.close()
132     except:
133     self.errorMsg = _("Can't open file '%s' for writing") % fname
134    
135    
136     def loadCapabilities (self, fname):
137     """Load capabilities from a local file"""
138    
139     try:
140     input = open (fname, "r")
141     self.capabilities = input.read ()
142     input.close()
143     except:
144     self.errorMsg = _("Can't open file '%s' for reading") % fname
145    
146    
147     def printCapabilities (self):
148     """Prints capabilities to stdout"""
149    
150     print self.capabilities
151    
152    
153    
154     if __name__ == "__main__":
155 joey 2136 capabilities \
156     = WMSCapabilities("http://frida.intevation.org/cgi-bin/frida_wms?")
157 joey 2110 if capa.getErrorMsg() is None:
158     capa.saveCapabilities("frida_capabilities.xml")
159     else:
160     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