Google maps & Mapserver projection issue

Jan Hartmann j.l.h.hartmann at UVA.NL
Wed Jun 6 09:54:03 EDT 2007


Hi Jose,

I think mapext must have two negative and two postive values (you 
specify four negative values):

mapext=-7143498.91542+-3665050.56612+7142887.41919+3664442.05663

Does this work?

Jan

joseolcese wrote:
> Jan,
> 
> Thanks a lot for your responses!
> 
> I still have no success getting the right tile with mapscript or even
> mapserv.
> I implemented a code that Ei Fujioka sent me and this is the result:
> 
> I guess I've nailed down the problem to this:
> 
> **** .map with no PROJECTION and latlon coordinates:
> http://127.0.0.1/cgi-bin/mapserv?map=/mapear/map/mapNoProjection.map&mode=map&mapext=-64.171142578125+-31.419288124288343+-64.1656494140625+-31.41460027631321
> This gives me an image with some data printed -> OK
> 
> **** .map with PROJECTION and latlon coordinates:
> http://127.0.0.1/cgi-bin/mapserv?map=/mapear/map/mapProjection.map&mode=map&mapext=-64.171142578125+-31.419288124288343+-64.1656494140625+-31.41460027631321
> This gives me an image with NO data printed -> WRONG
> 
> Only difference between mapNoProjection.map and mapProjection.map is that
> the second one has:
> CONFIG PROJ_LIB '/usr/local/share/proj/'
>  PROJECTION
>  "init=esri:54004"
>  END
> 
> Now, using the code to convert coordinates to mercator meters, I got
> -64.171142578125+-31.419288124288343+-64.1656494140625+-31.41460027631321
> equal to:
> -7143498.91542,-3665050.56612,-7142887.41919,-3664442.05663
> 
> But if I request
> **** .map with PROJECTION and mercator meters coordinates:
> http://127.0.0.1/cgi-bin/mapserv?map=/mapear/map/mapProjection.map&mode=map&mapext=-7143498.91542+-3665050.56612+-7142887.41919+-3664442.05663
> This gives me an image with NO data printed -> WRONG
> 
> Any ideas??
> 
> Jose
> 
> 
> 
> 
> Jan Hartmann wrote:
>> With Mapscript it's easy:
>>
>> function ll2merc($lon,$lat) {
>> 	$projIn = ms_newprojectionobj("proj=latlong");
>> 	$projOut = ms_newprojectionobj("proj=merc");
>> 	$p = ms_newpointobj();
>> 	$p->setXY($lon,$lat);
>> 	$p->project($projIn, $projOut);
>> 	return($p);
>> }
>>
>> If you don't use Mapscript, you have to do the computations in 
>> Javascript. There is a project to implement the Proj package in
>> Javascript:
>>
>> http://lists.maptools.org/pipermail/proj/2006-February/002125.html
>>
>> but I have never worked with it
>>
>> Jan
>>
>> Jose Olcese wrote:
>>> Hi Jan,
>>>
>>> I really appreciate your help!. It seems that it might be the problem!.
>>> I'll try sending Mercator Coordinates in meters as the mapexp parameter 
>>> of mapserv.
>>>
>>> Do you have the algorithm for converting it?
>>>
>>> Thanks again
>>> Jose
>>>
>>>
>>>
>>>
>>> On 6/4/07, *Jan Hartmann* < j.l.h.hartmann at uva.nl 
>>> <mailto:j.l.h.hartmann at uva.nl>> wrote:
>>>
>>>     Hi Jose
>>>
>>>     Epsg 54004 is the classic Mercator projection. The units it uses are
>>> not
>>>     degrees but meters (only at the equator these are real meters). Using
>>>     proj I get the following boundary values (note that -180W/-90S and
>>>     180E/90N cannot be represented in a Mercator projection):
>>>
>>>     proj +init=epsg:54004
>>>     -170 -80
>>>     -18924313.43    -15496570.74
>>>     170 80
>>>     18924313.43     15496570.74
>>>
>>>     Hope this helps,
>>>
>>>     Jan
>>>
>>>     Dr. J. Hartmann
>>>     Department of Geography
>>>     University of Amsterdam
>>>
>>>     joseolcese wrote:
>>>      > Hi
>>>      >
>>>      > I'm trying to use Google maps & Mapserver with partial success...
>>>      > I have a .shp configured in mapserver and I can get a transparent
>>>     tile from
>>>      > an html page where it load google satellite view and my tiles.
>>>      > The problem is that I wasn't using any projection on my .map so
>>>     every tile
>>>      > was a little distorted.
>>>      > I added the epsg:54004 project to the .map but now the tiles are
>>>     empty.
>>>      >
>>>      > Do you have any idea why this my be happening?
>>>      >
>>>      > Thanks
>>>      > Jose Olcese
>>>      >
>>>      > .map:
>>>      >  IMAGETYPE      PNG
>>>      >  EXTENT           -64.20 -31.41 -64.19 -31.40
>>>      >  SIZE               256 256
>>>      >  SHAPEPATH      '/ms4w/apps/tutorial/data_jose'
>>>      >  FONTSET         '/ms4w/apps/tutorial/fonts/fonts.list'
>>>      >  TRANSPARENT  ON
>>>      >  CONFIG PROJ_LIB '/var/www/html/share/proj/'
>>>      >  PROJECTION
>>>      >  "init=esri:54004"
>>>      >  END
>>>      >   LAYER
>>>      > ...
>>>      > ...
>>>      >
>>>      >
>>>      > .html:
>>>      > ...
>>>      > ...
>>>      >         tileCountry.getTileUrl=function(xy,zoom)
>>>      >         {
>>>      >             var lng = (-180+((xy.x+0.5)*(360/Math.pow(2,zoom))));
>>>     // -180
>>>      > +180
>>>      >
>>>      >             var merclat_extent = 360/Math.pow(2,zoom);
>>>      >             var l = 180 - (( xy.y+0.5) * merclat_extent);
>>>      >             var e = Math.exp(2 * ( l * Math.PI) /180);
>>>      >             e = (e - 1)/(e + 1);
>>>      >             var lat = (Math.atan2(e, Math.sqrt(1 - (e * e))) *180
>>> /
>>>      > Math.PI );
>>>      >
>>>      >             return
>>>      > '
>>>    
>>> http://127.0.0.1/cgi-bin/mapserv?map=/ms4w/apps/tutorial/htdocs/map_test5.map&mode=map&mapxy=
>>>    
>>> <http://127.0.0.1/cgi-bin/mapserv?map=/ms4w/apps/tutorial/htdocs/map_test5.map&mode=map&mapxy=>'
>>>      > + lng + '+' + lat + '&buffer=' + ((360/Math.pow(2,zoom))/2);
>>>      >     }
>>>      > ...
>>>      >
>>>      >
>>>      >
>>>
>>>
>>
> 



More information about the mapserver-users mailing list