[mapserver-users] [EXTERNAL] WMS SRS as variable

Rahkonen Jukka (MML) jukka.rahkonen at maanmittauslaitos.fi
Mon Feb 9 03:02:39 PST 2015


Hi,

Ok, I start to understand little by little. It is not about making your Mapserver to support several SRS in output, it is about making your Mapserver to send GetMaps to cascaded remote WMS services by using the most reasonable SRS in the request, that is, usually the same SRS as used for output so that Mapserver does not need to do interim warping.

I suggest to include enough from the mapfile for making the questions and answers understandable. Let's take this sample from http://mapserver.org/ogc/wms_client.html

LAYER
  NAME "country_bounds"
  TYPE RASTER
  STATUS ON
  CONNECTION "http://demo.mapserver.org/cgi-bin/wms?"
  CONNECTIONTYPE WMS
  METADATA
    "wms_srs"             "EPSG:4326"     #<=== THIS CAN BE A SPACE SEPARATED LIST
    "wms_name"            "country_bounds"
    "wms_server_version"  "1.1.1"
    "wms_format"          "image/gif"
  END
END

You would like to use variable substitution in "wms_srs" "EPSG:%srs%". That is not possible because there are only a few places where substitutions can be used. See http://mapserver.org/cgi/runsub.html and Parameters supported.
However, if you want to support output in 'EPSG:32633 EPSG:3006 EPSG:900913 EPSG:4326' you can use the same list in the "wms_srs" metadata item of the cascaded WMS layer. Then if you want output in EPSG:32633 Mapserver will use the same SRS in GetMaps that it is creating and I suppose that it is your goal.

Be aware with EPSG:900913, recent Mapservers do not support it out-of-the-box but you must edit the epsg projection file manually. It would better to use  EPSG:3857 instead but then the remote WMS should also understand the meaning of EPSG:3857 .

If request rewriting is absolutely needed, like you want to send out EPSG:3857 but remote WMS understands only EPSG:900913 or you need to do some other tailored mapping between the codes, then I suppose you should  use some miraculous mapscript for rewriting the mapfile.
-Jukka Rahkonen-




Schylberg Lars wrote:

Mike,

Thanks for your reply, but it is when I call the wms services as a client I get the errors already in the validation.  I would like to do something like this:
But I guess I am doing something that is not meant to be this way.

MAP
  NAME MAP_MAIN
  SIZE 1000 1000
  CONFIG "PROJ_LIB" './'
  UNITS dd
  EXTENT 9.624750 52.33333 30.333333 66.500000

 PROJECTION
     'init=epsg:4326'
  END

  IMAGETYPE png
  FONTSET './fonts/fontset.lst'
  SYMBOLSET "./symbols/symbols.sym"
  OUTPUTFORMAT
    NAME 'AGG'
    DRIVER AGG/PNG
    IMAGEMODE RGB
  END

  SHAPEPATH ../data/shape


  WEB
    IMAGEPATH '/tmp/'
    IMAGEURL '/tmp/'

    METADATA
      "ows_enable_request"   "*"
      'wms_title'           'MAP_MAIN'
      'wms_srs'  'EPSG:32633 EPSG:3006 EPSG:900913 EPSG:4326'
      "labelcache_map_edge_buffer" "-10"
    END
  END

    VALIDATION
       "srs" "^[0-9]{4,5)$"
    END

###############  Layer 0 as WMS request

   LAYER
     NAME "WMS-layer-0"
     OFFSITE 200 0 0
     TYPE RASTER
     CONNECTIONTYPE WMS
     CONNECTION "http://localhost/cgi-bin/mapserv?map=/var/www/html/map0.map"
     METADATA
       "wms_srs"               'EPSG:''%srs%'
       "wms_name"              "map0"
       "wms_server_version"    "1.1.1"
       "wms_format"            "image/png"
       "wms_exceptions_format" "application/vnd.ogc.se_inimage"
     END
   END #layer

###############  Layer 1 as WMS request

   LAYER
     NAME "WMS-layer-1"
     OFFSITE 200 0 0
     TYPE RASTER
     CONNECTIONTYPE WMS
     CONNECTION "http://localhost/cgi-bin/mapserv?map=/var/www/html/map1.map"
     METADATA
       "wms_srs"               'EPSG:''%srs%'
       "wms_name"              "map1"
       "wms_server_version"    "1.1.1"
       "wms_format"            "image/png"
       "wms_exceptions_format" "application/vnd.ogc.se_inimage"
     END
   END #layer

END # Map

From: Smith, Michael ERDC-RDE-CRREL-NH [mailto:Michael.Smith at erdc.dren.mil]
Sent: den 6 februari 2015 16:31
To: Schylberg Lars; mapserver-users at lists.osgeo.org<mailto:mapserver-users at lists.osgeo.org>
Subject: Re: [EXTERNAL] [mapserver-users] WMS SRS as variable

Lars,

A WMS map can support multiple SRS's. Just list all the ones you want in the METADATA block. Look at http://mapserver.org/ogc/wms_server.html and specifically the Map PROJECTION and wms_srs metadata. From the example, you can see that 2 SRS's are supported.


 METADATA

    "wms_title"           "WMS Demo Server"

    "wms_onlineresource"  "http://my.host.com/cgi-bin/mapserv?map=wms.map&"

    "wms_srs"             "EPSG:4269 EPSG:4326"

  END
Just keep adding to the list to support more projections.

Mike


From: Schylberg Lars <lars.schylberg at saabgroup.com<mailto:lars.schylberg at saabgroup.com>>
Date: Friday, February 6, 2015 at 10:05 AM
To: "mapserver-users at lists.osgeo.org<mailto:mapserver-users at lists.osgeo.org>" <mapserver-users at lists.osgeo.org<mailto:mapserver-users at lists.osgeo.org>>
Subject: [EXTERNAL] [mapserver-users] WMS SRS as variable
Resent-From: Michael Smith <michael.smith at usace.army.mil<mailto:michael.smith at usace.army.mil>>

Hello,

I wonder if there is a way to set SRS as a variable in a map file.

I have one map file that uses several other WMS clients that also are mapfiles.
I would like to use the SRS as variable to make the WMS service more flexible.

I have tried to do VALIDATION on SRS variable, but that only gives errors.

Thanks /Lars S.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/mapserver-users/attachments/20150209/77447b8a/attachment.htm>


More information about the MapServer-users mailing list