Hi,
You'll have to set the projection of all your layers in the mapfile. This why changing the projection of the map object won't affect them. Then you'll be able to use:
$map->setProjection("proj=robin,lon_0=0,x_0=0,y_0=0", MS_TRUE);

For the PostGIS SRID, you don't have to change anything if you set the PROJECTION in your layer.

Julien


Brent Wood wrote:
--- Stefan Schwarzer <[EMAIL PROTECTED]> wrote:


Hi there,

i am struggling since quite a while to set-up a change-projection-on- the-fly possibility for our website mapserver. But somehow, I don't really have the clue how to do it. Now, making things "worse" (more complicated for me) we have migrated from MySql to Postgres/Postgis.

------------------------------------------------------------------------ ----



At least your spatial queries now have a chance of returning correct answers
:-)

The way I prefer to do this is to have the SQL thrown at Postgis do the
conversion, so mapserver doesn't have to. Thus:
select transform(the_geom, SRID) instead of select the_geom

But that's probably just because I have a SQL/database background, so tend to
do my work there. But it saves the wrestling with mapscript that you're going
through :-)

Cheers,

   Brent Wood


So, first question would be: What code to use to change the projection via PHP/Mapscript, should be something like this, I guess:

$newproj=ms_newprojectionObj("proj=robin,lon_0=0,x_0=0,y_0=0");
$latlon=ms_newprojectionObj("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs");
$oldext=ms_newRectObj();
$oldext->setextent(-180,-90,180,90); //this is the extent of my map in geographic
$oldext->project($latlon,$newproj);  //reproject to Robinson
$map->setextent($oldext->minx,$oldext->miny,$oldext->maxx,$oldext- >maxy); //set the new map extent

But I guess, something is still missing... (What about $map- >setProjection ?)

------------------------------------------------------------------------ ----

And the second question is: As my mapfile queries the postgis database, using "SRID", I guess I need to change that one too, then? Instead of 4326 for Geographic I would have to use the one for Robinson (or Mollweide or so) ??

------------------------------------------------------------------------ ----

Thanks for giving me any hints...

Stef


--
Julien-Samuel Lacroix
Mapgears
http://www.mapgears.com/

Reply via email to