|
25 | 25 | import os
|
26 | 26 | from string import *
|
27 | 27 | from xml.dom import minidom, Node
|
| 28 | +from qgis.core import * |
28 | 29 |
|
29 | 30 | # symbol map
|
30 | 31 | qgisSymbols = {'hard:circle' : 'CIRCLE',
|
@@ -234,39 +235,6 @@ def writeWebSection(self):
|
234 | 235 | self.outFile.write(" FOOTER '" + self.footer + "'\n")
|
235 | 236 | self.outFile.write(" END\n\n")
|
236 | 237 |
|
237 |
| - def parsePostgisConnection( self, dataString ): |
238 |
| - pg = {} |
239 |
| - pg['host'] = 'localhost' |
240 |
| - pg['dbname'] = 'gisdata' |
241 |
| - pg['user'] = '' |
242 |
| - pg['password'] = '' |
243 |
| - pg['table'] = '' |
244 |
| - pg['geom'] = 'the_geom' |
245 |
| - |
246 |
| - |
247 |
| - whereCondition = dataString.split("sql")[1][1:] |
248 |
| - cmp = dataString.split("sql")[0].split(" ") |
249 |
| - |
250 |
| - for c in cmp: |
251 |
| - if c[:1] == "(": |
252 |
| - pg['geom'] = c[1:][:-1] |
253 |
| - else: |
254 |
| - kvp = c.split("=") |
255 |
| - if (len(kvp) >= 2): |
256 |
| - pg[kvp[0]] = kvp[1] |
257 |
| - |
258 |
| - connString = 'host=' + pg['host'] + " user=" + pg['user'] |
259 |
| - |
260 |
| - if (len(pg['password'].replace("\'", "")) > 0): |
261 |
| - connString += " password=" + pg['password'].replace("'", "") |
262 |
| - |
263 |
| - connString += " dbname=" + pg['dbname'] |
264 |
| - |
265 |
| - dataString = pg['geom'] + " FROM " + pg['table'].replace("\"", "") |
266 |
| - filterString = whereCondition.replace("\"", "") |
267 |
| - return (connString, dataString, filterString) |
268 |
| - |
269 |
| - |
270 | 238 | # Write the map layers - we have to defer writing to disk so we
|
271 | 239 | # can invert the order of the layes, since they are opposite in QGIS
|
272 | 240 | # compared to mapserver
|
@@ -321,13 +289,14 @@ def writeMapLayers(self):
|
321 | 289 |
|
322 | 290 | if providerString == 'postgres':
|
323 | 291 | # it's a postgis layer
|
324 |
| - (pgConnString, sqlData, sqlFilter) = self.parsePostgisConnection(dataString) |
| 292 | + uri = QgsDataSourceURI(dataString) |
| 293 | + |
325 | 294 | layer_def += " CONNECTIONTYPE postgis\n"
|
326 |
| - layer_def += " CONNECTION \"" + pgConnString + "\"\n" |
327 |
| - layer_def += " DATA \"" + sqlData + "\"\n" |
| 295 | + layer_def += " CONNECTION \"" + uri.connectionInfo() + "\"\n" |
| 296 | + layer_def += " DATA '\"" + uri.geometryColumn() + "\" FROM " + uri.quotedTablename() + "'\n" |
328 | 297 | # don't write the filter keyword if there isn't one
|
329 |
| - if sqlFilter: |
330 |
| - layer_def += " FILTER \"" + sqlFilter + "\"\n" |
| 298 | + if uri.sql() != "": |
| 299 | + layer_def += " FILTER ( " + uri.sql() + " )\n" |
331 | 300 |
|
332 | 301 | elif providerString == 'wms' and lyr.getAttribute("type").encode('utf-8').upper() == 'RASTER':
|
333 | 302 | # it's a WMS layer
|
|
0 commit comments