Jacob & Nicol,

thanks for your feedback.

But I am still struggling. Just to clarify: I wonna reproject not individual layers, but my whole map.

Jacob, does "For this, it is required that your layer has a projection object with the native projection of that layer." that mean that for each single layer I have to specify the original projection? (Geographic in my case)

As Nicol stated I need to "recalculate" the extent, at least when using different units (going from DD to Meters). 

But then, I found that piece of code (slightly changed):

$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

And another one going like this:

$projInObj = ms_newProjectionObj( "+proj=tmerc ".
  "+lat_0=49 ".
  "+lon_0=-2 ".
  "+k=0.999601 ".
  "+x_0=400000 ".
  "+y_0=-100000 ".
  "+ellps=airy ".
  "+towgs84=375,-111,431,0,0,0,0");

with this info in the mapscript documentation...
 int setProjection(string proj_params, boolean bSetUnitsAndExtents)
        Set map projection and coordinate system.  Parameters are given as 
        a single string of comma-delimited PROJ.4 parameters.
        The argument : bSetUnitsAndExtents is used to automatically update
        the map units and extents based on the new projection. Possible 
        values are MS_TRUE and MS_FALSE. By defualt it is set at MS_FALSE

So, what should I use? And where is coming the 

$map -> setProjection

into play?

Thanks for any clarification.

Stefan



On Aug 24, 2006, at 7:59 AM, Delfos, Jacob wrote:

Stefan,
 
Your question is not entirely clear. You can not re-project an individual layer on-the-fly, because php_mapscript does not re-write the dataset (hence its projection will always be the same); you CAN however change the projection of the map (using setProjection, as you did), which means all layers in the map get re-projected (the dataset remains unchanged, though). For this, it is required that your layer has a projection object with the native projection of that layer. This will cause the layer to be reprojected along with the map. Is this what you are trying to do? 
 
You *may* have to save your mapfile, or your session, in order for it to take effect, depending on your setup.
 
regards,
 
Jacob
 


From: UMN MapServer Users List [mailto:[email protected]] On Behalf Of Stefan Schwarzer
Sent: 24 August 2006 13:45
To: [email protected]
Subject: Re: [UMN_MAPSERVER-USERS] Mapscript Re-Projection on-the-fly

Hey,

I can't imagine that such a question stays unanswered in the mapserver community...

I meanwhile added a:

$map -> setProjection("init=epsg:26711");

to my code, but nothing happens - meaning: no error message but no reprojection either.

Can anyone help me out?

Thanks in advance.

Stefan


On Aug 22, 2006, at 10:47 AM, Stefan Schwarzer wrote:

Gush,

I couldn't find any precise information about how to re-project layers on-the-fly via PHP Mapscript. Here and there (via MailingList and Google) bits and pieces, but altogether it didn't help me a lot. Though I would have said that this is a basic question. But perhaps too basic, so everbody finds out by himself?

So, can anyone let me know - giving a coding example - how to re-project a mapfile on-the-fly from for example Lat/Long (global view) to Lambert or Robin? 

Thanks a lot for your help!




Reply via email to