HI Steve,

Yes, it is the MapServer logs that might have something useful. You can also 
increase the LAYER logging and add in GDAL logging by adding the following to 
the Mapfile:

  CONFIG "CPL_DEBUG" "ON"
  CONFIG "PROJ_DEBUG" "ON"
  DEBUG 5
   
   LAYER
      DEBUG 5

I wouldn't worry too much about the querying until you can see output in the 
map. I'd probably try a few things to narrow it down:

- does the LAYER work if you switch the data to the ssh layer?
- does the LAYER work if you use the image directly without the .vrt?
- maybe get the EXTENT from QGIS or GDAL in EPSG:4326 and add the EXTENT to the 
layer.

In my experience, blank layers are usually related to extent or projection, but 
it could be something else.

Seth

--
web:https://geographika.net & https://mapserverstudio.net
mastodon: @geographika@mastodon.social

On Thu, May 29, 2025, at 7:42 PM, Stephen Woodbridge wrote:
> Hi Seth,
> 
> My mine finally engaged on mapserver logs. Here are the results of the query 
> request:
> 
> https://map51.saltwatercentral.com/cgi-bin/mapserv?map=/maps/wms/hycom_2d_1.map&mode=query&type=mlt&layers=query&mapxy=-67+37
> 
> [Thu May 29 12:38:19.457606 2025] [cgi:error] [pid 848556] [client 
> 98.97.22.100:40842] AH01215: CGI Request 1 on process 904443: 
> /usr/lib/cgi-bin/mapserv
> [Thu May 29 12:38:19.457794 2025] [cgi:error] [pid 848556] [client 
> 98.97.22.100:40842] AH01215: msRasterQueryByRect(query): entering.: 
> /usr/lib/cgi-bin/mapserv
> [Thu May 29 12:38:19.460164 2025] [cgi:error] [pid 848556] [client 
> 98.97.22.100:40842] AH01215: msRasterQueryByRect(query): entering.: 
> /usr/lib/cgi-bin/mapserv
> [Thu May 29 12:38:19.460397 2025] [cgi:error] [pid 848556] [client 
> 98.97.22.100:40842] AH01215: msQueryByPoint(): Search returned no results. No 
> matching record(s) found.: /usr/lib/cgi-bin/mapserv
> [Thu May 29 12:38:19.460577 2025] [cgi:error] [pid 848556] [client 
> 98.97.22.100:40842] AH01215: mapserv request processing time (msLoadMap not 
> incl.): 0.003s: /usr/lib/cgi-bin/mapserv
> [Thu May 29 12:38:19.460707 2025] [cgi:error] [pid 848556] [client 
> 98.97.22.100:40842] AH01215: msFreeMap(): freeing map at 0x5585ff1f65e0.: 
> /usr/lib/cgi-bin/mapserv
> 
> -Steve
> 
> On 5/27/2025 1:41 PM, Seth G wrote:
>> Hi Steve,
>> 
>> Anything in the MapServer logs? And what is the actual network request to 
>> MapServer?
>> You do have a "visible: false" set in your OpenLayers code - I presume this 
>> gets changed by a legend at some point.
>> 
>> Seth
>> 
>> --
>> mastodon: @geographika@mastodon.social
>> 
>> On Mon, May 26, 2025, at 10:28 PM, Stephen Woodbridge via gdal-dev wrote:
>>> Hi all,
>>> 
>>> I'm being pulled out of retirement to fix something I created years ago. 
>>> I'm probably doing something stupid but I haven't been able to sort it out, 
>>> so ask for some help.
>>> 
>>> System: Ubuntu-22.04
>>> GDAL 3.4.1, released 2021/12/27
>>> OpenLayers 5.3.3
>>> MapServer version 7.6.4 OUTPUT=PNG OUTPUT=JPEG OUTPUT=KML SUPPORTS=PROJ 
>>> SUPPORTS=AGG SUPPORTS=FREETYPE SUPPORTS=CAIRO SUPPORTS=SVG_SYMBOLS 
>>> SUPPORTS=RSVG SUPPORTS=ICONV SUPPORTS=FRIBIDI SUPPORTS=WMS_SERVER 
>>> SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT 
>>> SUPPORTS=WCS_SERVER SUPPORTS=SOS_SERVER SUPPORTS=FASTCGI SUPPORTS=THREADS 
>>> SUPPORTS=GEOS SUPPORTS=POINT_Z_M SUPPORTS=PBF INPUT=JPEG INPUT=POSTGIS 
>>> INPUT=OGR INPUT=GDAL INPUT=SHAPEFILE
>>> 
>>> Right some of this is pretty old, but I suspect that is not the current 
>>> issue.
>>> 
>>> 1. I extract some data from HYCOM and generate a GTiff
>>> 2. Manually generate a VRT to add a color table
>>> 3. Have a mapserver mapfile to display it
>>> 
>>> Step 1. seems to work fine, but when I do a mapserver query I get no results
>>> Step 2. seems to look good and if a gdal_translate -of PNG -outsize 1% 1% 
>>> source target the image displays
>>> Step 3. just gives me empty transparent tiles in OpenLayers
>>> 
>>> Here is the gdalinfo results for the GTif:
>>> 
>>> $ gdalinfo -stats -hist HYCOM_tomorrow_mld.tif
>>> Driver: GTiff/GeoTIFF
>>> Files: HYCOM_tomorrow_mld.tif
>>> Size is 4500, 4251
>>> Coordinate System is:
>>> GEOGCRS["WGS 84",
>>>     DATUM["World Geodetic System 1984",
>>>         ELLIPSOID["WGS 84",6378137,298.257223563,
>>>             LENGTHUNIT["metre",1]]],
>>>     PRIMEM["Greenwich",0,
>>>         ANGLEUNIT["degree",0.0174532925199433]],
>>>     CS[ellipsoidal,2],
>>>         AXIS["geodetic latitude (Lat)",north,
>>>             ORDER[1],
>>>             ANGLEUNIT["degree",0.0174532925199433]],
>>>         AXIS["geodetic longitude (Lon)",east,
>>>             ORDER[2],
>>>             ANGLEUNIT["degree",0.0174532925199433]],
>>>     ID["EPSG",4326]]
>>> Data axis to CRS axis mapping: 2,1
>>> Origin = (-180.000000000000000,90.000000000000000)
>>> Pixel Size = (0.080000000000000,-0.040000000000000)
>>> Metadata:
>>>   AREA_OR_POINT=Area
>>> Image Structure Metadata:
>>>   INTERLEAVE=BAND
>>> Corner Coordinates:
>>> Upper Left  (-180.0000000,  90.0000000) (180d 0' 0.00"W, 90d 0' 0.00"N)
>>> Lower Left  (-180.0000000, -80.0400000) (180d 0' 0.00"W, 80d 2'24.00"S)
>>> Upper Right ( 180.0000000,  90.0000000) (180d 0' 0.00"E, 90d 0' 0.00"N)
>>> Lower Right ( 180.0000000, -80.0400000) (180d 0' 0.00"E, 80d 2'24.00"S)
>>> Center      (   0.0000000,   4.9800000) (  0d 0' 0.01"E,  4d58'48.00"N)
>>> Band 1 Block=4500x1 Type=Float32, ColorInterp=Gray
>>>   Minimum=2.000, Maximum=5000.000, Mean=96.114, StdDev=346.786
>>> 0...10...20...30...40...50...60...70...80...90...100 - done.
>>>   256 buckets from -7.8 to 5009.8:
>>>   1489490 2306537 1907189 2028756 996825 306674 493493 0 196427 0 94515 0 0 
>>> 33174 0 22423 0 0 11571 0 5892 0 0 0 0 8326 0 0 0 0 0 8045 0 0 0 0 7615 0 0 
>>> 0 0 6418 0 0 0 0 5695 0 0 0 0 4944 0 0 0 0 0 0 0 0 0 0 0 0 13673 0 0 0 0 0 
>>> 0 0 0 0 0 0 17543 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31132 0 
>>> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30109 0 0 0 0 0 0 0 0 0 0 0 0 
>>> 0 0 0 0 0 0 0 0 0 0 0 0 0 40660 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
>>> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28594 0 0 0 0 0 0 0 
>>> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
>>> 0 0 0 0 0 1702
>>>   NoData Value=-30000
>>>   Overviews: 2250x2126, 1125x1063, 563x532, 282x266, 141x133, 71x67
>>>   Metadata:
>>>     STATISTICS_MAXIMUM=5000
>>>     STATISTICS_MEAN=96.114400289494
>>>     STATISTICS_MINIMUM=2
>>>     STATISTICS_STDDEV=346.78571541402
>>>     STATISTICS_VALID_PERCENT=52.78
>>> 
>>> My assumption based on this is that I want to scale the 5000 to 250 in the 
>>> VRT which will be Type=Byte, So here is the VRT file.
>>> 
>>> $ cat HYCOM_tomorrow_mld.vrt                <VRTDataset rasterXSize="72000" 
>>> rasterYSize="68016">
>>>   <SRS>GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 
>>> 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433],AUTHORITY["EPSG","4326"]]</SRS>
>>>   <GeoTransform> -180.0 ,0.005 , 0 , 90.0 , 0 , -0.0025 </GeoTransform>
>>>   <Metadata>
>>>   </Metadata>
>>>   <VRTRasterBand dataType="Byte" band="1">
>>>     <ColorInterp>Palette</ColorInterp>
>>>     <ColorTable>
>>>       <Entry c1="0" c2="0" c3="0" c4="255"/>
>>> 
>>>       [Snip lots of entries]
>>> 
>>>       <Entry c1="255" c2="255" c3="255" c4="255"/>
>>>     </ColorTable>
>>>     <ComplexSource resampling="bilinear">
>>>       <SourceFilename 
>>> relativeToVRT="1">HYCOM_tomorrow_mld.tif</SourceFilename>
>>>       <SourceBand>1</SourceBand>
>>>       <SrcRect xOff="0" yOff="0" xSize="4500" ySize="4251"/>
>>>       <DstRect xOff="0" yOff="0" xSize="72000" ySize="68016"/>
>>>       <ScaleRatio>1</ScaleRatio>
>>>       <NODATA>0</NODATA>
>>>     </ComplexSource>
>>>   </VRTRasterBand>
>>> </VRTDataset>
>>> 
>>> So to scale the data I set ScaleRatio to 0.05, but the PNG image doesn't 
>>> look right and setting it to "1" does look correct. I'm also confused as to 
>>> what to set NODATA value to. One source said/implied that the NoData of the 
>>> source file would get set to NODATA value in the VRT, but seem to be 
>>> countered by the GDAL online docs.
>>> 
>>> Here is the gdalinfo for the VRT:
>>> 
>>> $ gdalinfo -stats -hist HYCOM_tomorrow_mld.vrt
>>> Driver: VRT/Virtual Raster
>>> Files: HYCOM_tomorrow_mld.vrt
>>>        HYCOM_tomorrow_mld.tif
>>> Size is 72000, 68016
>>> Coordinate System is:
>>> GEOGCRS["WGS 84",
>>>     DATUM["World Geodetic System 1984",
>>>         ELLIPSOID["WGS 84",6378137,298.257223563,
>>>             LENGTHUNIT["metre",1]]],
>>>     PRIMEM["Greenwich",0,
>>>         ANGLEUNIT["degree",0.0174532925199433]],
>>>     CS[ellipsoidal,2],
>>>         AXIS["geodetic latitude (Lat)",north,
>>>             ORDER[1],
>>>             ANGLEUNIT["degree",0.0174532925199433]],
>>>         AXIS["geodetic longitude (Lon)",east,
>>>             ORDER[2],
>>>             ANGLEUNIT["degree",0.0174532925199433]],
>>>     ID["EPSG",4326]]
>>> Data axis to CRS axis mapping: 2,1
>>> Origin = (-180.000000000000000,90.000000000000000)
>>> Pixel Size = (0.005000000000000,-0.002500000000000)
>>> Corner Coordinates:
>>> Upper Left  (-180.0000000,  90.0000000) (180d 0' 0.00"W, 90d 0' 0.00"N)
>>> Lower Left  (-180.0000000, -80.0400000) (180d 0' 0.00"W, 80d 2'24.00"S)
>>> Upper Right ( 180.0000000,  90.0000000) (180d 0' 0.00"E, 90d 0' 0.00"N)
>>> Lower Right ( 180.0000000, -80.0400000) (180d 0' 0.00"E, 80d 2'24.00"S)
>>> Center      (   0.0000000,   4.9800000) (  0d 0' 0.01"E,  4d58'48.00"N)
>>> Band 1 Block=128x128 Type=Byte, ColorInterp=Palette
>>>   Minimum=2.000, Maximum=5000.000, Mean=96.114, StdDev=346.786
>>> 0...10...20...30...40...50...60...70...80...90...100 - done.
>>>   256 buckets from -0.5 to 255.5:
>>>   0 0 534720 0 330663 0 149196 0 241797 0 233114 0 285113 0 0 385666 0 0 0 
>>> 0 574491 0 0 0 0 517919 0 0 0 0 543348 0 0 0 0 455442 0 0 0 0 487763 0 0 0 
>>> 0 530058 0 0 0 0 433926 0 0 0 0 0 0 0 0 0 1117668 0 0 0 0 0 0 0 0 0 911088 
>>> 0 0 0 0 0 0 0 0 0 602087 0 0 0 0 0 0 0 0 0 394738 0 0 0 0 0 0 0 0 0 306674 
>>> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 493493 0 0 0 0 0 0 0 0 0 0 
>>> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 196427 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
>>> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 94515 0 0 0 0 0 0 
>>> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
>>> 0 0 0 0 0 33174 0 0 0 0 244342
>>>   Overviews: 36000x34016, 18000x17008, 9008x8512, 4512x4256, 2256x2128, 
>>> 1136x1072
>>>   Metadata:
>>>     STATISTICS_MAXIMUM=5000
>>>     STATISTICS_MEAN=96.114400289494
>>>     STATISTICS_MINIMUM=2
>>>     STATISTICS_STDDEV=346.78571541402
>>>   Color Table (RGB with 256 entries)
>>>     0: 0,0,0,255
>>>     [snip additional entries]
>>> 
>>> And finally the mapfile that is getting used via OpenLayers:
>>> 
>>> MAP
>>>     NAME "HYCOM_2d_2"
>>>     STATUS ON
>>>     SIZE 950 600
>>>     EXTENT -180 -90 180 90
>>>     UNITS DD
>>>     IMAGECOLOR "#000000"
>>>     IMAGETYPE agg_qn
>>>     MAXSIZE 4096
>>> 
>>>     CONFIG ON_MISSING_DATA "IGNORE"
>>> #    CONFIG MS_ERRORFILE "stderr"
>>> #    DEBUG 10
>>> 
>>>     OUTPUTFORMAT
>>>         NAME "agg_qn"
>>>         DRIVER "AGG/PNG"
>>>         EXTENSION "png"
>>>         MIMETYPE "image/png"
>>>         IMAGEMODE RGBA
>>>         FORMATOPTION "INTERLACE=false"
>>>         FORMATOPTION "QUANTIZE_NEW=ON"
>>>         FORMATOPTION "QUANTIZE_FORCE=ON"
>>>         FORMATOPTION "QUANTIZE_DITHER=OFF"
>>>         FORMATOPTION "QUANTIZE_COLORS=256"
>>>         TRANSPARENT ON
>>>         FORMATOPTION "TRANSPARENT=ON"
>>>     END
>>> 
>>>     OUTPUTFORMAT
>>>         NAME aggpng24
>>>         DRIVER AGG/PNG
>>>         MIMETYPE "image/png"
>>>         IMAGEMODE RGB
>>>         EXTENSION "png"
>>>     END
>>> 
>>>     OUTPUTFORMAT
>>>         NAME jpeg
>>>         DRIVER AGG/JPEG
>>>         MIMETYPE "image/jpeg"
>>>         IMAGEMODE RGB
>>>         EXTENSION "jpg"
>>>         FORMATOPTION "GAMMA=0.75"
>>>         FORMATOPTION "QUALITY=75"
>>>     END
>>> 
>>>     WEB
>>>         METADATA
>>>             labelcache_map_edge_buffer "-20"
>>>             "ows_title"     "iMaptools - HYCOM data"
>>>             "ows_onlineresource"    
>>> "http://map01.saltwatercentral.com/cgi-bin/mapserv?MAP=/maps/wms/hycom_2d_2.map";
>>>             "ows_srs"       "EPSG:4326 EPSG:900913 EPSG:3857"
>>>             "ows_contactperson"     "Stephen Woodbridge"
>>>             "ows_contactorganization" "iMaptools.com"
>>>             "ows_contactposition"   "Owner"
>>>             "ows_contactelectronicmailaddress" "i...@imaptools.com"
>>>             "ows_enable_request" "GetMap"
>>>             "ows_http_max_age" "3200"
>>>         END
>>>     END
>>> 
>>>     PROJECTION "init=epsg:4326" END
>>> 
>>>     LAYER
>>>         NAME "ssh"
>>>         STATUS ON
>>>         TYPE RASTER
>>>         PROJECTION "init=epsg:4326" END
>>>         DATA "/maps/wms/data/HYCOM/HYCOM_tomorrow_ssh.vrt"
>>>         PROCESSING "NODATA=-30000"
>>>         PROCESSING "SCALE=-1.0,1.0"
>>>     END
>>> 
>>>     LAYER
>>>         NAME "mlt"
>>>         STATUS ON
>>>         TYPE RASTER
>>>         PROJECTION "init=epsg:4326" END
>>>         DATA "/maps/wms/data/HYCOM/HYCOM_tomorrow_mlt.vrt"
>>>         #PROCESSING "NODATA=1.2676506002282294e+30"
>>>         PROCESSING "NODATA=-30000"
>>>         PROCESSING "SCALE=0,250"
>>>     END
>>> 
>>>     LAYER
>>>         NAME "query"
>>>         STATUS ON
>>>         TYPE raster
>>>         PROJECTION "init=epsg:4326" END
>>>         VALIDATION 'type' '.' END
>>>         TOLERANCE 0
>>>         TOLERANCEUNITS pixels
>>>         DATA "/maps/wms/data/HYCOM/HYCOM_tomorrow_%type%.tif"
>>>         PROCESSING "NODATA=-30000"
>>>         TEMPLATE "/maps/wms/pixel.value.html"
>>>     END
>>> 
>>> END
>>> 
>>> I've tried various options of including PROCESSING "NODATA=' and PROCESSING 
>>> "SCALE=" to no success. And the "ssh" layer which is nearly identical seems 
>>> to would fine.
>>> 
>>> It get displayed via OpenLayers using a layer definition like:
>>> 
>>>     hycom_mlt_2: new TileLayer({
>>>         title: 'Mixed Layer Depth (0.3degC chg)',
>>>         clickable: 'hycom_mlt_2',
>>>         type: 'overlay',
>>>         visible: false,
>>>         source: new TileWMS({
>>>             projection: 'EPSG:3857',
>>>             urls: getMapUrls('//', map_hosts, 
>>> '/cgi-bin/mapserv?map=/maps/wms/hycom_2d_2.map'),
>>>             params: {
>>>                 'LAYERS': 'mlt',
>>>                 'format': 'image/png',
>>>                 'version': '1.3.0'
>>>             }
>>>         })
>>>     }),
>>> 
>>> 
>>> I would appreciate any assistance in figuring out what I'm doing wrong.
>>> 
>>> Thanks,
>>>   Steve
>>> 
 
<https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient>
>>> Virus-free.www.avast.com 
>>> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient>
>>> 
>>> _______________________________________________
>>> gdal-dev mailing list
>>> gdal-dev@lists.osgeo.org
>>> https://lists.osgeo.org/mailman/listinfo/gdal-dev
>>> 
>> 
_______________________________________________
gdal-dev mailing list
gdal-dev@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to