[mapserver-users] MapScript WMS request

Fawcett, David (MPCA) david.fawcett at state.mn.us
Fri Sep 9 10:47:54 EDT 2011


Puneet, 

Using MapServer CGI and layer.MapServer would not set you up well for other client libraries, so I see your point.  It can be viable though.

In this app (just an imagemap, not OL), there are no attribute values associated with the spatial data.  The classes are generated on-the-fly and the county id's for each class are passed in as URL vars.  Same thing for the legend.  This allows flexibility for compounds who's emissions may vary from tens of pounds to millions of pounds.

This approach may not work for your case, but it is another way to slice it...

http://www.pca.state.mn.us/index.php/topics/environmental-data/eda-environmental-data-access/eda-air-quality-searches/eda-air-quality-search-emissions-by-county-data.html

David.

-----Original Message-----
From: mapserver-users-bounces at lists.osgeo.org [mailto:mapserver-users-bounces at lists.osgeo.org] On Behalf Of Mr. Puneet Kishor
Sent: Friday, September 09, 2011 9:35 AM
To: mapserver-users at lists.osgeo.org
Subject: Re: [mapserver-users] MapScript WMS request


On Sep 9, 2011, at 8:39 AM, Fawcett, David (MPCA) wrote:

> Puneet, 
> 
> As far as I know, OpenLayers still has support for a layer based on MapServer CGI.  Because MapServer can also serve up WMS well, this layer type isn't necessarily recommended or as well supported.  
> 
> http://dev.openlayers.org/docs/files/OpenLayers/Layer/MapServer-js.html



Indeed David. Because, going by the docs, the MapServer CGI calls are discouraged (or so it seems), I'd rather not invest in that path. This is a long term project that I am working on, so the foundations have to be very robust. Besides, I may or may not use OL. While I like OL a lot, I am also looking at other frameworks (Gmaps, Leaflet, Polymaps), and it would be wise to decouple the backend from the front-end as much as possible.

I have no issues with using WMS, but I just am unable to get MapServer WMS to work via MapScript. And, yes, I do have to use MapScript if I can help it -- my layer classification is generated on demand, and MapScript is the easiest way I can think of for doing that.

I did find yesterday that `mode=tile` works really well, but I am trying to make that work with MapScript. A separate email thread for that question.




> 
> David.
> 
> -----Original Message-----
> From: mapserver-users-bounces at lists.osgeo.org [mailto:mapserver-users-bounces at lists.osgeo.org] On Behalf Of Mr. Puneet Kishor
> Sent: Thursday, September 08, 2011 9:32 PM
> To: Daniel Morissette
> Cc: mapserver-users at lists.osgeo.org
> Subject: Re: [mapserver-users] MapScript WMS request
> 
> 
> On Sep 8, 2011, at 8:28 PM, Daniel Morissette wrote:
> 
>> On 11-09-08 09:02 PM, Mr. Puneet Kishor wrote:
>>> 
>>> On Sep 8, 2011, at 7:43 PM, Daniel Morissette wrote:
>>>> 
>>>> Maybe call $map->save("/tmp/my.map") in your script after the map and layer have been populated and paste the result... that may give us a hint...
>>>> 
>>> 
>>> wow! this is a super-awesome debugging technique. I have sent you the map file off list to not pollute the entire list serve.
>>> 
>> 
>> I was able to reproduce the issue with the copy of the mapfile you sent off-list.
>> 
>> It turns out that mappostgis.c's msPostGISLayerGetExtent() is hardcoded to always return
>> 
>> {minx = -25000000, miny = -25000000, maxx = 25000000, maxy = 25000000}
>> 
>> ...and then it returns MS_SUCCESS.
>> 
>> I think this function should either be left unimplemented (this way MapServer would fallback on other mechanisms), or return MS_FAILURE to indicate to the calling code that it didn't do anything useful.
>> 
>> A quick search indicates an open ticket about the issue:
>> 
>> http://trac.osgeo.org/mapserver/ticket/3585
>> 
>> You could bump the ticket and hope someone works on it at the FOSS4G code sprint next week.
>> 
>> The short term fix for you would be to set the "ows_extent" metadata in your layer:
>> 
>>   METADATA
>>     "ows_extent" "-180 -90 180 90"
>>  ...
>>   END
>> 
> 
> 
> Thanks Daniel. I will bump the ticket. For now, see below --
> 
> Using the "my.map" file I sent you, with no further modifications to it, I am able to successfully get an image back via [http://localhost.local/cgi-bin/gmna?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&BBOX=-180,-90,180,90&SRS=EPSG:4326&WIDTH=1200&HEIGHT=600&LAYERS=gmna&STYLES=&FORMAT=image/png&TRANSPARENT=true]
> 
> Note, no further modifications is required, that is, not even the "ows_extent" "-180 -90 180 90" bit in the layer METADATA. and I still get a good image.
> 
> 
> However, if I use the following program to access the same map file, I get the spurious "minx = -25000000, miny = -25000000, maxx = 25000000, maxy = 25000000" in the GetCapabilities.
> 
> Finally, if I add the "ows_extent" "-180 -90 180 90" line in the layer METADATA in the "my.map" file, the GetCapabilities returns the correct bounds now, however, the image is still blank.
> 
> 	#!/opt/local/bin/perl
> 	
> 	use strict;
> 	use mapscript;
> 	
> 	my $wms = new mapscript::OWSRequest();
> 	$wms->setParameter("SERVICE", "WMS" );
> 	$wms->setParameter("VERSION", "1.1.1" );
> 	$wms->setParameter("REQUEST", "GetMap" );
> 	$wms->setParameter("BBOX", "-180,-90,180,90" );
> 	$wms->setParameter("LAYERS", "gmna");
> 	$wms->setParameter("SRS", "EPSG:4326");
> 	$wms->setParameter("WIDTH", "1200");
> 	$wms->setParameter("HEIGHT", "600");
> 	$wms->setParameter("FORMAT", "image/png");
> 	$wms->setParameter("TRANSPARENT", "true");
> 	
> 	my $map = new mapscript::mapObj("/Users/punkish/Sites/test/mapscript/my.map");
> 	
> 	if(!$map) {
> 		warn "New mapObj() error: $mapscript::ms_error->{message}\n";
> 	}
> 	
> 	my $io = mapscript::msIO_installStdoutToBuffer();
> 	my $dispatch_out = $map->OWSDispatch( $wms );
> 	printf "%s\n", mapscript::msIO_getStdoutBufferString();
> 
> I have now spent an enormous amount of time on this, and for now, I have to move on. This is just not working out. Maybe I will try some other technique, perhaps this mode=tile to see if I can get MapServer powered maps in my apps.
> 
> Thanks much for your help. If you (or anyone else) can come up with a bright idea, I will be happy to try it.
> 
> Puneet.
> 
> _______________________________________________
> mapserver-users mailing list
> mapserver-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapserver-users
> 
> 

_______________________________________________
mapserver-users mailing list
mapserver-users at lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapserver-users




More information about the mapserver-users mailing list