[mapserver-users] Mapserver + WMS

Jeff McKenna jmckenna at gatewaygeomatics.com
Mon Oct 11 11:35:41 PDT 2021


Hi Carl,

First, welcome to the MapServer community!

Thanks for the detailed question, and pointing to the source data, this 
always helps to give a proper answer.

You've done well and are very close.  Here are some points to consider:

- the OGC specification for serving raw raster data is actually WCS 
(which MapServer does well, see https://mapserver.org/ogc/wcs_server.html )

- but you're right that a cool trick is to use the (more) popular WMS 
specification and set an OUTPUTFORMAT in your server's mapfile, to 
generate a GeoTIFF through a WMS GetMap request.

- I see that you've already setup an OUTPUTFORMAT such as:

OUTPUTFORMAT
   NAME "GEOTIFF_16"
   DRIVER "GDAL/GTiff"
   MIMETYPE "image/tiff"
   IMAGEMODE INT16
   EXTENSION "tif"
END

- now the trick is to call that specific outputformat.  I recommend 
always testing this at the commandline first, with shp2img (which will 
be renamed to 'map2img' shortly, for the MapServer 8.0 release).  It 
takes a mapfile and generates an output (or gives exact error).

- since you are using MS4W, just open a CMD window and cd into /ms4w. 
Then execute 'setenv.bat' to set necessary paths.  Then, in that same 
windows, cd to where your mapfile is, and execute the following (notice 
the "-i" switch, which requests the named outputformat set in the mapfile) :

   shp2img -m local.map -o ttt16.tif -map_debug 3 -i GEOTIFF_16

- that command should return a draw speed for each layer, and generate 
your 16-bit GeoTIFF.  And look closely at that response, the first words 
will be something like:

    rendering using outputformat named GEOTIFF_16 (GDAL/GTiff)

Great! That's what we want.

- once you're satisfied, now we can turn to WMS requests.  But always 
first start with removing any "WARNING" messages in your GetCapabilities 
request, and then also verifying that the <Format> section of that 
response includes a listed "image/tiff" format option.  (example 
GetCapabilities request) :

 
http://127.0.0.1/cgi-bin/mapserv.exe?map=/ms4w/apps/ticket-wms-gebco-outputformat/local.map&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities

- once you're happy with the GetCapabilities response, then you can try 
a GetMap request, that includes "&FORMAT=image/tiff"


 
http://127.0.0.1/cgi-bin/mapserv.exe?map=/ms4w/apps/ticket-wms-gebco-outputformat/local.map&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&BBOX=-90,-180,90,180&CRS=EPSG:4326&WIDTH=346&HEIGHT=173&LAYERS=gebco&STYLES=&FORMAT=image/tiff&DPI=96&MAP_RESOLUTION=96&FORMAT_OPTIONS=dpi:96&TRANSPARENT=TRUE

- or you can stay right there at your commandline, and make that GetMap 
request there with the "mapserv -nh QUERY_STRING="" trick, and pipe that 
to a new image file, such as:

   mapserv -nh 
QUERY_STRING="map=/ms4w/apps/ticket-wms-gebco-outputformat/local.map&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&BBOX=-90,-180,90,180&CRS=EPSG:4326&WIDTH=346&HEIGHT=173&LAYERS=gebco&STYLES=&FORMAT=image/tiff&DPI=96&MAP_RESOLUTION=96&FORMAT_OPTIONS=dpi:96&TRANSPARENT=TRUE" 
 > getmap.tif

Hope that helps.

Also thanks for the positive feedback on MS4W, its goal is to serve big 
data fast for organizations, on enterprise Windows servers, and it 
sounds like it has met your needs well.  Look for a big MS4W release soon ;)

And a happy (Canadian) Thanksgiving holiday to you.

-jeff



-- 
Jeff McKenna
GatewayGeo: Developers of MS4W, MapServer Consulting and Training
co-founder of FOSS4G
http://gatewaygeo.com/



On 2021-10-07 8:12 p.m., Carl Godkin wrote:
> Hi,
> 
> I'm new to mapserver but fairly experienced with GDAL.  I hope that 
> someone can explain where I've gone wrong with setting up WMS.
> 
> I followed the instructions here 
> [https://worldwind.earth/elevation-server.html 
> <https://worldwind.earth/elevation-server.html>] almost exactly to set 
> up a WMS server and it sort of works.  (I am using MS4W actually, so I 
> didn't install Apache & Mapserver as that page described and of course I 
> made a few other adaptations for Windows.)
> 
> I downloaded the GEBCO tiles from here 
> [https://www.gebco.net/data_and_products/gridded_bathymetry_data/ 
> <https://www.gebco.net/data_and_products/gridded_bathymetry_data/>] 
> without any problems.
> 
> What I don't understand is that while the GEBCO GeoTIFF files that I am 
> using have one band that gdalinfo describes as
> 
>   Band 1 Block=512x512 Type=Int16, ColorInterp=Gray
> 
> when I look at the WMS bands using gdalinfo, I see three byte-sized bands:
> 
> Band 1 Block=1024x1024 Type=Byte, ColorInterp=Red
> Band 2 Block=1024x1024 Type=Byte, ColorInterp=Green
> Band 3 Block=1024x1024 Type=Byte, ColorInterp=Blue
> 
> I'd really like to get 16-bit integer elevations from my WMS server but 
> I don't know why this didn't just happen or how I mis-configured things 
> to make it not happen.
> 
> I know these are not complete details, but rather than write a novel for 
> my first post here, I'm hoping someone can suggest where the problem 
> might be or suggest some further documentation to read.
> 
> Thanks very much,
> carl
> 
> 
> 


More information about the MapServer-users mailing list