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



_______________________________________________
MapServer-users mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/mapserver-users

Reply via email to