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!