Blank image being created in MS 4.6.0

Mike Boos mboos at AUGSIGNALS.COM
Fri Aug 26 10:49:03 EDT 2005


Thank you very much, I applied the patch, recompiled, and everything 
worked! Thanks for finding and fixing the problem so quickly.

Mike

Frank Warmerdam wrote:

>On 8/25/05, Frank Warmerdam <fwarmerdam at gmail.com> wrote:
>  
>
>>Mike,
>>
>>I assume there has been some subtle breakdown in the handling
>>of ungeoreferenced images in the MapServer raster support.  I'll
>>try this out myself and see what can be done.
>>    
>>
>
>Mike,
>
>I have confirmed that things changed due to a behavioral 
>change in GDAL and/or changes in the MapServer raster logic
>for ungeoreferenced files.  I have applied a patch in MapServer
>CVS (head and the 4.6 branch) but was only an hour or so late
>to get into MapServer 4.6.1.  You can replace the msGetGDALGeoTransform
>code in mapdrawgdal.c with the following to fix your own source tree.
>
>/************************************************************************/
>/*                       msGetGDALGeoTransform()                        */
>/*                                                                      */
>/*      Cover function that tries GDALGetGeoTransform(), a world        */
>/*      file or OWS extents.                                            */
>/************************************************************************/
>
>int msGetGDALGeoTransform( GDALDatasetH hDS, mapObj *map, layerObj *layer, 
>                           double *padfGeoTransform )
>
>{
>    rectObj  rect;
>
>/* -------------------------------------------------------------------- */
>/*      some GDAL drivers (ie. GIF) don't set geotransform on failure.  */
>/* -------------------------------------------------------------------- */
>    padfGeoTransform[0] = 0.0;
>    padfGeoTransform[1] = 1.0;
>    padfGeoTransform[2] = 0.0;
>    padfGeoTransform[3] = GDALGetRasterYSize(hDS);
>    padfGeoTransform[4] = 0.0;
>    padfGeoTransform[5] = -1.0;
>    
>/* -------------------------------------------------------------------- */
>/*      Try GDAL.                                                       */
>/*                                                                      */
>/*      Make sure that ymax is always at the top, and ymin at the       */
>/*      bottom ... that is flip any files without the usual             */
>/*      orientation.  This is intended to enable display of "raw"       */
>/*      files with no coordinate system otherwise they break down in    */
>/*      many ways.                                                      */
>/* -------------------------------------------------------------------- */
>    if (GDALGetGeoTransform( hDS, padfGeoTransform ) == CE_None )
>    {
>        if( padfGeoTransform[5] == 1.0 && padfGeoTransform[3] == 0.0 )
>        {
>            padfGeoTransform[5] = -1.0;
>            padfGeoTransform[3] = GDALGetRasterYSize(hDS);
>        }
>
>        return MS_SUCCESS;
>    }
>
>/* -------------------------------------------------------------------- */
>/*      Try worldfile.                                                  */
>/* -------------------------------------------------------------------- */
>    else if( GDALGetDescription(hDS) != NULL 
>             && GDALReadWorldFile(GDALGetDescription(hDS), "wld", 
>                                  padfGeoTransform) )
>    {
>        return MS_SUCCESS;
>    }
>
>/* -------------------------------------------------------------------- */
>/*      Try OWS extent metadata.                                        */
>/* -------------------------------------------------------------------- */
>#if defined(USE_WMS_SVR) || defined (USE_WFS_SVR)
>    else if( msOWSGetLayerExtent( map, layer, "MFCO", &rect ) == MS_SUCCESS )
>    {
>        padfGeoTransform[0] = rect.minx;
>        padfGeoTransform[1] = (rect.maxx - rect.minx) /
>            (double) GDALGetRasterXSize( hDS );
>        padfGeoTransform[2] = 0;
>        padfGeoTransform[3] = rect.maxy;
>        padfGeoTransform[4] = 0;
>        padfGeoTransform[5] = (rect.miny - rect.maxy) /
>            (double) GDALGetRasterYSize( hDS );
>
>        return MS_SUCCESS;
>    }
>#endif
>
>/* -------------------------------------------------------------------- */
>/*      We didn't find any info ... use the default.                    */
>/*      Reset our default geotransform.  GDALGetGeoTransform() may      */
>/*      have altered it even if GDALGetGeoTransform() failed.           */
>/* -------------------------------------------------------------------- */
>    else
>    {
>        padfGeoTransform[0] = 0.0;
>        padfGeoTransform[1] = 1.0;
>        padfGeoTransform[2] = 0.0;
>        padfGeoTransform[3] = GDALGetRasterYSize(hDS);
>        padfGeoTransform[4] = 0.0;
>        padfGeoTransform[5] = -1.0;
>
>        return MS_FAILURE;
>    }
>}
>
>Best regards,
>  
>



More information about the mapserver-users mailing list