Ticket #1672: generate_nans.cpp

File generate_nans.cpp, 2.2 kB (added by rouault, 6 months ago)

Code to generate files with Nans

Line 
1
2 #include "gdal.h"
3 #include "cpl_conv.h"
4
5 void nans32()
6 {
7
8     GDALDriverH hDriver = GDALGetDriverByName( "GTiff" );
9    
10     int nXSize = 10000;
11     int nYSize = 10000;
12     GDALDatasetH hOutDS = GDALCreate( hDriver, "nans_32.tif",
13                             nXSize, nYSize, 1, GDT_Float32,
14                             NULL );
15     if( hOutDS == NULL )
16         exit( 1 );
17
18     GDALRasterBandH hBand = GDALGetRasterBand(hOutDS, 1);
19    
20     float* data = (float*)CPLMalloc(nXSize * sizeof(float));
21     int i;
22     double inf = 1. / 0.;
23     for(i=0;i<nXSize;i++)
24         data[i] = 50 + i;
25     data[nXSize-1] = inf / inf;
26
27     int iLine;
28     for(iLine=0;iLine<nYSize;iLine++)
29     {
30         GDALDatasetRasterIO( hOutDS, GF_Write, 0, iLine, nXSize, 1,
31                                     data, nXSize, 1, GDT_Float32,
32                                     1, NULL, 0, 0, 0 );
33
34     }
35
36     CPLFree(data);
37     GDALClose( hOutDS );
38 }
39
40 void nans64()
41 {
42
43     GDALDriverH hDriver = GDALGetDriverByName( "GTiff" );
44    
45     int nXSize = 10000;
46     int nYSize = 5000;
47     GDALDatasetH hOutDS = GDALCreate( hDriver, "nans_64.tif",
48                             nXSize, nYSize, 1, GDT_Float64,
49                             NULL );
50     if( hOutDS == NULL )
51         exit( 1 );
52
53     GDALRasterBandH hBand = GDALGetRasterBand(hOutDS, 1);
54    
55     double* data = (double*)CPLMalloc(nXSize * sizeof(double));
56     int i;
57     double inf = 1. / 0.;
58     for(i=0;i<nXSize;i++)
59         data[i] = 50 + i;
60     data[nXSize-1] = inf / inf;
61
62     int iLine;
63     for(iLine=0;iLine<nYSize;iLine++)
64     {
65         GDALDatasetRasterIO( hOutDS, GF_Write, 0, iLine, nXSize, 1,
66                                     data, nXSize, 1, GDT_Float64,
67                                     1, NULL, 0, 0, 0 );
68
69     }
70
71     CPLFree(data);
72     GDALClose( hOutDS );
73 }
74
75 /************************************************************************/
76 /*                                main()                                */
77 /************************************************************************/
78
79 int main( int argc, char ** argv )
80
81 {
82     GDALAllRegister();
83     GDALSetCacheMax( 100000000 );
84     argc = GDALGeneralCmdLineProcessor( argc, &argv, 0 );
85
86     GDALDumpOpenDatasets( stderr );
87     GDALDestroyDriverManager();
88 }