1
|
Index: tools/mapserver_export/ms_export.py
|
2
|
===================================================================
|
3
|
--- tools/mapserver_export/ms_export.py (revision 7034)
|
4
|
+++ tools/mapserver_export/ms_export.py (working copy)
|
5
|
@@ -31,6 +31,7 @@
|
6
|
self.header = ''
|
7
|
self.footer = ''
|
8
|
self.symbolQueue = {}
|
9
|
+
|
10
|
|
11
|
# Set the options collected from the GUI
|
12
|
def setOptions(self, units, image, mapname, width, height, template, header, footer):
|
13
|
@@ -215,16 +216,29 @@
|
14
|
pg['table'] = ''
|
15
|
pg['geom'] = 'the_geom'
|
16
|
|
17
|
- cmp = dataString.split(" ")
|
18
|
+
|
19
|
+ whereCondition = dataString.split("sql")[1][1:]
|
20
|
+ cmp = dataString.split("sql")[0].split(" ")
|
21
|
+
|
22
|
for c in cmp:
|
23
|
if c[:1] == "(":
|
24
|
pg['geom'] = c[1:][:-1]
|
25
|
else:
|
26
|
kvp = c.split("=")
|
27
|
- pg[kvp[0]] = kvp[1]
|
28
|
+ if (len(kvp) >= 2):
|
29
|
+ pg[kvp[0]] = kvp[1]
|
30
|
+
|
31
|
+ connString = 'host=' + pg['host'] + " user=" + pg['user']
|
32
|
+
|
33
|
+ if (len(pg['password'].replace("\'", "")) > 0):
|
34
|
+ connString += " password=" + pg['password'].replace("'", "")
|
35
|
+
|
36
|
+ connString += " dbname=" + pg['dbname']
|
37
|
+
|
38
|
+ dataString = pg['geom'] + " FROM " + pg['table'].replace("\"", "")
|
39
|
+ filterString = whereCondition.replace("\"", "")
|
40
|
+ return (connString, dataString, filterString)
|
41
|
|
42
|
- return pg
|
43
|
-
|
44
|
|
45
|
# Write the map layers
|
46
|
def writeMapLayers(self):
|
47
|
@@ -240,7 +254,7 @@
|
48
|
|
49
|
self.outFile.write(" LAYER\n")
|
50
|
# write the name of the layer
|
51
|
- self.outFile.write(" NAME '" + lyr.getElementsByTagName("layername")[0].childNodes[0].nodeValue.encode('utf-8') + "'\n")
|
52
|
+ self.outFile.write(" NAME '" + lyr.getElementsByTagName("layername")[0].childNodes[0].nodeValue.encode('utf-8').replace("\"", "") + "'\n")
|
53
|
if lyr.getAttribute("type").encode('utf-8') == 'vector':
|
54
|
self.outFile.write(" TYPE " + lyr.getAttribute("geometry").encode('utf-8').upper() + "\n")
|
55
|
elif lyr.getAttribute("type").encode('utf-8') == 'raster':
|
56
|
@@ -264,11 +278,11 @@
|
57
|
|
58
|
if providerString == 'postgres':
|
59
|
# it's a postgis layer
|
60
|
- pg = self.parsePostgisConnection(dataString)
|
61
|
+ (pgConnString, sqlData, sqlFilter) = self.parsePostgisConnection(dataString)
|
62
|
self.outFile.write(" CONNECTIONTYPE postgis\n")
|
63
|
- self.outFile.write(" CONNECTION 'host=" + pg['host'] + " dbname=" + pg['dbname']
|
64
|
- + " password=" + pg['password'] + " user=" + pg['user'] + "'\n")
|
65
|
- self.outFile.write(" DATA '" + pg['geom'] + " FROM " + pg['table'] + "'\n")
|
66
|
+ self.outFile.write(" CONNECTION '" + pgConnString + "'\n")
|
67
|
+ self.outFile.write(" DATA '" + sqlData + "'\n")
|
68
|
+ self.outFile.write(" FILTER '" + sqlFilter + "'\n")
|
69
|
|
70
|
elif providerString == 'wms' and lyr.getAttribute("type").encode('utf-8').upper() == 'RASTER':
|
71
|
# it's a WMS layer
|
72
|
@@ -280,7 +294,7 @@
|
73
|
wmsNames = []
|
74
|
wmsStyles = []
|
75
|
for wmsLayer in wmsSubLayers:
|
76
|
- wmsNames.append( wmsLayer.getElementsByTagName('name')[0].childNodes[0].nodeValue.encode('utf-8') )
|
77
|
+ wmsNames.append( wmsLayer.getElementsByTagName('name')[0].childNodes[0].nodeValue.encode('utf-8').replace("\"", "") )
|
78
|
try:
|
79
|
wmsStyles.append( wmsLayer.getElementsByTagName('style')[0].childNodes[0].nodeValue.encode('utf-8') )
|
80
|
except:
|
81
|
@@ -305,7 +319,7 @@
|
82
|
# WMS settings for all layers
|
83
|
self.outFile.write(" METADATA\n")
|
84
|
self.outFile.write(" 'wms_title' '"
|
85
|
- + lyr.getElementsByTagName("layername")[0].childNodes[0].nodeValue.encode('utf-8') + "'\n")
|
86
|
+ + lyr.getElementsByTagName("layername")[0].childNodes[0].nodeValue.encode('utf-8').replace("\"", "") + "'\n")
|
87
|
self.outFile.write(" END\n")
|
88
|
|
89
|
self.outFile.write(" STATUS DEFAULT\n")
|
90
|
@@ -364,9 +378,8 @@
|
91
|
|
92
|
self.outFile.write(" CLASS\n")
|
93
|
|
94
|
- self.outFile.write(" NAME "
|
95
|
- + layerNode.getElementsByTagName("layername")[0].childNodes[0].nodeValue.encode('utf-8')
|
96
|
- + " \n")
|
97
|
+ self.outFile.write(" NAME '"
|
98
|
+ + layerNode.getElementsByTagName("layername")[0].childNodes[0].nodeValue.encode('utf-8').replace("\"", "") + "' \n")
|
99
|
|
100
|
self.outFile.write(" STYLE\n")
|
101
|
# use the point symbol map to lookup the mapserver symbol type
|
102
|
|