[Mapserver-users] help with python mapscript (no image)

Sean Gillies sgillies at frii.com
Tue Dec 30 12:38:48 EST 2003


Hi Cristoph,

Are you using 4.0.1?  If not, I strongly recommend that you download
and build MapServer 4.0.1.

I'll try to explain the right way to do this with a little script:

     # I'm pretty sure that import * is safe, but not 100% sure
     from mapscript import mapObj
     import os

	# Create map instance
     myMap = mapObj('/var/www/htdocs/mapserver/obis_test/testing.map')
	
     # Draw map.  The resulting image acquires 'imagepath' and
     # 'imageurl' attributes from myMap and also acquires a 'format'
     # that is the same as the selected format of myMap, in this
     # case the built-in 'PNG24' format as defined in your map file
     mapImg = myMap.draw()

     # Save image to the imageurl location using a filename formed
     # from the map name and the output format extension, result
     # in your case will be 'PYDEMO.png'
     imagename = '.'.join((myMap.name, mapImg.format.extension))
     mapImg.save(os.path.join(mapImg.imageurl, imagename))

The IMAGEURL is a directory name.  It's not really required for a
Python MapScript app like it is with the mapserv CGI, but it remains
useful.

Hope this helps, cheers,
Sean

On Tuesday, December 30, 2003, at 09:55  AM, Christoph Spoerri wrote:

> Hi there,
>
> After using the php mapscripts for over a year now, I started to look 
> into the
> python mapscripts. It seems to provide more functionality and doesn't 
> have to
> have to be run as cgi (I'm using mod_python).
>
> The compilation, installation and setup went pretty smoothly. Now, I 
> would
> like to create my first map, but for some reason I do not get an image 
> in my
> output directory. I can create an image of the map by saving the image
> (imgObj::saveImage() ), but the mapObje::draw() doesn't seem to work.
>
> I run also the following from the python prompt:
>
>>>> from mapscript import *
>>>> myMap = mapObj('/var/www/htdocs/mapserver/obis_test/testing.map')
>>>> mapImg = myMap.draw()
>>>> mapImg.imageurl
> '/output/'
>>>> mapImg.save('/tmp/test.png')
>
> As you can see the imageurl only points to the directory where the 
> image
> should be and doesn't include the image name.
>
> I spent the last 4 hours search the mailing list, google, etc, yet 
> wasn't able
> to find a solution. Any ideas? I have attached my map file.
>
> thanks, and a happy new year
>
> Christoph
>
> ************** my map file ************************
>
> MAP
> 	NAME PYDEMO
> 	EXTENT -180 -90 180 90
> 	SIZE 400 300
> 	SHAPEPATH "/usr/local/ims_data/"
>
> 	UNITS DD
> 	RESOLUTION 72
> 	IMAGETYPE PNG24
> 	IMAGECOLOR 245 245 245
> 	WEB
> 		IMAGEPATH "/var/www/htdocs/ims_output/"
> 		IMAGEURL "/output/"
> 	END
>
> 	LAYER
> 		NAME "Background"
> 		STATUS DEFAULT
> 		DATA "datalib/global/ocean_log.tif"
> 		TYPE RASTER
> 		OFFSITE 0 0 0
> 	END
>
> 	LAYER
> 		NAME "Continents"
> 		STATUS DEFAULT
> 		DATA "datalib/global/world_usa_canada"
> 		TYPE POLYGON
> 		TRANSPARENCY 0
> 		CLASS
> 			COLOR 180 210 170
> 			OUTLINECOLOR 150 190 140
> 		END
> 	END
> END
>
>
--
Sean Gillies
sgillies at frii dot com
http://users.frii.com/sgillies




More information about the mapserver-users mailing list