/[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 2148 - (show annotations)
Thu Apr 1 10:06:13 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: 4894 byte(s)
Revert part of former changes, since the capabilities XML is used by
more methods.

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26