[mapserver-users] PostGIS data in EPSG:31300 using for Google Maps overlay

Richard Duivenvoorde rdmailings at duif.net
Wed Apr 9 04:12:21 EDT 2008


Hi Steven,
Just to add some thoughts:
As Brent suggests, both postgis and mapserver can reproject. What you 
are doing now is let postgis (or actually the proj-library that's doing 
the hardwork for the transform(..)-function). But mapserver is also able 
to do the 'on the fly' projection (and also using a proj-lib for that).

Difference for this two methods is that if you let mapserver do it, then 
you can use wms-service (one mapfile with one layer definition) be used 
for several different projection requests. So using brents example, you 
can do:

METADATA
   "wms_title" "My WMS Server"
   "wms_srs"   "EPSG:4326 EPSG:28992 EPSG:900913 EPSG 31300"
END
and mapserver has to know the 'native' projection as brent said:
LAYER
   ...
   PROJECTION
     "init=epsg:31300"
   END
   ...
END
In this way mapserver's proj is doing the heavy lifting and you can use 
different clients using different projections to connect to the same wms 
service.

The tricky stuff here is to know which proj (or actually which epsg 
file) is used for which library/component. For example postgis has it's 
proj parameters in a table 'spatial_ref_sys', so when you want to use a 
exotic projection you have to add it here. But if you want to use this 
exotic projection for mapserver/ms4w, you have to add it to: 
C:\ms4w\proj\nad\epsg

Groet
Richard Duivenvoorde

Steven De Vriendt wrote:
> Brent,
> 
> Maybe quite a basic question, but I'm not used to define my data
> syntax as the one you propose.
> Can you help me out with the <gid> declaration.
> I'm quite confused what to fill in for gid
> 
> Do I leave it like it is and just write gid or doi I have
> or do I have to define my primary key column (f.i.: tbl_b_cabu_pkey).
> 
> For both I get an error message, saying either column OID does not
> exist or column tbl_b_cabu_pkey does not exist.
> However there are both there...
> 
> DATA "new_geom from (select gid, transform(the_geom,4326) as new_geom from
>   table) as mytable using unique gid using srid=4326"
> 
> Thanks for helping out !
> 
> On Tue, Apr 8, 2008 at 8:25 PM, Steven De Vriendt <gisaalter at gmail.com> wrote:
>> Brent,
>>
>>  Very, very usefull info. Thanks.  I was just about to reprojecting my data :-)
>>  I thought the SRID table was "constrained" to the geometry and you couldn't
>>  change it. Seems like that's why the 'virtual' table is there for. Ok,
>>  well, I'll give
>>  it a try. Thanks for your input !
>>
>>  Regards,
>>  Steven
>>
>>
>>
>>  On Tue, Apr 8, 2008 at 7:58 PM, Brent Wood <pcreso at pcreso.com> wrote:
>>  >
>>  >  --- Steven De Vriendt <gisaalter at gmail.com> wrote:
>>  >
>>  >  > Hi list,
>>  >  >
>>  >  > I have some data in PostGIS I wish to overlay in Google Maps using WMS
>>  >  > I'm using the same data in a mapserver application, where EPSG code
>>  >  > 31300 is used.
>>  >  > Now for overlay in Google Maps, 4326 is required.
>>  >  > I have made a copy of my map-file and specified 4326 as projection
>>  >  > system.Yet, non of my data is showing up.
>>  >  >
>>  >  > Do I need to reproject my data for this use ? I thought PostGIS was
>>  >  > capable of doing reprojection on the fly ?
>>  >
>>  >  Hi Steven,
>>  >
>>  >  Both mapserver & POstGIS can reproject the data on the fly, but they need to be
>>  >  told the input & output projections.
>>  >
>>  >  As your data is all displayed via mapserver, the instructions either way will
>>  >  be in your mapfile.
>>  >
>>  >  To reproject using PostGIS, edit the SQL command in your data statement which
>>  >  retrieves the PostGIS data. You need to tell PostGIS to return a virtual table
>>  >  to mapserver, and transform the data to the required projection in this. Edit
>>  >  the data line in the layer something like this:
>>  >
>>  >  DATA "new_geom from (select gid, transform(the_geom,4326) as new_geom from
>>  >  table) as mytable using unique gid using srid=4326"
>>  >
>>  >
>>  >  To reproject in mapserver, you need to set the main mapfile projection to
>>  >  EPSG:4326, using, in the global header part of the mapfile:
>>  >
>>  >  UNITS DD
>>  >  PROJECTION
>>  >   "init=epsg:4326"
>>  >  END
>>  >
>>  >  In the METADATA section, you'll need to set the output projection for WMS, eg:
>>  >  METADATA
>>  >   "wms_title" "My WMS Server"
>>  >   "wms_srs"   "EPSG:4326"
>>  >  END
>>  >
>>  >  Then in the layer definition, you specify the layer's native projection, so
>>  >  mapserver can reproject from one to the other:
>>  >
>>  >  LAYER
>>  >   ...
>>  >   PROJECTION
>>  >     "init=epsg:31300"
>>  >   END
>>  >   ...
>>  >  END
>>  >
>>  >  Note that to reproject in PostGIS, Proj.4 support must be compiled into
>>  >  PostGIS, and similarly for mapserver if you do the reprojection there. If you
>>  >  compiled these from source, this is not done by default, & you'll need to run
>>  >  configure with the appropriate flag. If you installed from a package, or on
>>  >  Windows, proj support is generally built in.
>>  >
>>  >
>>  >  HTH,
>>  >
>>  >   Brent Wood
>>  >
>>
> _______________________________________________
> mapserver-users mailing list
> mapserver-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapserver-users
> 
> 



More information about the mapserver-users mailing list