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 <armin.bur...@gmx.net> 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<punk.k...@gmail.com> >>>> 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 mapserver-users@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/mapserver-users