[GRASSLIST:8418] Re: ps.map resolution

Ian MacMillan ian_macmillan at umail.ucsb.edu
Mon Sep 26 13:09:41 EDT 2005


Glynn, thanks for looking into this in more depth.  I agree that it 
seems like this part of the code should be ditched.  I will probably 
keep printing to large scale, then shrinking it down in other software 
until I have time to play around with the code.

-Ian

On Sep 26, 2005, at 9:02 AM, Glynn Clements wrote:

>
> Ian MacMillan wrote:
>
>> Glynn, I guess I just don't understand.  The raster can not be written
>> at the region's resolution with ps.map.  In my example I sent, the 
>> same
>> region produced rasters of different resolution solely based on the
>> scale entered in ps.map.  The resolution is much coarser for a 1:50000
>> map compared to a 1:500 map.  These maps were made without changing 
>> the
>> region.  I understand that the raster is embedded within the 
>> postscript
>> file, but that raster's resolution can not be based only on the
>> region's settings if one can get different resolutions without 
>> changing
>> the region.
>
> Sorry, you're right; ps.map has a hardcoded limit of 75dpi. The
> "scale" command changes the size of the image, and thus of the
> computed resolution.
>
> set_paper.c has a hardcoded setting:
>
>     PS.res = 75;
>
> This is used in map_setup.c to limit the size of a raster:
>
> 	if (PS.grey || PS.level == 1) limit = 300000000L;
> 	else limit = 100000000L;
>     	while (num_cells > limit || cells_per_inch > PS.res)
>     	{	
> 	    if (PS.cells_high >= PS.cells_wide)
>             {
> 	    	PS.cells_high /= 2;
> 	    	PS.ns_res *= 2.0;
> 	    	PS.row_delta++;
> 		cells_per_inch /= 2;
> 	    }
> 	    else
> 	    {
> 	    	PS.cells_wide /= 2;
> 	    	PS.ew_res *= 2.0;
> 	    	PS.col_delta++;
> 		cells_per_inch /= 2;
> 	    }
>     	    num_cells = (long)PS.cells_high * (long)PS.cells_wide;
>     	}
>
> Thus it effectively rescales the raster by powers of two until it is
> less than 75dpi and contains less than 3E8 pixels for greyscale or 1E8
> pixels for colour.
>
> You may be able to get around the 75dpi limit by selecting a larger
> paper size then rescaling it with psresize (from the psutils package).
>
> Personally, I think that code should simply be removed. I suspect that
> it was put there to prevent users from accidentally creating huge
> print jobs on a system which couldn't handle them.
>
> Note that the image is "streamed" (rendered as it is read from the
> PostScript file, not stored), so the amount of memory in the printer
> isn't an issue.
>
>> So it seems to me that the resolution is based on the region, and the
>> output device that the postscript is written to.  The effective
>> resolution of the raster in the postscript file does not necessarily
>> equal that of the region.  My question is this, how does one get an
>> effective resolution equal to that of my region in my final postscript
>> file using ps.map?  Can I set up a fake output device with a really
>> high resolution in Grass 6?
>
> Use a larger paper size, or simply remove all references to PS.res
> from ps.map.
>
> -- 
> Glynn Clements <glynn at gclements.plus.com>
>


-------------------------------------------------------------
This message has been scanned by Postini anti-virus software.




More information about the grass-user mailing list