/[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 2137 - (hide annotations)
Wed Mar 24 20:07:34 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: 4807 byte(s)
Removed a space before an opening parenthesis, added a few spaces
after a comma in argument lists

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 joey 2137 fetchCapabilities(*resource)
28     saveCapabilities(filename)
29     loadCapabilities(filename)
30     printCapabilities()
31 joey 2110
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 joey 2137 if os.path.isdir(pyogclib) and os.path.isdir(pyogclib + "/ogclib"):
58     path.insert(0, pyogclib)
59 joey 2110
60     # We use gettext, so we need to import it and hence need to adjust the
61     # path again
62     if __name__ == "__main__":
63 joey 2137 path.insert(0, "../../")
64 joey 2110
65     # ----------------------------------------------------------------------
66    
67     from Thuban import _
68    
69     from ogclib.WMSClient import WMSClient
70    
71 joey 2137 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 joey 2137 def __init__(self, *parm):
89 joey 2110 """
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 joey 2137 if os.path.isfile(parm[0]):
98     self.loadCapabilities(parm[0])
99 joey 2110 else:
100 joey 2137 if parm[0].find("http://", 0) == 0:
101     self.fetchCapabilities(parm[0])
102 joey 2110 else:
103 joey 2136 self.errorMsg \
104     = _("Resource '%s' is neither local file nor URL")
105     % parm[0]
106 joey 2110
107    
108 joey 2137 def getErrorMsg(self):
109 joey 2110 return self.errorMsg
110    
111    
112 joey 2137 def fetchCapabilities(self, resource):
113 joey 2110 """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 joey 2137 def saveCapabilities(self, fname):
123 joey 2110 """Save capabilities to local file"""
124    
125     if self.capabilities is None:
126     self.errorMsg = _("No capabilities available")
127     else:
128     try:
129 joey 2137 out = open(fname, "w")
130     out.write(self.capabilities)
131 joey 2110 out.close()
132     except:
133     self.errorMsg = _("Can't open file '%s' for writing") % fname
134    
135    
136 joey 2137 def loadCapabilities(self, fname):
137 joey 2110 """Load capabilities from a local file"""
138    
139     try:
140 joey 2137 input = open(fname, "r")
141     self.capabilities = input.read()
142 joey 2110 input.close()
143     except:
144     self.errorMsg = _("Can't open file '%s' for reading") % fname
145    
146    
147 joey 2137 def printCapabilities(self):
148 joey 2110 """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