[mapserver-users] Re: MapScript WMS request

Mr. Puneet Kishor punk.kish at gmail.com
Wed Sep 7 23:18:11 EDT 2011


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
> 



More information about the mapserver-users mailing list