/[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 2110 - (show 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 # 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