[Mapserver-users] Map Extent

Lowell Filak lfilak at medinaco.org
Thu Feb 6 07:13:52 PST 2003


I think because your x extents are negative you need to change '$x = $imgext[0] + $cx*$x;' to '$x = $imgext[0] - $cx*$x;' or '$x = $imgext[0] + abs($cx*$x);'.
The original code was developed for Minnesota & stateplane so a negative was not required.
HTH
Lowell F.

The following message was sent by Eric Bridger <eric at gomoos.org> on 03 Feb 2003 13:45:39 +0000.

> 
> 
> Hi all.  I am a new mapserver, mapscript user, about 2 weeks now.  So
> first my thanks to all involved in developing a truly excellent
> application.  We are using Mapserver 3.6.4 and mapscript to develop an
> Linux Apache/mod-perl oceanographic application.
> 
> I am having trouble mapping the users map image mouse click to map
> coordinates with precision.  At first I thought it might be the
> registration of the map datasets we were using (shape files) with one
> shaded relief jpg, so I switched to using the states_ugl data and the
> s1ex1.map from the 3.6 tutorial in a simple mapscript test and noticed
> the same issues.
> 
> When adding a point symbol to the map at the location clicked, the
> symbol appears near where I expected but not exactly where I expected. 
> The closer I click to the center of the map the closer the symbol
> registers.  It appears to me that the y-coordinate is always on target,
> but that the x corrdinate is off. The closer to the edges of the map,
> the further off the x coordinate is.
> 
> Perhaps this has to do with the fact that the map created 400x300 goes
> all the way from y=0 to y=400, but not from x=0 to x=300?
> 
> The mapextent is gotten from the map object created from the map file.
> 
> I calculate the map coordinates with code adapted from the mapquakes.pl
> example: 
> if($q->param('img.x') && $q->param('imgext')) { # Make sure we got a
> click
>     @imgext = split(' ', $q->param('imgext'));
>     $x = $q->param('img.x');
>     $y = $q->param('img.y');
> 
>     $cx = ($imgext[2]-$imgext[0])/($map->{width}-1);  
>     $cy = ($imgext[3]-$imgext[1])/($map->{height}-1);
> 
>     $x = $imgext[0] + $cx*$x;
>     $y = $imgext[3] - $cy*$y;
> }
> 
> Create a point object and add it to the map and display it.
> 
> 
> Par of the map file:
> MAP
> EXTENT -97.238976 41.619778 -82.122902 49.38562
> SIZE 400 300
> SHAPEPATH "/home/eric/work/htdocs/mapserver/tutorial35/data"
> # Added by EB
> IMAGETYPE PNG
> UNITS DD
> 
> LAYER # States
>   NAME "lobster_zones"
>   DATA states_ugl
>   STATUS DEFAULT
>   TYPE POLYGON
>   CLASSITEM "STATE"
>   CLASS
>     NAME "Michigan"
>     COLOR 255 255 128
>     OUTLINECOLOR 0 0 0
>   END # end of class object
> END # end of layer object
> 
> ....
> 
> Thanks.
> 
> Eric Bridger
> eric at gomoos.org
> Gulf of Maine Ocean Observing System www.gomoos.org
> 
> 
> _______________________________________________
> Mapserver-users mailing list
> Mapserver-users at lists.gis.umn.edu
> http://lists.gis.umn.edu/mailman/listinfo/mapserver-users




More information about the MapServer-users mailing list