[mapserver-users] Re: MapScript WMS request

Armin Burger armin.burger at gmx.net
Thu Sep 8 14:20:54 EDT 2011


Puneet

if you're interested in general in some sample code using PHP or Python 
MapScript for OWS request handling, please find some classes here:

http://p-ows.pmapper.net/trac/browser/p-ows/trunk

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
>


More information about the mapserver-users mailing list