@@ -104,16 +104,16 @@ def writeMapSection(self):
104
104
# extents
105
105
xmin = self .qgs .getElementsByTagName ("xmin" )
106
106
self .outFile .write (" EXTENT " )
107
- self .outFile .write (xmin [0 ].childNodes [0 ].nodeValue .encode ())
107
+ self .outFile .write (xmin [0 ].childNodes [0 ].nodeValue .encode ('utf-8' ))
108
108
self .outFile .write (" " )
109
109
ymin = self .qgs .getElementsByTagName ("ymin" )
110
- self .outFile .write (ymin [0 ].childNodes [0 ].nodeValue .encode ())
110
+ self .outFile .write (ymin [0 ].childNodes [0 ].nodeValue .encode ('utf-8' ))
111
111
self .outFile .write (" " )
112
112
xmax = self .qgs .getElementsByTagName ("xmax" )
113
- self .outFile .write (xmax [0 ].childNodes [0 ].nodeValue .encode ())
113
+ self .outFile .write (xmax [0 ].childNodes [0 ].nodeValue .encode ('utf-8' ))
114
114
self .outFile .write (" " )
115
115
ymax = self .qgs .getElementsByTagName ("ymax" )
116
- self .outFile .write (ymax [0 ].childNodes [0 ].nodeValue .encode ())
116
+ self .outFile .write (ymax [0 ].childNodes [0 ].nodeValue .encode ('utf-8' ))
117
117
self .outFile .write ("\n " )
118
118
119
119
# Write the OUTPUTFORMAT section
@@ -141,7 +141,7 @@ def writeProjectionSection(self):
141
141
142
142
# Get the proj4 text from the first map layer's destination SRS
143
143
destsrs = self .qgs .getElementsByTagName ("destinationsrs" )[0 ]
144
- proj4Text = destsrs .getElementsByTagName ("proj4" )[0 ].childNodes [0 ].nodeValue .encode ()
144
+ proj4Text = destsrs .getElementsByTagName ("proj4" )[0 ].childNodes [0 ].nodeValue .encode ('utf-8' )
145
145
# the proj4 text string needs to be reformatted to make mapserver happy
146
146
self .outFile .write (self .formatProj4 (proj4Text ))
147
147
@@ -240,24 +240,24 @@ def writeMapLayers(self):
240
240
241
241
self .outFile .write (" LAYER\n " )
242
242
# write the name of the layer
243
- self .outFile .write (" NAME '" + lyr .getElementsByTagName ("layername" )[0 ].childNodes [0 ].nodeValue .encode () + "'\n " )
244
- if lyr .getAttribute ("type" ).encode () == 'vector' :
245
- self .outFile .write (" TYPE " + lyr .getAttribute ("geometry" ).encode ().upper () + "\n " )
246
- elif lyr .getAttribute ("type" ).encode () == 'raster' :
247
- self .outFile .write (" TYPE " + lyr .getAttribute ("type" ).encode ().upper () + "\n " )
243
+ self .outFile .write (" NAME '" + lyr .getElementsByTagName ("layername" )[0 ].childNodes [0 ].nodeValue .encode ('utf-8' ) + "'\n " )
244
+ if lyr .getAttribute ("type" ).encode ('utf-8' ) == 'vector' :
245
+ self .outFile .write (" TYPE " + lyr .getAttribute ("geometry" ).encode ('utf-8' ).upper () + "\n " )
246
+ elif lyr .getAttribute ("type" ).encode ('utf-8' ) == 'raster' :
247
+ self .outFile .write (" TYPE " + lyr .getAttribute ("type" ).encode ('utf-8' ).upper () + "\n " )
248
248
249
249
# Set min/max scales
250
- if lyr .getAttribute ('scaleBasedVisibilityFlag' ).encode () == 1 :
251
- self .outFile .write (" MINSCALE " + lyr .getAttribute ('minScale' ).encode () + "\n " )
252
- self .outFile .write (" MAXSCALE " + lyr .getAttribute ('maxScale' ).encode () + "\n " )
250
+ if lyr .getAttribute ('scaleBasedVisibilityFlag' ).encode ('utf-8' ) == 1 :
251
+ self .outFile .write (" MINSCALE " + lyr .getAttribute ('minScale' ).encode ('utf-8' ) + "\n " )
252
+ self .outFile .write (" MAXSCALE " + lyr .getAttribute ('maxScale' ).encode ('utf-8' ) + "\n " )
253
253
254
254
# data
255
- dataString = lyr .getElementsByTagName ("datasource" )[0 ].childNodes [0 ].nodeValue .encode ()
255
+ dataString = lyr .getElementsByTagName ("datasource" )[0 ].childNodes [0 ].nodeValue .encode ('utf-8' )
256
256
257
257
# test if it is a postgis, grass or WMS layer
258
258
# is there a better way to do this? probably.
259
259
try :
260
- providerString = lyr .getElementsByTagName ("provider" )[0 ].childNodes [0 ].nodeValue .encode ()
260
+ providerString = lyr .getElementsByTagName ("provider" )[0 ].childNodes [0 ].nodeValue .encode ('utf-8' )
261
261
except :
262
262
# if providerString is null
263
263
providerString = ''
@@ -270,7 +270,7 @@ def writeMapLayers(self):
270
270
+ " password=" + pg ['password' ] + " user=" + pg ['user' ] + "'\n " )
271
271
self .outFile .write (" DATA '" + pg ['geom' ] + " FROM " + pg ['table' ] + "'\n " )
272
272
273
- elif providerString == 'wms' and lyr .getAttribute ("type" ).encode ().upper () == 'RASTER' :
273
+ elif providerString == 'wms' and lyr .getAttribute ("type" ).encode ('utf-8' ).upper () == 'RASTER' :
274
274
# it's a WMS layer
275
275
self .outFile .write (" CONNECTIONTYPE WMS\n " )
276
276
self .outFile .write (" CONNECTION '" + dataString + "'\n " )
@@ -280,16 +280,16 @@ def writeMapLayers(self):
280
280
wmsNames = []
281
281
wmsStyles = []
282
282
for wmsLayer in wmsSubLayers :
283
- wmsNames .append ( wmsLayer .getElementsByTagName ('name' )[0 ].childNodes [0 ].nodeValue .encode () )
283
+ wmsNames .append ( wmsLayer .getElementsByTagName ('name' )[0 ].childNodes [0 ].nodeValue .encode ('utf-8' ) )
284
284
try :
285
- wmsStyles .append ( wmsLayer .getElementsByTagName ('style' )[0 ].childNodes [0 ].nodeValue .encode () )
285
+ wmsStyles .append ( wmsLayer .getElementsByTagName ('style' )[0 ].childNodes [0 ].nodeValue .encode ('utf-8' ) )
286
286
except :
287
287
wmsStyles .append ( '' )
288
288
# Create necesssary wms metadata
289
- format = rasterProp .getElementsByTagName ('wmsFormat' )[0 ].childNodes [0 ].nodeValue .encode ()
289
+ format = rasterProp .getElementsByTagName ('wmsFormat' )[0 ].childNodes [0 ].nodeValue .encode ('utf-8' )
290
290
ct = lyr .getElementsByTagName ('coordinatetransform' )[0 ]
291
291
srs = ct .getElementsByTagName ('sourcesrs' )[0 ].getElementsByTagName ('spatialrefsys' )[0 ]
292
- epsg = srs .getElementsByTagName ('epsg' )[0 ].childNodes [0 ].nodeValue .encode ()
292
+ epsg = srs .getElementsByTagName ('epsg' )[0 ].childNodes [0 ].nodeValue .encode ('utf-8' )
293
293
self .outFile .write (" METADATA\n " )
294
294
self .outFile .write (" 'wms_name' '" + ',' .join (wmsNames ) + "'\n " )
295
295
self .outFile .write (" 'wms_server_version' '1.1.1'\n " )
@@ -305,24 +305,24 @@ def writeMapLayers(self):
305
305
# WMS settings for all layers
306
306
self .outFile .write (" METADATA\n " )
307
307
self .outFile .write (" 'wms_title' '"
308
- + lyr .getElementsByTagName ("layername" )[0 ].childNodes [0 ].nodeValue .encode () + "'\n " )
308
+ + lyr .getElementsByTagName ("layername" )[0 ].childNodes [0 ].nodeValue .encode ('utf-8' ) + "'\n " )
309
309
self .outFile .write (" END\n " )
310
310
311
311
self .outFile .write (" STATUS DEFAULT\n " )
312
312
313
313
opacity = int ( 100.0 *
314
- float (lyr .getElementsByTagName ("transparencyLevelInt" )[0 ].childNodes [0 ].nodeValue .encode ()) / 255.0 )
314
+ float (lyr .getElementsByTagName ("transparencyLevelInt" )[0 ].childNodes [0 ].nodeValue .encode ('utf-8' )) / 255.0 )
315
315
self .outFile .write (" TRANSPARENCY " + str (opacity ) + "\n " )
316
316
317
317
self .outFile .write (" PROJECTION\n " )
318
- proj4Text = lyr .getElementsByTagName ("proj4" )[0 ].childNodes [0 ].nodeValue .encode ()
318
+ proj4Text = lyr .getElementsByTagName ("proj4" )[0 ].childNodes [0 ].nodeValue .encode ('utf-8' )
319
319
self .outFile .write (self .formatProj4 (proj4Text ))
320
320
self .outFile .write (" END\n " )
321
- scaleDependent = lyr .getAttribute ("scaleBasedVisibilityFlag" ).encode ()
321
+ scaleDependent = lyr .getAttribute ("scaleBasedVisibilityFlag" ).encode ('utf-8' )
322
322
if scaleDependent == '1' :
323
323
# get the min and max scale settings
324
- minscale = lyr .getAttribute ("minScale" ).encode ()
325
- maxscale = lyr .getAttribute ("maxScale" ).encode ()
324
+ minscale = lyr .getAttribute ("minScale" ).encode ('utf-8' )
325
+ maxscale = lyr .getAttribute ("maxScale" ).encode ('utf-8' )
326
326
if minscale > '' :
327
327
self .outFile .write (" MINSCALE " + minscale + "\n " )
328
328
if maxscale > '' :
@@ -331,9 +331,9 @@ def writeMapLayers(self):
331
331
332
332
# Check for label field (ie LABELITEM) and label status
333
333
try :
334
- labelOn = lyr .getElementsByTagName ("label" )[0 ].childNodes [0 ].nodeValue .encode ()
334
+ labelOn = lyr .getElementsByTagName ("label" )[0 ].childNodes [0 ].nodeValue .encode ('utf-8' )
335
335
labelNode = lyr .getElementsByTagName ('labelattributes' )[0 ]
336
- labelField = labelNode .getElementsByTagName ('label' )[0 ].getAttribute ('field' ).encode ()
336
+ labelField = labelNode .getElementsByTagName ('label' )[0 ].getAttribute ('field' ).encode ('utf-8' )
337
337
if labelField != '' and labelField is not None and labelOn == "1" :
338
338
self .outFile .write (" LABELITEM '" + labelField + "'\n " );
339
339
except :
@@ -360,20 +360,20 @@ def writeMapLayers(self):
360
360
# We need the layer node and symbol node
361
361
def simpleRenderer (self , layerNode , symbolNode ):
362
362
# get the layers geometry type
363
- geometry = layerNode .getAttribute ("geometry" ).encode ().upper ()
363
+ geometry = layerNode .getAttribute ("geometry" ).encode ('utf-8' ).upper ()
364
364
365
365
self .outFile .write (" CLASS\n " )
366
366
367
367
self .outFile .write (" NAME "
368
- + layerNode .getElementsByTagName ("layername" )[0 ].childNodes [0 ].nodeValue .encode ()
368
+ + layerNode .getElementsByTagName ("layername" )[0 ].childNodes [0 ].nodeValue .encode ('utf-8' )
369
369
+ " \n " )
370
370
371
371
self .outFile .write (" STYLE\n " )
372
372
# use the point symbol map to lookup the mapserver symbol type
373
373
symbol = self .msSymbol ( geometry , symbolNode )
374
374
self .outFile .write (" SYMBOL " + symbol + " \n " )
375
375
self .outFile .write (" SIZE "
376
- + symbolNode .getElementsByTagName ('pointsize' )[0 ].childNodes [0 ].nodeValue .encode ()
376
+ + symbolNode .getElementsByTagName ('pointsize' )[0 ].childNodes [0 ].nodeValue .encode ('utf-8' )
377
377
+ " \n " )
378
378
379
379
# outline color
@@ -402,10 +402,10 @@ def simpleRenderer(self, layerNode, symbolNode):
402
402
# Graduated symbol renderer output
403
403
def graduatedRenderer (self , layerNode , symbolNode ):
404
404
# get the layers geometry type
405
- geometry = layerNode .getAttribute ("geometry" ).encode ().upper ()
405
+ geometry = layerNode .getAttribute ("geometry" ).encode ('utf-8' ).upper ()
406
406
407
407
# get the renderer field for building up the classes
408
- classField = layerNode .getElementsByTagName ('classificationattribute' )[0 ].childNodes [0 ].nodeValue .encode ()
408
+ classField = layerNode .getElementsByTagName ('classificationattribute' )[0 ].childNodes [0 ].nodeValue .encode ('utf-8' )
409
409
# write the render item
410
410
self .outFile .write (" CLASSITEM '" + classField + "'\n " )
411
411
@@ -414,12 +414,12 @@ def graduatedRenderer(self, layerNode, symbolNode):
414
414
for cls in classes :
415
415
self .outFile .write (" CLASS\n " )
416
416
417
- lower = cls .getElementsByTagName ('lowervalue' )[0 ].childNodes [0 ].nodeValue .encode ()
418
- upper = cls .getElementsByTagName ('uppervalue' )[0 ].childNodes [0 ].nodeValue .encode ()
417
+ lower = cls .getElementsByTagName ('lowervalue' )[0 ].childNodes [0 ].nodeValue .encode ('utf-8' )
418
+ upper = cls .getElementsByTagName ('uppervalue' )[0 ].childNodes [0 ].nodeValue .encode ('utf-8' )
419
419
420
420
# If there's a label use it, otherwise autogenerate one
421
421
try :
422
- label = cls .getElementsByTagName ('label' )[0 ].childNodes [0 ].nodeValue .encode ()
422
+ label = cls .getElementsByTagName ('label' )[0 ].childNodes [0 ].nodeValue .encode ('utf-8' )
423
423
self .outFile .write (" NAME '" + label + "'\n " )
424
424
except :
425
425
self .outFile .write (" NAME '" + lower + " < " + classField + " < " + upper + "'\n " )
@@ -434,7 +434,7 @@ def graduatedRenderer(self, layerNode, symbolNode):
434
434
# Symbol size
435
435
if geometry == 'POINT' or geometry == 'LINE' :
436
436
self .outFile .write (" SIZE "
437
- + cls .getElementsByTagName ('pointsize' )[0 ].childNodes [0 ].nodeValue .encode ()
437
+ + cls .getElementsByTagName ('pointsize' )[0 ].childNodes [0 ].nodeValue .encode ('utf-8' )
438
438
+ " \n " )
439
439
440
440
# outline color
@@ -463,10 +463,10 @@ def graduatedRenderer(self, layerNode, symbolNode):
463
463
# Continuous symbol renderer output
464
464
def continuousRenderer (self , layerNode , symbolNode ):
465
465
# get the layers geometry type
466
- geometry = layerNode .getAttribute ("geometry" ).encode ().upper ()
466
+ geometry = layerNode .getAttribute ("geometry" ).encode ('utf-8' ).upper ()
467
467
468
468
# get the renderer field for building up the classes
469
- classField = layerNode .getElementsByTagName ('classificationattribute' )[0 ].childNodes [0 ].nodeValue .encode ()
469
+ classField = layerNode .getElementsByTagName ('classificationattribute' )[0 ].childNodes [0 ].nodeValue .encode ('utf-8' )
470
470
471
471
# write the rendering info for each class
472
472
self .outFile .write (" CLASS\n " )
@@ -496,8 +496,8 @@ def continuousRenderer(self, layerNode, symbolNode):
496
496
497
497
# The range of values over which to ramp the colors
498
498
self .outFile .write (" DATARANGE "
499
- + lower .getElementsByTagName ('lowervalue' )[0 ].childNodes [0 ].nodeValue .encode () + ' '
500
- + upper .getElementsByTagName ('lowervalue' )[0 ].childNodes [0 ].nodeValue .encode () + '\n ' )
499
+ + lower .getElementsByTagName ('lowervalue' )[0 ].childNodes [0 ].nodeValue .encode ('utf-8' ) + ' '
500
+ + upper .getElementsByTagName ('lowervalue' )[0 ].childNodes [0 ].nodeValue .encode ('utf-8' ) + '\n ' )
501
501
502
502
self .outFile .write (" RANGEITEM '" + classField + "'\n " )
503
503
self .outFile .write (" END\n " )
@@ -519,10 +519,10 @@ def continuousRenderer(self, layerNode, symbolNode):
519
519
# Unique value renderer output
520
520
def uniqueRenderer (self , layerNode , symbolNode ):
521
521
# get the renderer field for building up the classes
522
- classField = layerNode .getElementsByTagName ('classificationattribute' )[0 ].childNodes [0 ].nodeValue .encode ()
522
+ classField = layerNode .getElementsByTagName ('classificationattribute' )[0 ].childNodes [0 ].nodeValue .encode ('utf-8' )
523
523
524
524
# get the layers geometry type
525
- geometry = layerNode .getAttribute ("geometry" ).encode ().upper ()
525
+ geometry = layerNode .getAttribute ("geometry" ).encode ('utf-8' ).upper ()
526
526
527
527
# write the render item
528
528
self .outFile .write (" CLASSITEM '" + classField + "'\n " )
@@ -532,11 +532,11 @@ def uniqueRenderer(self, layerNode, symbolNode):
532
532
for cls in classes :
533
533
self .outFile .write (" CLASS\n " )
534
534
535
- lower = cls .getElementsByTagName ('lowervalue' )[0 ].childNodes [0 ].nodeValue .encode ()
535
+ lower = cls .getElementsByTagName ('lowervalue' )[0 ].childNodes [0 ].nodeValue .encode ('utf-8' )
536
536
537
537
# If there's a label use it, otherwise autogenerate one
538
538
try :
539
- label = cls .getElementsByTagName ('label' )[0 ].childNodes [0 ].nodeValue .encode ()
539
+ label = cls .getElementsByTagName ('label' )[0 ].childNodes [0 ].nodeValue .encode ('utf-8' )
540
540
self .outFile .write (" NAME '" + label + "'\n " )
541
541
except :
542
542
self .outFile .write (" NAME '" + classField + " = " + lower + "' \n " )
@@ -552,7 +552,7 @@ def uniqueRenderer(self, layerNode, symbolNode):
552
552
# Symbol size
553
553
if geometry == 'POINT' or geometry == 'LINE' :
554
554
self .outFile .write (" SIZE "
555
- + cls .getElementsByTagName ('pointsize' )[0 ].childNodes [0 ].nodeValue .encode ()
555
+ + cls .getElementsByTagName ('pointsize' )[0 ].childNodes [0 ].nodeValue .encode ('utf-8' )
556
556
+ " \n " )
557
557
558
558
# outline color
@@ -600,7 +600,7 @@ def msSymbol(self, geometry, symbolNode):
600
600
symbol = '0'
601
601
elif geometry == 'POINT' :
602
602
try :
603
- symbolName = qgisSymbols [symbolNode .getElementsByTagName ('pointsymbol' )[0 ].childNodes [0 ].nodeValue .encode ()]
603
+ symbolName = qgisSymbols [symbolNode .getElementsByTagName ('pointsymbol' )[0 ].childNodes [0 ].nodeValue .encode ('utf-8' )]
604
604
except :
605
605
symbolName = "CIRCLE"
606
606
# make sure it's single quoted
@@ -639,7 +639,7 @@ def msSymbol(self, geometry, symbolNode):
639
639
def msLabel (self , layerNode ):
640
640
# currently a very basic bitmap font
641
641
labelNode = layerNode .getElementsByTagName ('labelattributes' )[0 ]
642
- labelField = labelNode .getElementsByTagName ('label' )[0 ].getAttribute ('field' ).encode ()
642
+ labelField = labelNode .getElementsByTagName ('label' )[0 ].getAttribute ('field' ).encode ('utf-8' )
643
643
if labelField != '' and labelField is not None :
644
644
labelBlock = " LABEL \n "
645
645
@@ -648,15 +648,15 @@ def msLabel(self, layerNode):
648
648
649
649
# Include label angle if specified
650
650
# Note that angles only work for truetype fonts which aren't supported yet
651
- angle = labelNode .getElementsByTagName ('angle' )[0 ].getAttribute ('value' ).encode ()
651
+ angle = labelNode .getElementsByTagName ('angle' )[0 ].getAttribute ('value' ).encode ('utf-8' )
652
652
labelBlock += " ANGLE " + angle + "\n "
653
653
654
654
# Include label buffer if specified
655
655
# Note that the buffer has different meaning in qgis vs mapserver
656
656
# mapserver just adds blank space around the label while
657
657
# qgis uses a fill color around the label
658
658
# Note that buffer only works for truetype fonts which aren't supported yet
659
- buffer = labelNode .getElementsByTagName ('buffersize' )[0 ].getAttribute ('value' ).encode ()
659
+ buffer = labelNode .getElementsByTagName ('buffersize' )[0 ].getAttribute ('value' ).encode ('utf-8' )
660
660
labelBlock += " BUFFER " + buffer + "\n "
661
661
662
662
labelBlock += " END \n "
0 commit comments