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
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapserver-users

Reply via email to