Hi Puneet,
A few things to try:
1- Reduce your map to a single layer if that's not already the case for
your first round of tests.
2- Try a GetCapabilities instead of GetMap, and make sure your layer
shows up properly and with no WARNING in the GetCapabilities XML output.
Make sure the name of the layer is not changed: if you have multiple
layers with the same name then the WMS handler will rename them to make
them unique (WMS spec requirement)
3- Enable DEBUG at the map and layer level and look for any hints as to
why nothing shows up. Compare the debug output between your WMS requests
and the regular MapServer requests (the one that you say works fine)
(see http://mapserver.org/optimization/debugging.html)
4- Frank's earlier suggestion to start by making things work from a
regular mapfile first and then converting/moving stuff to mapscript
progressively still stands as a great option.
Daniel
On 11-09-08 07:14 PM, Mr. Puneet Kishor wrote:
top posting, as most of the relevant info is self-contained in this email --
Ok, with the help of the suggestions from many of you, and by adding the
following lines to my program, I am no longer getting any error.
..
$map->setMetaData("ows_enable_request", "*");
..
$map->setProjection("init=epsg:4326");
..
$layerOne->setProjection("init=epsg:4326");
..
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", "mylayer");
$req->setParameter("SRS", "EPSG:4326");
$req->setParameter("WIDTH", "1200");
$req->setParameter("HEIGHT", "600");
$req->setParameter("FORMAT", "image/png");
my $io = mapscript::msIO_installStdoutToBuffer();
my $dispatch_out = $map->OWSDispatch( $req );
printf "%s\n", mapscript::msIO_getStdoutBufferString();
The only problem is -- I am getting an image with nothing in it. This implies
that I have likely got all the params for WMS correct, but now I am screwing up
with some step in the layer creation. The interesting thing is, this is the
same code that works fine as a regular MapServer request; makes an image fast
and quick and correct. Is there a way I can add error logging to my WMS program
to see what is going on at every step? Perhaps capture the database query being
made, etc.
On Sep 8, 2011, at 1:22 PM, Frank Warmerdam wrote:
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<[email protected]> 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<[email protected]>
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
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapserver-users
--
Daniel Morissette
http://www.mapgears.com/
Provider of Professional MapServer Support since 2000
_______________________________________________
mapserver-users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapserver-users