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
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!