Zooming to match a raster scale

Ed McNierney ed at TOPOZONE.COM
Sun Apr 24 21:55:08 EDT 2005


Nick -
 
I'm not sure what your "unit" is supposed to mean, but I can describe
the process for taking the pixel size and finding the right
MINSCALE/MAXSCALE values.
 
The MINSCALE and MAXSCALE values are the denominators of scale ratios,
like 1:10,000 scale.  MINSCALE 10000 means "a minimum scale of
1:10,000", where one meter on the map equals 10,000 meters on the
ground.  The problem becomes, "what's one meter on the map"?
 
The RESOLUTION statement answers that question.  The default value is
72, meaning that 72 pixels in a MapServer output image are presumed to
occupy one inch on the screen.  This is actually unlikely to be an
accurate value unless you're running a 20-year-old Macintosh, but it
often doesn't matter - it's mostly used for internal calculations.
 
So, if 72 pixels are presumed to cover one inch on the screen, and your
image has a source resolution of 1.26956817 meters per pixel, then one
inch on the screen will show 72 * 1.26956817 meters or 91.40890824
meters of image.  Since 91.40890824 meters equals 3598.7687 inches, this
means one inch on the screen shows 3598.7687 inches on the ground - a
scale ratio of 1:3598.7687
 
If you displayed that image at the "scale" of 3598.7687 you should get a
pixel-for-pixel replica of your source image.  If you use a different
RESOLUTION statement, you need to adjust accordingly.
 
For calculating the IMGEXT values, you simply need to make the X extent
and Y extent equal the number of (X or Y) pixels in the image times
1.26956817.

Yes, there are better-quality ways of resampling images, but - as you
saw in Preview - they're slow.  MapServer doesn't use them, but you can
use various tools (including gdalwarp, from the GDAL distribution) to
resample images offline and create "pyramids" of varying resolutions.
This will improve the display quality of your images while keeping the
performance fast - at the expense of extra disk space and preprocessing
work.
 
    - Ed
Ed McNierney
President and Chief Mapmaker
TopoZone.com / Maps a la carte, Inc.
73 Princeton Street, Suite 305
North Chelmsford, MA  01863
Phone: +1 (978) 251-4242
Fax: +1 (978) 251-1396
ed at topozone.com 

________________________________

From: UMN MapServer Users List [mailto:MAPSERVER-USERS at LISTS.UMN.EDU] On
Behalf Of Nick Dabner
Sent: Sunday, April 24, 2005 7:17 PM
To: MAPSERVER-USERS at LISTS.UMN.EDU
Subject: Re: [UMN_MAPSERVER-USERS] Zooming to match a raster scale


Got it. - Thanks Bart. My extents were wrong as IMGEXT do not match the
gdalinfo info fo upper-left, lower-right style when applied to
Australia. Seems I have to switch the latitude. 

Ok, so just to finish up this thread, found a solution by taking a point
using Mapxy and then applying a scale or buffer. The rasters I am using
have a pixel size of (1.26956817,-1.26956817) and a unit of
0.0174532925199433. By matching the scale as returned in the
template/html file, as close as possible to this pixel size shown by
gdalinfo, the maps start looking pretty good as they have little or no
scaling. 

First question: With a given pixel size and unit (metres) above, what is
the formula to work out the scale to input? In the example above, I
found a value of .31267 would give me a matching output scale to pixel
size to 4 decimal places. 

Second question: Loading the TIF file up in Apple Preview, it looks
jagged for a moment, until it anti-aliases the file. Once anti-aliased,
the legibility improves noticeably. I take it mapserver cannot perform
any anti-aliasing when scaling rasters. I suspect even nearest neighbour
would be a great improvement. Any plans for this? I guess it would
require JPEG or PNG24 to provide enough colours. Is it possible for a
browser or client app to do this work? 

regards, 

Nick 


On 25/04/2005, at 7:45 AM, Nick Dabner wrote: 


        Thanks Bart, 

        So I take it that scale and mapxy are mutually exclusive with
mapext? Removing mapext always results in the error: 

        msDrawMap(): Image handling error. Unable to initialize image. 
        msCalculateScale(): General error message. Invalid image extent,
minx=-1.000000, miny=-1.000000, maxx=-1.000000, maxy=-1.000000 
        Any idea what I am doing wrong? Also I found out my scale is
current 3.15 on the output map and needs to be 2.59, hence the poor
output. Would a resolution tag in the mapfile help? 

        ND 

        On 24/04/2005, at 10:45 PM, Bart van den Eijnden wrote: 


                Hi Nick, 

                you can probably use a combination of mapxy and scale. 

                See Mapserver CGI reference: 
                http://mapserver.gis.umn.edu/doc44/cgi-reference.html 

                Best regards, 
                Bart 

                On Sun, 24 Apr 2005 22:38:34 +1000, Nick Dabner
<dabner at OPTUSNET.COM.AU> 
                wrote: 


                        Hello list, 

                        I have a set of raster geotiffs tiled and
working on mapserver 4.2 on 
                        osx (thanks to william k). 

                        When viewing the rasters in mapserver, I find
they suffer from some 
                        slight scaling and never look anywhere near as
good as the original 
                        files. I have given dithering and PNG24 a go,
but see that I probably 
                        need to match my mapserver session's scale as
close as possible to the 
                        source data scale. Does this sound right? 

                        Using CGI mapserver, how can I specify an exact
viewing area (to match 
                        my calculations)? What argument would I choose. 

                        Attemping to pass IMGEXT=2482199.076569
4407814.492404 2484230.3854232 
                        4406291.0107634 just returns an extent error.
Oh, I am in Melb Aust, so 
                        these are real coords. 

                        Any other ideas? The next step would probably be
fixed zoom levels for 
                        street, area, suburb, municipality and city or
similar, with 
                        preprocessed rasters for each level. 

                        regards, 

                        Nick 





                -- 
                Using Opera's revolutionary e-mail client:
http://www.opera.com/m2/ 


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/mapserver-users/attachments/20050424/dc514adb/attachment.html


More information about the mapserver-users mailing list