[Mapserver-users] Mapscript $layerObj->draw($imageObj) bug?

Homme Zwaagstra hrz at geodata.soton.ac.uk
Tue Jun 1 13:47:22 EDT 2004


--vkogqOf2sHV7VnPd
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

Hi,

I have a mapscript problem:

Using the draw method of a layerObj instance doesn't seem to correctly
draw scaled symbols; I am attempting to set a point layer's SIZEUNITS
property to KILOMETERS in an effort to draw a scaled buffer (see
attached test.map for minimalist mapfile).

Calling shp2img on this mapfile produces an image with a correctly
scaled symbol. Creating the image with the the mapObj's draw method
also works correctly (see attached output image map_draw.png). Using
the layerObj's draw method, however, seems to ignore the SIZEUNITS
setting and uses the default scaling of pixels (see attached output
image layer_draw.png). 

This issue exists in PHP mapscript and Python mapscript. See the
attached files test.php and test.py for scripts demonstrating the
problem.

I'm using mapscript and mapserver 4.2.0. This problem manifested
itself in 4.0.1 but I upgraded before investigating further. 

I've searched the archives but could find no mention of this
problem. Am I missing something here or is this a bug? If I don't hear
back I'll file it in bugzilla...

Kind regards,

Homme Zwaagstra

--vkogqOf2sHV7VnPd
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="test.map"

MAP
	NAME TEST
	STATUS ON
	#EXTENT 418917.11 64936.18 494853.73 115804.77 # large extent
    EXTENT 439537 89319.1 460612 104483            # small extent
	UNITS METERS
	IMAGECOLOR 200 200 255
    SIZE 261 175 
    SYMBOLSET "test.sym"

	LAYER
		NAME "point"
		TYPE POINT
		STATUS ON
        SIZEUNITS KILOMETERS

        FEATURE
           POINTS 450074 97030 END
        END

		CLASS
		  STYLE
			OUTLINECOLOR 255 0 0
			COLOR 255 0 0
            SIZE 4
            SYMBOL "circle"
		  END
		END
    END
END
--vkogqOf2sHV7VnPd
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="test.sym"

SYMBOL
  NAME "circle"
  TYPE ELLIPSE
  FILLED TRUE
  POINTS
    1 1
  END
END
--vkogqOf2sHV7VnPd
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="test.php"

<?php

dl('php_mapscript.so');

// returns an imageObj
function get_image($map) 
{
	return $map->draw();		// comment out this line to return imageObj with buggy symbol

	$image = $map->prepareImage();
	$layer = $map->getLayerByName('point');
	$layer->draw($image);
	return $image;
}

$map = ms_newMapObj('test.map');
$image = get_image($map);		// get the imageObj
$image->saveImage('/tmp/test.png');

?>
--vkogqOf2sHV7VnPd
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="test.py"

# returns an imageObj
def get_image(map):
	return map.draw()					# comment out this line to return imageObj with buggy symbol

	image = map.prepareImage()
	layer = map.getLayerByName('point')
	layer.draw(map, image)
	return image

import mapscript

map = mapscript.mapObj('test.map')
image = get_image(map)					# get the imageObj
image.save('/tmp/test.png')


--vkogqOf2sHV7VnPd
Content-Type: image/png
Content-Disposition: attachment; filename="map_draw.png"
Content-Transfer-Encoding: base64

iVBORw0KGgoAAAANSUhEUgAAAQUAAACvAQMAAAG5r2l4AAAABlBMVEXIyP//AADhJLQQAAAA
9UlEQVR4nO2XzQ2DMAyFiXLgmG7QURgNRssoGYEjB1S3IEHAjuqgQoSq9x0s62ElxvmvqsP4
yZgwWdtvbIj65XSxR2mNL5KDih0Wz42r95JevX6twvVZ3ZM4ZnW/eC5Rv2emt6n42kps+S4z
BJyBI6405JlC1O8FQzRoiiUatRipyL4S+cicAQAlsXzhbs7khYY6prSJvSVoikntP0yxqf2n
mJKTYc6fJuojayjrLMcCAAAAKMpDC2jEjZ/xOTmV670jeXDyTuTDYk9L4nki0/ieiJ0jup8i
6jnC/0XEGfXQq66PXMbo6zNIn4X6TM5YDQAAkMsb0b7VKG9JJp4AAAAASUVORK5CYII=

--vkogqOf2sHV7VnPd
Content-Type: image/png
Content-Disposition: attachment; filename="layer_draw.png"
Content-Transfer-Encoding: base64

iVBORw0KGgoAAAANSUhEUgAAAQUAAACvAQMAAAG5r2l4AAAABlBMVEXIyP//AADhJLQQAAAA
NklEQVR4nO3OoREAIAwEwZSFpBRKpxQcJggEM0Tsyp8THwHAwfh9AGDraZkXDQBAPe1BAUBh
Cxh0AjG8NnTVAAAAAElFTkSuQmCC

--vkogqOf2sHV7VnPd--



More information about the mapserver-users mailing list