[mapserver-users] cgi variable substituition in DATA statement

thomas bonfort thomas.bonfort at gmail.com
Mon Aug 26 12:25:22 PDT 2013


http://mapserver.org/ogc/wms_server.html#apache-environment-variables-ms-mapfile

just replace cgi-script by fcgid-script if you want to use fastcgi.
there are other examples on that page, using a rewrite is also a
possibility.


--
thomas

On 26 August 2013 18:41, Peter Freimuth <freimuth69 at gmail.com> wrote:
> Hi Thomas,
> this is the wrapper script which is used:
> Somewhere in the documentation it says that this should do the same than
> using the standard cgi way so i expected it would also handle the variable
> substitution in the same way.
>
> import mapscript
> req = mapscript.OWSRequest()
> req.loadParams()
> map = mapscript.mapObj(r'/***/OwsDataStreamingTest/LI_USA-MT.map')
> map.OWSDispatch(req)
> exit()
>
> So if i switch to:
>
> #!/bin/sh
> MAPSERV="/usr/lib/cgi-bin/mapserv"
> MS_MAPFILE="/***/OwsDataSteamingTest/LI_USA-MT.map" exec ${MAPSERV}
>
> everything works fine.
>
> But if i try to run this as fcgi to make use of keeping the db connection
> and GDAL_CACHEMAX  i get an error that "map" param is not set.
>
> Which mechanismn should be used in context of fcgi to make the map param in
> the URL unnecessary?
>
> Thanks,
> Peter
>
>
> On 23/08/2013 12:32 AM, thomas bonfort wrote:
>>
>> yes, that's it. the substitutions only work for the mapserver CGI, not
>> mapscripts. if you're using mapscript, you can manipulate your mapfile
>> directly.
>>
>> --
>> thomas
>>
>> On 23 August 2013 04:41, Peter Freimuth <freimuth69 at gmail.com> wrote:
>>>
>>> Hi,
>>> i will do so on Monday. Is it possible that the fact that we use a tiny
>>> map
>>> script wrapper to avoid the map file in the url have something to do with
>>> it.
>>> By the way i tried the leaving away of the single '  '  already but it
>>> just
>>> fails again because the parameter name doesn't get replaced. Thanks for
>>> all
>>> of your hints.
>>> Just to complete the circumstances. The map file uses the include
>>> mechanism
>>> to get the layer definitions and the layer which needs the substitutions
>>> is
>>> only referenced by a raster layer as an tile index. Don't know if this
>>> have
>>> something to do with it. If i use static values everything is working
>>> fine.
>>>
>>> Kind regards,
>>> --
>>> Peter Freimuth
>>>
>>>
>>> On 2013-08-22, at 3:17 AM, thomas bonfort <thomas.bonfort at gmail.com>
>>> wrote:
>>>
>>> Peter,
>>> can you email me your full mapfile, with the snippets you provided I
>>> can't see anything wrong and would therefore need to see any
>>> side-effects from the rest of the mapfile, and/or run it through a
>>> debugger to see where it's failing.
>>>
>>> --
>>> thomas
>>>
>>> On 21 August 2013 01:26, Peter Freimuth <freimuth69 at gmail.com> wrote:
>>>
>>> Hi,
>>> i am trying to get the dynamic variable substitution work on Mapserver
>>> 6.3dev but somehow it does'nt work as it worked before and as documented.
>>> When i execute
>>>
>>> http://10.10.4.18/cgi-bin/LI_USA-MT.cgi?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&BBOX=48.046271,-115.929840,48.198407,-115.666914&CRS=EPSG:4326&WIDTH=1647&HEIGHT=953&LAYERS=data_view&STYLES=&FORMAT=image/png&DPI=96&TRANSPARENT=TRUE&STARTDATE=2011-01-01&ENDDATE=2013-09-01
>>>
>>> or
>>>
>>>
>>> http://10.10.4.18/cgi-bin/LI_USA-MT.cgi?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&BBOX=48.046271,-115.929840,48.198407,-115.666914&CRS=EPSG:4326&WIDTH=1647&HEIGHT=953&LAYERS=data_view&STYLES=&FORMAT=image/png&DPI=96&TRANSPARENT=TRUE
>>>
>>> I get an error in
>>> msDrawMap(): Image handling error. Failed to draw layer named
>>> 'data_view'.
>>> msPostGISLayerWhichShapes(): Query error. Error executing query: ERROR:
>>> invalid input syntax for type date: "%STARTDATE%"
>>> LINE 8: ...     (((acquisition_date >= date_trunc('day',date
>>> '%STARTDAT...
>>>                                                              ^
>>> So the substitution does not happen or the default is not applied.
>>> Any hint on what i am doing wrong would be great.
>>>
>>> See below the components from the mapfile:
>>>
>>> MAP
>>> .....
>>>     #
>>>     # Start of web interface definition
>>>     #
>>>     DATAPATTERN '^[a-zA-Z0-9\-\_\,]+$'
>>>
>>>     WEB
>>>         IMAGEPATH
>>> "/mnt/mapserver/mapserver_wms/geocloud_config/image_path"
>>>         METADATA
>>>             .....
>>>             'PRODUCTID_validation_pattern'  '^[a-zA-Z0-9\-\_\,]+$'
>>>             'default_PRODUCTID'  '1234567'
>>>             'CONTRACTIDS_validation_pattern'  '^[a-zA-Z0-9\-\_\,]+$'
>>>             'default_CONTRACT_IDS'  '0000'
>>>             'STARTDATE_validation_pattern'
>>> '^([0-9]{4})-([0-9]{2})-([0-9]{2})$'
>>>             'default_STARTDATE'  '2011-01-01'
>>>             'ENDDATE_validation_pattern'
>>> '^([0-9]{4})-([0-9]{2})-([0-9]{2})$'
>>>             'default_END_DATE'  '2013-09-01'
>>>         END
>>>         VALIDATION
>>>              'PRODUCTID'  '^[a-zA-Z0-9\-\_\,]+$'
>>>              'CONTRACTIDS' '^[a-zA-Z0-9\-\_\,]+$'
>>>              'STARTDATE'  '^([0-9]{4})-([0-9]{2})-([0-9]{2})$'
>>>              'ENDDATE'  '^([0-9]{4})-([0-9]{2})-([0-9]{2})$'
>>>         END
>>>     END
>>> .....
>>>     LAYER
>>>         # this is the tileindex that aggregates the single image products
>>> together and makes them accessible for the RASTER LAYER "data_view" and
>>> "data_raw" for rendering
>>>         NAME "data_idx"
>>>         STATUS ON
>>>         DEBUG 5
>>>         UNITS dd
>>>         TYPE POLYGON
>>>         EXTENT -116.364631680367 44.1932837062986 -103.698350095065
>>> 49.1892799088128
>>>         PROCESSING "CLOSE_CONNECTION=DEFER"
>>>         CONNECTIONTYPE POSTGIS
>>>         CONNECTION "user=***** password=***** dbname=***** host='*****'
>>> port=5432"
>>>         DATA "wkb_geom FROM (SELECT t1.* FROM (SELECT re3aip.cat_id as
>>> archived_in_archiving_identifier, ico.image_id, ico.acquisition_date,
>>> re3aip.tile_id,
>>> ico.product_provider_image_identifier, re3aip.ohs_order_id,
>>> re3aip.imagetake_cat_id, ico.epsg_code,
>>> re3aip.ohs_contract_id,  ico.service_name,
>>> ico.footprint_poly::geometry as wkb_geom, ico.image_location,
>>> ico.vrt_location
>>> FROM ows.imagepool_catalogue_ows ico
>>> JOIN ows.re_l3a_imagepool re3aip ON (re3aip.image_id=ico.image_id)
>>> WHERE ico.service_name in ('LI_USA-MT') AND
>>> (((acquisition_date >= date_trunc('day',date '%STARTDATE%') AND
>>> acquisition_date < date_trunc('day',date '%ENDDATE%') + interval '1
>>> day')))
>>> AND
>>> re3aip.ohs_contract_id in ('%CONTRACTID%')
>>> ) t1
>>> LEFT OUTER JOIN
>>> (SELECT ico.image_id, ico.acquisition_date, re3aip.tile_id
>>> FROM ows.imagepool_catalogue_ows ico
>>> JOIN ows.re_l3a_imagepool re3aip ON (re3aip.image_id=ico.image_id)
>>> WHERE ico.service_name in ('LI_USA-MT') AND
>>>                             (((acquisition_date >= date_trunc('day',date
>>> '%STARTDATE%') AND
>>> acquisition_date < date_trunc('day',date '%ENDDATE%') + interval '1
>>> day')))
>>> AND
>>> re3aip.ohs_contract_id in ('%CONTRACTID%')
>>>                                                                    ) t2
>>>                                                                   ON
>>> t1.tile_id = t2.tile_id AND
>>> ((t1.acquisition_date < t2.acquisition_date) OR
>>> (t1.acquisition_date = t2.acquisition_date AND t1.image_id <
>>> t2.image_id))
>>> WHERE t2.tile_id is NULL
>>> ORDER BY t1.ohs_contract_id, t1.tile_id
>>>                                         ) foo USING UNIQUE image_id USING
>>> SRID=4326"
>>>         #FILTER ( '[product_provider_image_identifier]'='%PRODUCTID%')
>>>         PROJECTION
>>>             "init=epsg:4326"
>>>         END
>>>         METADATA
>>>             "ows_title" "Data Index"
>>>             "ows_extent"  "-116.364631680367 44.1932837062986
>>> -103.698350095065 49.1892799088128"
>>>             #'PRODUCTID_validation_pattern'  '^[a-zA-Z0-9\-\_\,]+$'
>>>             #'default_PRODUCTID'  '1234567'
>>>             'CONTRACTIDS_validation_pattern'  '^[a-zA-Z0-9\-\_\,]+$'
>>>             'default_CONTRACTIDS'  '0000'
>>>             'STARTDATE_validation_pattern'
>>> '^([0-9]{4})-([0-9]{2})-([0-9]{2})$'
>>>             'default_STARTDATE'  '2011-01-01'
>>>             'ENDDATE_validation_pattern'
>>> '^([0-9]{4})-([0-9]{2})-([0-9]{2})$'
>>>             'default_ENDDATE'  '2013-09-01'
>>>             #disable explicitly everything that shall not be supported
>>> for
>>> this Layer
>>>             "wms_enable_request"  "!GetCapabilities !GetMap
>>> !GetLegendgraphic"
>>>             "wcs_enable_request" "!GetCapabilities !GetCoverage
>>> !DescribeCoverage"
>>>             "wfs_enable_request" "!GetCapabilities !GetFeature
>>> !DescribeFeatureType"
>>>         END
>>>         VALIDATION
>>>             'PRODUCTID'  '^[a-zA-Z0-9\-\_\,]+$'
>>>             'CONTRACT_IDS'  '^[a-zA-Z0-9\-\_\,]+$'
>>>             'STARTDATE'  '^([0-9]{4})-([0-9]{2})-([0-9]{2})$'
>>>             'END_DATE'  '^([0-9]{4})-([0-9]{2})-([0-9]{2})$'
>>>         END
>>>     END
>>> ....
>>> END
>>> _______________________________________________
>>> 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