Failed in dynamic adding classes

myunghwa Hwang mhwang4 at UIUC.EDU
Mon Nov 13 22:47:29 EST 2006


By using a new feature of MapServer 4.9 +, i.e. OWSDispath,
I tried to dynamically add new classes into the original map file.
My code is the following:

#!/usr/local/bin/python

import cgi
import cgitb; cgitb.enable()
import mapscript as ms

cgi_queryitems = ['classitem', 'classification', 'numclass']
cgi_layers = ['bnd_1940', 'bnd_1950']

form = cgi.FieldStorage()

req = ms.OWSRequest()
# req.loadParams()

for key in form.keys():
     if key not in cgi_queryitems:
         req.setParameter(key, form[key].value)

map = ms.mapObj('/Users/myunghwa/Sites/Riverweb2/Riverweb.map')

for layer in cgi_layers:
     aLayer = map.getLayerByName(layer)
     firstClass = ms.classObj(aLayer)
     firstClass.name = "Total Population < 3000"
     firstClass.setExpression("([%s] < %s)" % ('poptotal', '3000') )
     firstStyle = ms.styleObj(firstClass)
     firstStyle.color.setRGB(0, 255, 0)
     firstStyle.outlinecolor.setRGB(0, 0, 255)
     aLayer.moveClassUp(1)
     secondClass = ms.classObj(aLayer)
     secondClass.name = "Total Population >= 3000"
     secondClass.setExpression("([%s] >= %s)" % ('poptotal', '3000') )
     secondStyle = ms.styleObj(secondClass)
     secondStyle.color.setRGB(0, 180, 0)
     secondStyle.outlinecolor.setRGB(0, 0, 255)
     aLayer.moveClassUp(2)
     aLayer.status = 1

map.OWSDispatch(req)

If I remove the second for loop, it worked well.
But if I include the second for, it just shows a white image.
If anybody knows why it happens, please let me know.
Or if you explain how OWSDispatch works, it'll be greatly helpful.

from Myunghwa Hwang



More information about the mapserver-users mailing list