Mapscript Re-Projection on-the-fly
Stefan Schwarzer
stefan.schwarzer at GRID.UNEP.CH
Thu Aug 24 00:35:16 PDT 2006
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:MAPSERVER-
> USERS at LISTS.UMN.EDU] On Behalf Of Stefan Schwarzer
> Sent: 24 August 2006 13:45
> To: MAPSERVER-USERS at LISTS.UMN.EDU
> 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!
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/mapserver-users/attachments/20060824/11618325/attachment.htm>
More information about the MapServer-users
mailing list