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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2137 - (show 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 # 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 WMSCapabilities(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 \
104 = _("Resource '%s' is neither local file nor URL")
105 % parm[0]
106
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 capabilities \
156 = WMSCapabilities("http://frida.intevation.org/cgi-bin/frida_wms?")
157 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