[gdal-dev] Create copy without any bands
Tim Keitt
tkeitt at gmail.com
Sat Aug 21 13:32:41 EDT 2010
Oops. This would have to be made a non-member function so a different
driver could be specified.
THK
On Sat, Aug 21, 2010 at 7:24 PM, Tim Keitt <tkeitt at gmail.com> wrote:
> How about:
>
> /************************************************************************/
> /* ShallowCopy() */
> /************************************************************************/
>
> GDALDataset *GDALDriver::ShallowCopy( const char * pszFilename,
> GDALDataset * poSrcDS,
> GDALDataType etype, int nBands,
> int bStrict, char ** papszOptions,
> GDALProgressFunc pfnProgress )
>
> {
> if( pfnProgress == NULL )
> pfnProgress = GDALDummyProgress;
>
> /* -------------------------------------------------------------------- */
> /* Create destination dataset. */
> /* -------------------------------------------------------------------- */
> GDALDataset *poDstDS;
> int nXSize = poSrcDS->GetRasterXSize();
> int nYSize = poSrcDS->GetRasterYSize();
> CPLErr eErr;
>
> CPLDebug( "GDAL", "Using default GDALDriver::CreateCopy implementation." );
>
> if( !pfnProgress( 0.0, NULL, pProgressData ) )
> {
> CPLError( CE_Failure, CPLE_UserInterrupt, "User terminated" );
> return NULL;
> }
>
> poDstDS = Create( pszFilename, nXSize, nYSize, nBands, eType,
> papszOptions );
>
> if( poDstDS == NULL )
> return NULL;
>
> /* -------------------------------------------------------------------- */
> /* Try setting the projection and geotransform if it seems */
> /* suitable. For now we don't try and copy GCPs, though I */
> /* suppose we should. Also copy metadata. */
> /* -------------------------------------------------------------------- */
> double adfGeoTransform[6];
>
> if( poSrcDS->GetGeoTransform( adfGeoTransform ) == CE_None
> && (adfGeoTransform[0] != 0.0
> || adfGeoTransform[1] != 1.0
> || adfGeoTransform[2] != 0.0
> || adfGeoTransform[3] != 0.0
> || adfGeoTransform[4] != 0.0
> || adfGeoTransform[5] != 1.0) )
> {
> poDstDS->SetGeoTransform( adfGeoTransform );
> }
>
> if( poSrcDS->GetProjectionRef() != NULL
> && strlen(poSrcDS->GetProjectionRef()) > 0 )
> {
> poDstDS->SetProjection( poSrcDS->GetProjectionRef() );
> }
>
> poDstDS->SetMetadata( poSrcDS->GetMetadata() );
>
> return poDstDS;
> }
>
>
> On Sat, Aug 21, 2010 at 7:14 PM, Tim Keitt <tkeitt at gmail.com> wrote:
>> OK. I found the source. Yes, that is fairly straightforward to copy and modify.
>>
>> It seems making a copy without propagating the raster bands would be
>> very common operation. Would it make sense to introduce a new function
>> to GDAL? ShallowCopy?
>>
>> THK
>>
>> On Sat, Aug 21, 2010 at 7:05 PM, Tim Keitt <tkeitt at gmail.com> wrote:
>>> I noticed DefaultCreateCopy, but appears not to be documented. At
>>> least there is no click through link in the class reference. What does
>>> it do? How is it modified? In the driver code?
>>>
>>> THK
>>>
>>> On Sat, Aug 21, 2010 at 7:00 PM, Chaitanya kumar CH
>>> <chaitanya.ch at gmail.com> wrote:
>>>> Tim,
>>>>
>>>> You can create it easily by modifying GDALDriver::DefaultCreateCopy()
>>>>
>>>> On Sat, Aug 21, 2010 at 9:51 PM, Tim Keitt <tkeitt at gmail.com> wrote:
>>>>>
>>>>> I am writing a utility that takes a raster as input and outputs a
>>>>> raster with all attributes the same, except that I only want one
>>>>> output band and I want to specify its type independent of the data
>>>>> type in the input file. Is there a function that creates a copy of a
>>>>> dataset (or creates a virtual dataset), but does not copy any raster
>>>>> bands? This would really simplify things as all I would have to do is
>>>>> add a band to the output dataset of the desired type.
>>>>>
>>>>> THK
>>>>>
>>>>> --
>>>>> Timothy H. Keitt
>>>>> http://www.keittlab.org/
>>>>> _______________________________________________
>>>>> gdal-dev mailing list
>>>>> gdal-dev at lists.osgeo.org
>>>>> http://lists.osgeo.org/mailman/listinfo/gdal-dev
>>>>
>>>>
>>>>
>>>> --
>>>> Best regards,
>>>> Chaitanya kumar CH.
>>>> /tʃaɪθənjə/ /kʊmɑr/
>>>> +91-9494447584
>>>> 17.2416N 80.1426E
>>>>
>>>
>>>
>>>
>>> --
>>> Timothy H. Keitt
>>> http://www.keittlab.org/
>>>
>>
>>
>>
>> --
>> Timothy H. Keitt
>> http://www.keittlab.org/
>>
>
>
>
> --
> Timothy H. Keitt
> http://www.keittlab.org/
>
--
Timothy H. Keitt
http://www.keittlab.org/
More information about the gdal-dev
mailing list