Skip to content

Commit f7482ad

Browse files
committed
WCS output / msSaveImageGDAL(): fix support of netCDF output (#5968)
Fixes #5968 Derived from suggestion by @constantinius
1 parent 7389db7 commit f7482ad

1 file changed

Lines changed: 9 additions & 4 deletions

File tree

mapgdal.c

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ int msSaveImageGDAL( mapObj *map, imageObj *image, const char *filenameIn )
147147
int bUseXmp = MS_FALSE;
148148
const char *filename = NULL;
149149
char *filenameToFree = NULL;
150+
const char *gdal_driver_shortname = format->driver+5;
150151

151152
msGDALInitialize();
152153
memset(&rb,0,sizeof(rasterBufferObj));
@@ -162,11 +163,11 @@ int msSaveImageGDAL( mapObj *map, imageObj *image, const char *filenameIn )
162163
/* Identify the proposed output driver. */
163164
/* -------------------------------------------------------------------- */
164165
msAcquireLock( TLOCK_GDAL );
165-
hOutputDriver = GDALGetDriverByName( format->driver+5 );
166+
hOutputDriver = GDALGetDriverByName( gdal_driver_shortname );
166167
if( hOutputDriver == NULL ) {
167168
msReleaseLock( TLOCK_GDAL );
168169
msSetError( MS_MISCERR, "Failed to find %s driver.",
169-
"msSaveImageGDAL()", format->driver+5 );
170+
"msSaveImageGDAL()", gdal_driver_shortname );
170171
return MS_FAILURE;
171172
}
172173

@@ -182,8 +183,12 @@ int msSaveImageGDAL( mapObj *map, imageObj *image, const char *filenameIn )
182183
if( pszExtension == NULL )
183184
pszExtension = "img.tmp";
184185

185-
if( bUseXmp == MS_FALSE && GDALGetMetadataItem( hOutputDriver, GDAL_DCAP_VIRTUALIO, NULL )
186-
!= NULL ) {
186+
if( bUseXmp == MS_FALSE &&
187+
GDALGetMetadataItem( hOutputDriver, GDAL_DCAP_VIRTUALIO, NULL ) != NULL &&
188+
/* We need special testing here for the netCDF driver, since recent */
189+
/* GDAL versions advertize VirtualIO support, but this is only for the */
190+
/* read-side of the driver, not the write-side. */
191+
!EQUAL(gdal_driver_shortname, "netCDF") ) {
187192
msCleanVSIDir( "/vsimem/msout" );
188193
filenameToFree = msTmpFile(map, NULL, "/vsimem/msout/", pszExtension );
189194
}

0 commit comments

Comments
 (0)