<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.2900.2963" name=GENERATOR></HEAD>
<BODY
style="WORD-WRAP: break-word; khtml-nbsp-mode: space; khtml-line-break: after-white-space">
<DIV dir=ltr align=left><SPAN class=357264007-24082006><FONT face=Arial
color=#0000ff size=2>Hi Stefan,</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=357264007-24082006><FONT face=Arial
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=357264007-24082006><FONT face=Arial
color=#0000ff size=2>Yes, you do have to specify which projection each layer is
in, otherwise when they are reprojected you will run into trouble (if it doesn't
know where to reproject FROM, it won't be able to do i). It's not too hard,
though. </FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=357264007-24082006><FONT face=Arial
color=#0000ff size=2></FONT></SPAN><FONT face=Arial color=#0000ff
size=2></FONT> </DIV>
<DIV dir=ltr align=left><SPAN class=357264007-24082006><FONT face=Arial
color=#0000ff size=2>You should not have to recalculate the extent; it should be
automatic. Definitely don't try to change the numbers (coordinates) without
changing the projection (that would be bad).</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=357264007-24082006><FONT face=Arial
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=357264007-24082006><FONT face=Arial
color=#0000ff size=2>Try this:</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=357264007-24082006><FONT face=Arial
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN
class=357264007-24082006>$newproj="proj=robin,lon_0=0,x_0=0,y_0=0"; //
projection string of your new projection</DIV>
<DIV dir=ltr align=left>
<DIV>$map-><SPAN
class=357264007-24082006>setProjection($newproj,MS_TRUE);</SPAN></DIV>
<DIV><FONT face=Arial color=#0000ff size=2></FONT> </DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN class=357264007-24082006>I
think that ought to be all. The MS_TRUE makes it pick the best fit to
the current extent in the new projection. Make sure your projection string is
valid.</SPAN></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN
class=357264007-24082006></SPAN></FONT> </DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN
class=357264007-24082006>regards,</SPAN></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN
class=357264007-24082006></SPAN></FONT> </DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN
class=357264007-24082006>Jacob</SPAN></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN
class=357264007-24082006></SPAN></FONT></SPAN> </DIV></DIV>
<DIV dir=ltr align=left><SPAN class=357264007-24082006><FONT face=Arial
color=#0000ff size=2></FONT></SPAN> </DIV><BR>
<BLOCKQUOTE dir=ltr
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
<DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
<HR tabIndex=-1>
<FONT face=Tahoma size=2><B>From:</B> UMN MapServer Users List
[mailto:MAPSERVER-USERS@LISTS.UMN.EDU] <B>On Behalf Of </B>Stefan
Schwarzer<BR><B>Sent:</B> 24 August 2006 15:35<BR><B>To:</B>
MAPSERVER-USERS@LISTS.UMN.EDU<BR><B>Subject:</B> Re: [UMN_MAPSERVER-USERS]
Mapscript Re-Projection on-the-fly<BR></FONT><BR></DIV>
<DIV></DIV>Jacob & Nicol,
<DIV><BR class=khtml-block-placeholder></DIV>
<DIV>thanks for your feedback.</DIV>
<DIV><BR class=khtml-block-placeholder></DIV>
<DIV>But I am still struggling. Just to clarify: I wonna reproject not
individual layers, but my whole map.</DIV>
<DIV><BR class=khtml-block-placeholder></DIV>
<DIV>Jacob, does "<SPAN class=010195305-24082006><FONT class=Apple-style-span
face=Arial color=#0000ff size=2><SPAN class=Apple-style-span
style="FONT-SIZE: 10px">For this, it is required that your layer has a
projection object with the native projection of that layer.</SPAN></FONT>"
that mean that for each single layer I have to specify the original
projection? (Geographic in my case)</SPAN></DIV>
<DIV><BR class=khtml-block-placeholder></DIV>
<DIV>As Nicol stated I need to "recalculate" the extent, at least when using
different units (going from DD to Meters). </DIV>
<DIV><BR class=khtml-block-placeholder></DIV>
<DIV>But then, I found that piece of code (slightly changed):</DIV>
<DIV><BR class=khtml-block-placeholder></DIV>
<DIV><SPAN class=Apple-tab-span
style="WHITE-SPACE: pre"></SPAN>$newproj=ms_newprojectionObj("proj=robin,lon_0=0,x_0=0,y_0=0");</DIV>
<DIV><SPAN class=Apple-tab-span
style="WHITE-SPACE: pre"></SPAN>$latlon=ms_newprojectionObj("proj=longlat,ellps=WGS84,datum=WGS84,no_defs");</DIV>
<DIV><SPAN class=Apple-tab-span
style="WHITE-SPACE: pre"></SPAN>$oldext=ms_newRectObj();</DIV>
<DIV><SPAN class=Apple-tab-span
style="WHITE-SPACE: pre"></SPAN>$oldext->setextent(-180,-90,180,90);
//this is the extent of my map in geographic</DIV>
<DIV><SPAN class=Apple-tab-span
style="WHITE-SPACE: pre"></SPAN>$oldext->project($latlon,$newproj);
//reproject to Robinson</DIV>
<DIV><SPAN class=Apple-tab-span
style="WHITE-SPACE: pre"></SPAN>$map->setextent($oldext->minx,$oldext->miny,$oldext->maxx,$oldext->maxy);
//set the new map extent</DIV>
<DIV><BR class=khtml-block-placeholder></DIV>
<DIV>And another one going like this:</DIV>
<DIV><BR class=khtml-block-placeholder></DIV>
<DIV><SPAN class=Apple-tab-span style="WHITE-SPACE: pre"></SPAN>$projInObj =
ms_newProjectionObj( "+proj=tmerc ".</DIV>
<DIV><SPAN class=Apple-tab-span style="WHITE-SPACE: pre"></SPAN>
"+lat_0=49 ".</DIV>
<DIV><SPAN class=Apple-tab-span style="WHITE-SPACE: pre"></SPAN>
"+lon_0=-2 ".</DIV>
<DIV><SPAN class=Apple-tab-span style="WHITE-SPACE: pre"></SPAN>
"+k=0.999601 ".</DIV>
<DIV><SPAN class=Apple-tab-span style="WHITE-SPACE: pre"></SPAN>
"+x_0=400000 ".</DIV>
<DIV><SPAN class=Apple-tab-span style="WHITE-SPACE: pre"></SPAN>
"+y_0=-100000 ".</DIV>
<DIV><SPAN class=Apple-tab-span style="WHITE-SPACE: pre"></SPAN>
"+ellps=airy ".</DIV>
<DIV><SPAN class=Apple-tab-span style="WHITE-SPACE: pre"></SPAN>
"+towgs84=375,-111,431,0,0,0,0");</DIV>
<DIV><BR class=khtml-block-placeholder></DIV>
<DIV>with this info in the mapscript documentation...</DIV>
<DIV style="MARGIN: 0px; BACKGROUND-COLOR: rgb(229,229,229)"><FONT
class=Apple-style-span face=Monaco size=2><SPAN class=Apple-style-span
style="FONT-SIZE: 9px"><SPAN class=Apple-tab-span
style="WHITE-SPACE: pre"></SPAN> </SPAN></FONT><FONT
class=Apple-style-span face=Monaco size=2><SPAN class=Apple-style-span
style="FONT-SIZE: 9px">int setProjection(string proj_params, boolean
bSetUnitsAndExtents)</SPAN></FONT></DIV>
<DIV style="MARGIN: 0px; BACKGROUND-COLOR: rgb(229,229,229)"><FONT
class=Apple-style-span face=Monaco size=2><SPAN class=Apple-style-span
style="FONT-SIZE: 9px"> </SPAN></FONT><FONT
class=Apple-style-span face=Monaco size=2><SPAN class=Apple-style-span
style="FONT-SIZE: 9px">Set map projection and coordinate
system.</SPAN></FONT><FONT class=Apple-style-span face=Monaco size=2><SPAN
class=Apple-style-span style="FONT-SIZE: 9px"> </SPAN></FONT><FONT
class=Apple-style-span face=Monaco size=2><SPAN class=Apple-style-span
style="FONT-SIZE: 9px">Parameters are given as</SPAN></FONT><FONT
class=Apple-style-span face=Monaco size=2><SPAN class=Apple-style-span
style="FONT-SIZE: 9px"> </SPAN></FONT></DIV>
<DIV style="MARGIN: 0px; BACKGROUND-COLOR: rgb(229,229,229)"><FONT
class=Apple-style-span face=Monaco size=2><SPAN class=Apple-style-span
style="FONT-SIZE: 9px"> </SPAN></FONT><FONT
class=Apple-style-span face=Monaco size=2><SPAN class=Apple-style-span
style="FONT-SIZE: 9px">a single string of comma-delimited PROJ.4
parameters.</SPAN></FONT></DIV>
<DIV style="MARGIN: 0px; BACKGROUND-COLOR: rgb(229,229,229)"><FONT
class=Apple-style-span face=Monaco size=2><SPAN class=Apple-style-span
style="FONT-SIZE: 9px"> </SPAN></FONT><FONT
class=Apple-style-span face=Monaco size=2><SPAN class=Apple-style-span
style="FONT-SIZE: 9px">The argument : bSetUnitsAndExtents is used to
automatically update</SPAN></FONT></DIV>
<DIV style="MARGIN: 0px; BACKGROUND-COLOR: rgb(229,229,229)"><FONT
class=Apple-style-span face=Monaco size=2><SPAN class=Apple-style-span
style="FONT-SIZE: 9px"> </SPAN></FONT><FONT
class=Apple-style-span face=Monaco size=2><SPAN class=Apple-style-span
style="FONT-SIZE: 9px">the map units and extents based on the new projection.
Possible</SPAN></FONT><FONT class=Apple-style-span face=Monaco size=2><SPAN
class=Apple-style-span style="FONT-SIZE: 9px"> </SPAN></FONT></DIV>
<DIV style="MARGIN: 0px; BACKGROUND-COLOR: rgb(229,229,229)"><FONT
class=Apple-style-span face=Monaco size=2><SPAN class=Apple-style-span
style="FONT-SIZE: 9px"> </SPAN></FONT><FONT
class=Apple-style-span face=Monaco size=2><SPAN class=Apple-style-span
style="FONT-SIZE: 9px">values are MS_TRUE and MS_FALSE. By defualt it is set
at MS_FALSE</SPAN></FONT></DIV>
<DIV><BR class=khtml-block-placeholder></DIV>
<DIV>So, what should I use? And where is coming the <SPAN
class=Apple-tab-span style="WHITE-SPACE: pre"> </SPAN></DIV>
<DIV><BR class=khtml-block-placeholder></DIV>
<DIV><SPAN class=Apple-tab-span style="WHITE-SPACE: pre"></SPAN>$map ->
setProjection</DIV>
<DIV><BR class=khtml-block-placeholder></DIV>
<DIV>into play?</DIV>
<DIV><BR class=khtml-block-placeholder></DIV>
<DIV>Thanks for any clarification.</DIV>
<DIV><BR class=khtml-block-placeholder></DIV>
<DIV>Stefan</DIV>
<DIV><BR class=khtml-block-placeholder></DIV>
<DIV><BR class=khtml-block-placeholder></DIV>
<DIV><BR>
<DIV>
<DIV>On Aug 24, 2006, at 7:59 AM, Delfos, Jacob wrote:</DIV><BR
class=Apple-interchange-newline>
<BLOCKQUOTE type="cite">
<DIV dir=ltr align=left><SPAN class=010195305-24082006><FONT face=Arial
color=#0000ff size=2>Stefan,</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=010195305-24082006><FONT face=Arial
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=010195305-24082006><FONT face=Arial
color=#0000ff size=2>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? </FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=010195305-24082006><FONT face=Arial
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=010195305-24082006><FONT face=Arial
color=#0000ff size=2>You *may* have to save your mapfile, or your session,
in order for it to take effect, depending on your setup.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=010195305-24082006><FONT face=Arial
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=010195305-24082006><FONT face=Arial
color=#0000ff size=2>regards,</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=010195305-24082006><FONT face=Arial
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=010195305-24082006><FONT face=Arial
color=#0000ff size=2>Jacob</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=010195305-24082006><FONT face=Arial
color=#0000ff size=2></FONT></SPAN> </DIV><BR>
<BLOCKQUOTE dir=ltr
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
<DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
<HR tabIndex=-1>
<FONT face=Tahoma size=2><B>From:</B> UMN MapServer Users List [<A
href="mailto:MAPSERVER-USERS@LISTS.UMN.EDU">mailto:MAPSERVER-USERS@LISTS.UMN.EDU</A>]
<B>On Behalf Of </B>Stefan Schwarzer<BR><B>Sent:</B> 24 August 2006
13:45<BR><B>To:</B> <A
href="mailto:MAPSERVER-USERS@LISTS.UMN.EDU">MAPSERVER-USERS@LISTS.UMN.EDU</A><BR><B>Subject:</B>
Re: [UMN_MAPSERVER-USERS] Mapscript Re-Projection
on-the-fly<BR></FONT><BR></DIV>
<DIV></DIV>Hey,
<DIV><BR class=khtml-block-placeholder></DIV>
<DIV>I can't imagine that such a question stays unanswered in the
mapserver community...</DIV>
<DIV><BR class=khtml-block-placeholder></DIV>
<DIV>I meanwhile added a:</DIV>
<DIV><BR class=khtml-block-placeholder></DIV>
<DIV><SPAN class=Apple-tab-span style="WHITE-SPACE: pre"></SPAN>$map ->
setProjection("init=epsg:26711");</DIV>
<DIV><BR class=khtml-block-placeholder></DIV>
<DIV>to my code, but nothing happens - meaning: no error message but no
reprojection either.</DIV>
<DIV><BR class=khtml-block-placeholder></DIV>
<DIV>Can anyone help me out?</DIV>
<DIV><BR class=khtml-block-placeholder></DIV>
<DIV>Thanks in advance.</DIV>
<DIV><BR class=khtml-block-placeholder></DIV>
<DIV>Stefan</DIV>
<DIV><BR class=khtml-block-placeholder></DIV>
<DIV><BR>
<DIV>
<DIV>On Aug 22, 2006, at 10:47 AM, Stefan Schwarzer wrote:</DIV><BR
class=Apple-interchange-newline>
<BLOCKQUOTE type="cite"><FONT class=Apple-style-span
face=Arial>Gush,</FONT>
<DIV><FONT class=Apple-style-span face=Arial><BR
class=khtml-block-placeholder></FONT></DIV>
<DIV><FONT class=Apple-style-span face=Arial>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?</FONT></DIV>
<DIV><FONT class=Apple-style-span face=Arial><BR
class=khtml-block-placeholder></FONT></DIV>
<DIV><FONT class=Apple-style-span face=Arial>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? </FONT></DIV>
<DIV><FONT class=Apple-style-span face=Arial><BR
class=khtml-block-placeholder></FONT></DIV>
<DIV><FONT class=Apple-style-span face=Arial>Thanks a lot for your
help!</FONT></DIV>
<DIV><FONT class=Apple-style-span face=Arial><BR
class=khtml-block-placeholder></FONT></DIV>
<DIV><BR
class=khtml-block-placeholder></DIV></BLOCKQUOTE></DIV><BR></DIV></BLOCKQUOTE></BLOCKQUOTE></DIV><BR></DIV></BLOCKQUOTE></BODY></HTML>