/[thuban]/branches/WIP-pyshapelib-bramz/Thuban/Model/data.py
ViewVC logotype

Contents of /branches/WIP-pyshapelib-bramz/Thuban/Model/data.py

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1074 - (show annotations)
Tue May 27 17:39:43 2003 UTC (21 years, 9 months ago) by bh
Original Path: trunk/thuban/Thuban/Model/data.py
File MIME type: text/x-python
File size: 3795 byte(s)
* Thuban/UI/mainwindow.py (MainWindow.delegated_messages): Also
delegate SelectedLayer.
(MainWindow.LayerUnjoinTable): Implement.
(_can_unjoin): New. Helper function for the sensitivity of the
layer/unjoin command.

* Thuban/Model/data.py (ShapefileStore.OrigShapeStore)
(DerivedShapeStore.OrigShapeStore): New. Return the original
shapestore. Used to figure out how to unjoin.
(DerivedShapeStore.Shapefile): Fix a typo.

1 # Copyright (C) 2003 by Intevation GmbH
2 # Authors:
3 # Bernhard Herzog <[email protected]>
4 #
5 # This program is free software under the GPL (>=v2)
6 # Read the file COPYING coming with the software for details.
7
8 """Data source abstractions"""
9
10 __version__ = "$Revision$"
11 # $Source$
12 # $Id$
13
14 import os
15 import warnings
16 import weakref
17
18 import shapelib
19 import table
20 import transientdb
21
22
23 class ShapeTable(transientdb.AutoTransientTable):
24
25 """A Table that depends on a ShapefileStore
26
27 Intended use is by the ShapefileStore for the table associated with
28 the shapefiles.
29 """
30
31 def __init__(self, store, db, table):
32 """Initialize the ShapeTable.
33
34 Parameters:
35 store -- the ShapefileStore the table is to depend on
36 db -- The transient database to use
37 table -- the table
38 """
39 transientdb.AutoTransientTable.__init__(self, db, table)
40 self.store = weakref.ref(store)
41
42 def Dependencies(self):
43 """Return a tuple containing the shapestore"""
44 return (self.store(),)
45
46
47 class ShapefileStore:
48
49 """Combine a shapefile and the corresponding DBF file into one object"""
50
51 def __init__(self, session, filename):
52 # Make the filename absolute. The filename will be
53 # interpreted relative to that anyway, but when saving a
54 # session we need to compare absolute paths and it's usually
55 # safer to always work with absolute paths.
56 self.filename = os.path.abspath(filename)
57
58 self.shapefile = shapelib.ShapeFile(self.filename)
59 self.dbftable = table.DBFTable(filename)
60 self.table = ShapeTable(self, session.TransientDB(), self.dbftable)
61
62 def Table(self):
63 """Return the table containing the attribute data"""
64 return self.table
65
66 def Shapefile(self):
67 """Return the shapefile object"""
68 return self.shapefile
69
70 def FileName(self):
71 """Return the filename used to open the shapefile"""
72 return self.filename
73
74 def FileType(self):
75 """Return the filetype. This is always the string 'shapefile'"""
76 return "shapefile"
77
78 def Dependencies(self):
79 """Return the empty tuple.
80
81 The ShapefileStore doesn't depend on anything else.
82 """
83 return ()
84
85 def OrigShapeStore(self):
86 """Return None.
87
88 The ShapefileStore was not derived from another shapestore.
89 """
90 return None
91
92
93 class DerivedShapeStore:
94
95 """A ShapeStore derived from other shapestores or tables"""
96
97 def __init__(self, shapestore, table):
98 """Initialize the derived shapestore.
99
100 The arguments are a shapestore for the shapedata and a table for
101 the tabular data.
102 """
103 self.shapestore = shapestore
104 self.table = table
105
106 def Table(self):
107 """Return the table"""
108 return self.table
109
110 def Shapefile(self):
111 """Return the shapefile of the underlying shapestore"""
112 return self.shapestore.Shapefile()
113
114 def Dependencies(self):
115 """Return a tuple containing the shapestore and the table"""
116 return (self.shapestore, self.table)
117
118 def OrigShapeStore(self):
119 """
120 Return the original shapestore the derived store was instantiated with
121 """
122 return self.shapestore
123
124
125 class SimpleStore:
126
127 """Combine a shapefile and a table object"""
128
129 def __init__(self, shapefile, table):
130 warnings.warn("The SimpleStore is deprecated."
131 " Use DerivedShapeStore instead",
132 DeprecationWarning, stacklevel = 2)
133 self.shapefile = shapefile
134 self.table = table
135 self.filename = None
136
137 def Table(self):
138 return self.table
139
140 def Shapefile(self):
141 return self.shapefile

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26