up vote 2 down vote favorite
share [fb]

Following a few online tutorials I have seen, I am trying to create a mapfile from scratch using mapscript. However, when I try to create the layer object, I get an error in the init of mapscript.py; NameError: global name 'args' is not defined.

Does anyone see something obvious? When I use a mapfile that already exists on disk, everything works as expected.

        # create a new mapfile from scratch
        self.map = mapscript.mapObj()
        self.map.save('temp.map')
        self.map.setSize(256,256)
        self.map.setExtent(-180.0,-90.0,180.0,90.0)
        self.map.units= mapscript.MS_DD
        self.map.imagecolor.setRGB(255,255,255)

        # create a layer for the raster
        self.layer = mapscript.layerObj(self.map) ----> ERROR HAPPENS HERE
        self.layer.name= 'tilesource'
        self.layer.type= mapscript.MS_RASTER
        self.layer.status = mapscript.MS_ON
        self.layer.data= rasterpath
link|improve this question

65% accept rate
Was this resolved somehow? I'm getting the same error. – alxx May 24 '11 at 7:58
feedback

3 Answers

According to http://mapserver.org/mapscript/mapfile.html, creating a layer object works differently:

test_map = new mapscript.mapObj()
new_layer = new mapscript.layerObj()
li = test_map.insertLayer(new_layer)
link|improve this answer
Thanks for the suggestion, still get the same error with this approach. – user890 Apr 20 '11 at 11:52
Can you post the whole script? I can't see where it gets "global name 'args'" from. – underdark Apr 20 '11 at 11:53
The error is happening in mapscript.py, the SWIG generated wrapper. Its occurring in the init function at Line 1264. Do you want me to attach the mapscript.py file? – user890 Apr 20 '11 at 13:38
So "new mapscript.layerObj()" produces the same error like "mapscript.layerObj(self.map)"? (Notice keyword "new".) Which version of Mapserver are you running? – underdark Apr 20 '11 at 17:37
The new keyword isn't required for Python. These seem to be left over from the PHP examples. – geographika Jul 4 '11 at 20:54
feedback

I've been having the same problem when trying to create a new CLASS object. I've logged it as a bug as the SWIG wrappers seem incorrect for both layerObj and classObj. The args variable is defined in neither:

def __init__(self, map = None): 
    this = _mapscript.new_layerObj(map)
    try: self.this.append(this)
    except: self.this = this
    if 1:
          if args and len(args)!=0:
            self.p_map=args[0]
          else:
            self.p_map=None

http://trac.osgeo.org/mapserver/ticket/3940

Using MapServer 6.0 and Python SWIG bindings version 1.3.39

link|improve this answer
feedback

I am a mapserver developer and I have just committed a patch that should solve this issue. See changeset r12309 for the details.

link|improve this answer
Thank you @unicoletti. Nice to have you here! – underdark Aug 11 '11 at 12:47
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.