[mapserver-users] Re: MapScript WMS request

Frank Warmerdam warmerdam at pobox.com
Thu Sep 8 14:22:04 EDT 2011


Puneet,

I would add that there is a lot of other metadata that you need to set on a
map in order to get WxS services like WMS working.  If you haven't done
that either you are going to be frustrated.

I would suggest getting your script working initially with an actual mapfile
and then if you really want to construct the map programmatically use
that as a guide.

Best regards,

On Thu, Sep 8, 2011 at 11:15 AM, Armin Burger <armin.burger at gmx.net> wrote:
> in PHP MapScript should be something like
>  $map->setMetaData("ows_enable_request", "*");
>
> in Python:
>  map.setMetaData("ows_enable_request", "*")
>
> armin
>
>
> On 08/09/2011 20:05, Mr. Puneet Kishor wrote:
>>
>> On Sep 8, 2011, at 1:03 PM, thomas bonfort wrote:
>>
>>> it goes in map->web->metadata
>>>
>>
>> I guessed as much, but I can't fathom the syntax. The webObj doesn't seem
>> to have any constructor, and I don't see any documentation. Could you please
>> point me to an example?
>>
>>
>>
>>>
>>> On Thu, Sep 8, 2011 at 19:48, Mr. Puneet Kishor<punk.kish at gmail.com>
>>>  wrote:
>>>>
>>>> a bit more investigation on producing a WMS response via Perl MapScript
>>>> reveals the following error
>>>>
>>>>  <?xml version='1.0' encoding="ISO-8859-1" standalone="no" ?>
>>>>  <!DOCTYPE ServiceExceptionReport SYSTEM
>>>> "http://schemas.opengis.net/wms/1.1.0/exception_1_1_0.dtd">
>>>>  <ServiceExceptionReport version="1.1.0">
>>>>  <ServiceException>
>>>>  msWMSDispatch(): WMS server error. WMS request not enabled. Check
>>>> wms/ows_enable_request settings.
>>>>  </ServiceException>
>>>>  </ServiceExceptionReport>
>>>>
>>>> So, it seems I have to somehow, somewhere enable 'ows_enable_request'.
>>>> Looking at the documentation, seems like if I had a map file, I could add
>>>> the following line to do so
>>>>
>>>>  ows_enable_request '*'
>>>>
>>>> However, I am not using a map file at all. Not finding any documentation
>>>> on this setting, I tried the following to no avail
>>>>
>>>>  $map->{ows_enable_request} = '*';
>>>>
>>>>
>>>> Suggestions, anyone?
>>>>
>>>>
>>>> On Sep 7, 2011, at 10:18 PM, Mr. Puneet Kishor wrote:
>>>>
>>>>> I would really appreciate insight from someone well-versed in the ins
>>>>> and outs of WMS via MapScript. Looking at the discussion at
>>>>> [http://trac.osgeo.org/mapserver/ticket/670], the `img = wms_map.draw()`
>>>>> step seems to be a crucial part of drawing the image.
>>>>>
>>>>> So, I added `my $img = $map->draw();` to my code below, and indeed, the
>>>>> image was drawn and sent back to the browser.
>>>>>
>>>>> Is this something that should be added to the examples in the
>>>>> documentation? Is this the right way to do things? In any case, I am not
>>>>> write to STDOUT, and sending the buffer directly. Instead, my code is very
>>>>> much like a regular request (and it works) --
>>>>>
>>>>>    my $new_extent = $map->{extent};
>>>>>
>>>>>    my $req = new mapscript::OWSRequest();
>>>>>    $req->setParameter( "SERVICE", "WMS" );
>>>>>    $req->setParameter( "VERSION", "1.1.0" );
>>>>>    $req->setParameter( "REQUEST", "GetMap" );
>>>>>    $req->setParameter( "BBOX", "-180,-90,180,90" );
>>>>>    $req->setParameter( "LAYERS", "layer_name");
>>>>>    $req->setParameter( "SRS", "-1");
>>>>>    $req->setParameter( "WIDTH", "1200");
>>>>>    $req->setParameter( "HEIGHT", "600");
>>>>>
>>>>>    my $dispatch_out = $map->OWSDispatch( $req );
>>>>>    my $img = $map->draw();
>>>>>    my $map_img = 'test_' . sprintf("%0.10d", rand(1000000000)) .
>>>>> '.png';
>>>>>    $img->save("/path/to/$map_img");
>>>>>    return send_file("/path/to/$map_img");
>>>>>
>>>>>
>>>>> Comments? Corrections?
>>>>>
>>>>>
>>>>> On Sep 7, 2011, at 6:12 PM, Mr. Puneet Kishor wrote:
>>>>>
>>>>>>
>>>>>> On Sep 7, 2011, at 5:49 PM, Mr. Puneet Kishor wrote:
>>>>>>
>>>>>>> I am trying to convert my MapScript program to a WMS responder. I
>>>>>>> create my $map where I set all the layers and classes and colors, etc, just
>>>>>>> like for a normal, non-WMS request that works perfectly correctly.
>>>>>>>
>>>>>>> my $map = undef;
>>>>>>> $map = mapObj(name =>  'mymap') unless defined $map;
>>>>>>>
>>>>>>> my $req = new mapscript::OWSRequest();
>>>>>>> $req->setParameter( "SERVICE", "WMS" );
>>>>>>> $req->setParameter( "VERSION", "1.1.0" );
>>>>>>> $req->setParameter( "REQUEST", "GetCapabilities" );
>>>>>>
>>>>>> I changed the above line to
>>>>>>
>>>>>>  $req->setParameter( "REQUEST", "GetMap");
>>>>>>
>>>>>> but, still no improvement.
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> mapscript::msIO_installStdoutToBuffer();
>>>>>>> my $dispatch_out = $map->OWSDispatch( $req );
>>>>>>> printf "%s\n", mapscript::msIO_getStdoutBufferString();
>>>>>>>
>>>>>>> Except, the above doesn't really do anything for me. I get nothing in
>>>>>>> my browser. Suggestions?
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Puneet Kishor
>>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> mapserver-users mailing list
>>>> mapserver-users at lists.osgeo.org
>>>> http://lists.osgeo.org/mailman/listinfo/mapserver-users
>>>>
>>
>> _______________________________________________
>> mapserver-users mailing list
>> mapserver-users at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/mapserver-users
>>
> _______________________________________________
> mapserver-users mailing list
> mapserver-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapserver-users
>



-- 
---------------------------------------+--------------------------------------
I set the clouds in motion - turn up   | Frank Warmerdam, warmerdam at pobox.com
light and sound - activate the windows | http://pobox.com/~warmerdam
and watch the world go round - Rush    | Geospatial Software Developer


More information about the mapserver-users mailing list