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
