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