Skip to content

Commit 082eb51

Browse files
author
perrygeo
committed
added scale ranges and class names
git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@5776 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent ce0d6a2 commit 082eb51

File tree

1 file changed

+43
-6
lines changed

1 file changed

+43
-6
lines changed

tools/mapserver_export/ms_export.py

+43-6
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,13 @@ def writeWebSection(self):
176176
self.outFile.write(" 'wms_title' '" + self.mapName + "'\n")
177177
self.outFile.write(" 'wms_onlineresource' 'http://my.host.com/cgi-bin/mapserv?map=wms.map&'\n")
178178
self.outFile.write(" 'wms_srs' 'EPSG:4326'\n")
179-
self.outFile.write(" END\n")
179+
self.outFile.write(" END\n\n")
180+
181+
self.outFile.write(" #Scale range at which web interface will operate\n")
182+
if self.minScale != "":
183+
self.outFile.write(" MINSCALE " + self.minScale + "\n")
184+
if self.maxScale != "":
185+
self.outFile.write(" MAXSCALE " + self.maxScale + "\n")
180186

181187
self.outFile.write(" # Template and header/footer settings\n")
182188
self.outFile.write(" # Only the template parameter is required to display a map. See MapServer documentation\n")
@@ -187,7 +193,7 @@ def writeWebSection(self):
187193
self.outFile.write(" HEADER '" + self.header + "'\n")
188194
if self.footer != "":
189195
self.outFile.write(" FOOTER '" + self.footer + "'\n")
190-
self.outFile.write(" END\n")
196+
self.outFile.write(" END\n\n")
191197

192198
def parsePostgisConnection( self, dataString ):
193199
pg = {}
@@ -228,6 +234,11 @@ def writeMapLayers(self):
228234
self.outFile.write(" TYPE " + lyr.getAttribute("geometry").encode().upper() + "\n")
229235
elif lyr.getAttribute("type").encode() == 'raster':
230236
self.outFile.write(" TYPE " + lyr.getAttribute("type").encode().upper() + "\n")
237+
238+
# Set min/max scales
239+
if lyr.getAttribute('scaleBasedVisibilityFlag').encode() == 1:
240+
self.outFile.write(" MINSCALE " + lyr.getAttribute('minScale').encode() + "\n")
241+
self.outFile.write(" MAXSCALE " + lyr.getAttribute('maxScale').encode() + "\n")
231242

232243
# data
233244
dataString = lyr.getElementsByTagName("datasource")[0].childNodes[0].nodeValue.encode()
@@ -267,7 +278,7 @@ def writeMapLayers(self):
267278
self.outFile.write(" METADATA\n")
268279
self.outFile.write(" 'wms_name' '" + layername + "'\n")
269280
self.outFile.write(" 'wms_server_version' '1.1.1'\n")
270-
self.outFile.write(" 'wms_srs' 'EPSG:" + epsg + "'\n")
281+
self.outFile.write(" 'wms_srs' 'EPSG:4326 EPSG:" + epsg + "'\n")
271282
self.outFile.write(" 'wms_format' '" + format + "'\n")
272283
self.outFile.write(" 'wms_style' '" + style + "'\n")
273284
self.outFile.write(" END\n")
@@ -341,11 +352,17 @@ def simpleRenderer(self, layerNode, symbolNode):
341352
symbol = "'" + symbolName + "'"
342353

343354
self.outFile.write(" CLASS\n")
355+
356+
self.outFile.write(" NAME "
357+
+ lyr.getElementsByTagName("layername")[0].childNodes[0].nodeValue.encode()
358+
+ " \n")
359+
344360
# use the point symbol map to lookup the mapserver symbol type
345361
self.outFile.write(" SYMBOL " + symbol + " \n")
346362
self.outFile.write(" SIZE "
347363
+ symbolNode.getElementsByTagName('pointsize')[0].childNodes[0].nodeValue.encode()
348-
+ " \n")
364+
+ " \n")
365+
349366
# outline color
350367
outlineNode = symbolNode.getElementsByTagName('outlinecolor')[0]
351368
self.outFile.write(" OUTLINECOLOR "
@@ -387,8 +404,17 @@ def graduatedRenderer(self, layerNode, symbolNode):
387404
classes = layerNode.getElementsByTagName('symbol')
388405
for cls in classes:
389406
self.outFile.write(" CLASS\n")
407+
390408
lower = cls.getElementsByTagName('lowervalue')[0].childNodes[0].nodeValue.encode()
391409
upper = cls.getElementsByTagName('uppervalue')[0].childNodes[0].nodeValue.encode()
410+
411+
# If there's a label use it, otherwise autogenerate one
412+
try:
413+
label = cls.getElementsByTagName('label')[0].childNodes[0].nodeValue.encode()
414+
self.outFile.write(" NAME '" + label + "'\n")
415+
except:
416+
self.outFile.write(" NAME '" + lower + " < " + classField + " < " + upper + "'\n")
417+
392418
self.outFile.write(" EXPRESSION ( ([" + classField + "] >= " + lower + ") AND ([" + classField + "] <= " + upper + ") )\n")
393419

394420
# contains the same markup for a layer regardless of type
@@ -450,6 +476,9 @@ def continuousRenderer(self, layerNode, symbolNode):
450476
lower = symbolNode.getElementsByTagName('lowestsymbol')[0].getElementsByTagName('symbol')[0]
451477
upper = symbolNode.getElementsByTagName('highestsymbol')[0].getElementsByTagName('symbol')[0]
452478

479+
# Class name irrelevant for color ramps since mapserver can't render their legend
480+
#self.outFile.write(" NAME '" + classField + "'\n")
481+
453482
# color
454483
lowerColor = lower.getElementsByTagName('fillcolor')[0]
455484
upperColor = upper.getElementsByTagName('fillcolor')[0]
@@ -509,6 +538,14 @@ def uniqueRenderer(self, layerNode, symbolNode):
509538
self.outFile.write(" CLASS\n")
510539

511540
lower = cls.getElementsByTagName('lowervalue')[0].childNodes[0].nodeValue.encode()
541+
542+
# If there's a label use it, otherwise autogenerate one
543+
try:
544+
label = cls.getElementsByTagName('label')[0].childNodes[0].nodeValue.encode()
545+
self.outFile.write(" NAME '" + label + "'\n")
546+
except:
547+
self.outFile.write(" NAME '" + classField + " = " + lower + "' \n")
548+
512549
self.outFile.write(" EXPRESSION '" + lower + "' \n")
513550

514551
# contains the same markup for a layer regardless of type
@@ -532,14 +569,14 @@ def uniqueRenderer(self, layerNode, symbolNode):
532569

533570
# outline color
534571
outlineNode = cls.getElementsByTagName('outlinecolor')[0]
535-
self.outFile.write(" OUTLINECOLOR "
572+
self.outFile.write(" OUTLINECOLOR "
536573
+ outlineNode.getAttribute('red') + ' '
537574
+ outlineNode.getAttribute('green') + ' '
538575
+ outlineNode.getAttribute('blue')
539576
+ "\n")
540577
# color
541578
colorNode = cls.getElementsByTagName('fillcolor')[0]
542-
self.outFile.write(" COLOR "
579+
self.outFile.write(" COLOR "
543580
+ colorNode.getAttribute('red') + ' '
544581
+ colorNode.getAttribute('green') + ' '
545582
+ colorNode.getAttribute('blue')

0 commit comments

Comments
 (0)