Blank image being created in MS 4.6.0
Frank Warmerdam
fwarmerdam at GMAIL.COM
Thu Aug 25 15:12:24 PDT 2005
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,
--
---------------------------------------+--------------------------------------
I set the clouds in motion - turn up | Frank Warmerdam, warmerdam at pobox.com
light and sound - activate the windows | http://pobox.com/~warmerdam
and watch the world go round - Rush | Geospatial Programmer for Rent
More information about the MapServer-users
mailing list