Statistics
| Revision:

svn-gvsig-desktop / tags / v1_1_2_Build_1045 / libraries / libjni-gdal / src-test / example.java @ 32257

History | View | Annotate | Download (7.64 KB)

1 716 igbrotru
/**********************************************************************
2
 * $Id$
3
 *
4
 * Name:     example.java
5
 * Project:  JGDAL. Interface java to gdal (Frank Warmerdam).
6
 * Purpose:  Example code to test java interface of gdal.
7
 * Author:   Nacho Brodin, brodin_ign@gva.es
8
 *
9
 **********************************************************************/
10 2210 igbrotru
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
11
*
12
* Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
13
*
14
* This program is free software; you can redistribute it and/or
15
* modify it under the terms of the GNU General Public License
16
* as published by the Free Software Foundation; either version 2
17
* of the License, or (at your option) any later version.
18
*
19
* This program is distributed in the hope that it will be useful,
20
* but WITHOUT ANY WARRANTY; without even the implied warranty of
21
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22
* GNU General Public License for more details.
23
*
24
* You should have received a copy of the GNU General Public License
25
* along with this program; if not, write to the Free Software
26
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
27
*
28
* For more information, contact:
29
*
30
*  Generalitat Valenciana
31
*   Conselleria d'Infraestructures i Transport
32
*   Av. Blasco Ib??ez, 50
33
*   46010 VALENCIA
34
*   SPAIN
35
*
36
*      +34 963862235
37
*   gvsig@gva.es
38
*      www.gvsig.gva.es
39
*
40
*    or
41
*
42
*   IVER T.I. S.A
43
*   Salamanca 50
44
*   46005 Valencia
45
*   Spain
46
*
47
*   +34 963163400
48
*   dac@iver.es
49
*/
50 716 igbrotru
51
52
53
/**
54
 * Sections that correspond with GDAL Api Tutorial (publicated in
55
 * http://www.remotesensing.org:16080/gdal/gdal_tutorial.html) have
56
 * been marked.
57
 */
58
59
//Opening the file ----------------------------
60
61 5867 nacho
import java.io.BufferedOutputStream;
62
import java.io.DataOutputStream;
63
import java.io.File;
64
import java.io.FileOutputStream;
65
import java.io.IOException;
66 829 igbrotru
67 5867 nacho
import es.gva.cit.jgdal.Gdal;
68
import es.gva.cit.jgdal.GdalBuffer;
69 7847 nacho
import es.gva.cit.jgdal.GdalColorEntry;
70
import es.gva.cit.jgdal.GdalColorTable;
71 5867 nacho
import es.gva.cit.jgdal.GdalException;
72
import es.gva.cit.jgdal.GdalRasterBand;
73
import es.gva.cit.jgdal.GeoTransform;
74 716 igbrotru
75
public class example{
76
        public static void main(String[] args){
77
78
79
          Gdal migdal=new Gdal();
80
81
          try{
82
            if(args.length>0)
83
                    migdal.open(args[0],Gdal.GA_ReadOnly);
84
            else {
85
                    System.out.println("You must introduce the file name");
86
                    System.exit(1);
87
            }
88
          }catch(Exception ge){
89
                        ge.printStackTrace();
90
                        //...........
91
          }
92
93
//End Opening the file ----------------------------
94
95
96
          GdalRasterBand mirasterband=null;
97
          GdalRasterBand mioverview=null;
98
99
          FileOutputStream s=null;
100
          DataOutputStream midataOS=null;
101
          BufferedOutputStream miBS=null;
102
          String st;
103
          int nxsize=0;
104
          int nysize=0;
105
          int rastercount=0;
106
          String rasterband;
107
          int xoverview=0;
108
          int yoverview=0;
109
          GeoTransform gt;
110
          int noverviews=0;
111
112
//Getting dataset Information ----------------------------
113
114
          try{
115
                  rastercount=migdal.getRasterCount();
116
            nxsize = migdal.getRasterXSize();
117
            nysize = migdal.getRasterYSize();
118
            System.out.println("N BANDAS="+rastercount+" SIZEX="+nxsize+" SIZEY="+nysize);
119
            System.out.println(migdal.getProjectionRef());
120
          }catch(GdalException ge){
121
                                                          ge.printStackTrace();
122
                                                          //...........
123
                                                     }
124
125
126
127
          try{
128
                  gt=migdal.getGeoTransform();
129
                  System.out.println("Origin = ("+gt.adfgeotransform[0]+","+gt.adfgeotransform[3]+")");
130
                  System.out.println("Pixel Size = ("+gt.adfgeotransform[1]+","+gt.adfgeotransform[5]+")");
131
          }catch(GdalException e){
132
                          System.out.println("I can't obtain the array geoTransform for this image");
133
                        e.printStackTrace();
134
                        //...........
135
          }
136
137
//End Getting dataset Information ----------------------------
138
139
          try{
140 5844 nacho
               File mifichero = new File("exit.raw");
141 716 igbrotru
               s = new FileOutputStream(mifichero);
142
          }catch(Exception e){}
143
144
145
          for(int iBand=0;iBand<rastercount;iBand++){
146
147
                  System.out.println("-------");
148
149
                  //Informacion de banda
150
151
152
//Fetching a Raster Band ----------------------------
153
//Several binding are missing yet
154
155 825 igbrotru
                  int tipo=0;
156 716 igbrotru
                  try{
157 5844 nacho
                          mirasterband = migdal.getRasterBand(iBand+1);
158 7847 nacho
                          System.out.println("Band Size: ("+mirasterband.getRasterBandXSize()+","+mirasterband.getRasterBandYSize()+")");
159
                          System.out.println("Block Size: ("+mirasterband.getBlockXSize()+","+mirasterband.getBlockYSize()+")");
160 5844 nacho
                          noverviews = mirasterband.getOverviewCount();
161 7847 nacho
                          System.out.println("Number of Overview: "+noverviews);
162 823 igbrotru
                          tipo = mirasterband.getRasterDataType();
163 7847 nacho
                          System.out.println("Band data type: "+tipo);
164 5844 nacho
                          double noData = mirasterband.getRasterNoDataValue();
165 5866 nacho
                          if(noData >= 0)
166 7847 nacho
                                  System.out.println("NoData="+noData);
167 5866 nacho
                          String[] metadata = mirasterband.getMetadata();
168
                    if(metadata.length > 0){
169
                            System.out.println("-METADATA-");
170
                            for(int i=0;i<metadata.length;i++)
171
                                    System.out.println(metadata[i]);
172
                    }
173 7847 nacho
174
                    //Palette
175
                    String colorInt = migdal.getColorInterpretationName(mirasterband.getRasterColorInterpretation());
176
                    System.out.println("ColorInterpretation: "+colorInt);
177
                    if(colorInt.equals("Palette")){
178
                            GdalColorTable table = mirasterband.getRasterColorTable();
179
                            System.out.println("Number of entries: "+table.getColorEntryCount());
180
                            for(int nEntry = 0; nEntry < table.getColorEntryCount(); nEntry++ ){
181
                                GdalColorEntry        sEntry;
182
                                sEntry = table.getColorEntryAsRGB(nEntry);
183
                                System.out.println(
184
                                                nEntry + " (" +
185
                                        sEntry.c1 + ", " +
186
                                        sEntry.c2 + ", " +
187
                                        sEntry.c3 + ", " +
188
                                        sEntry.c4  + ")");
189
                        }
190
191
                    }
192
193 716 igbrotru
                  }catch(GdalException e){
194
                          e.printStackTrace();
195
                          System.exit(1);
196
                  }
197
198
//Fetching a Raster Band ----------------------------
199 7847 nacho
200 716 igbrotru
                  System.out.println("BANDA->"+iBand);
201
202
                  //Informaci?n de overview
203
204
                  try{
205
206
                          if(noverviews>0){
207
208
                                  //Muestra el tama?o de cada overview y selecccionamos el 0
209
210
                                  for(int t=0;t<noverviews;t++){
211
                                          mioverview=mirasterband.getOverview(t);
212
                                          System.out.println("SIZE OVERVIEW=("+mioverview.getRasterBandXSize()+","+mioverview.getRasterBandYSize()+")");
213
                                  }
214
                                  mioverview=mirasterband.getOverview(0);
215
                                  xoverview=mioverview.getRasterBandXSize();
216
                                  yoverview=mioverview.getRasterBandYSize();
217
                          }else{
218
                                  System.out.println("This band haven't overviews");
219
                                  xoverview=nxsize;
220
                                yoverview=nysize;
221
                                mioverview=mirasterband;
222
223
                          }
224
225
                  }catch(GdalException e){
226
                          e.printStackTrace();
227
                          System.exit(1);
228
                  }
229
230
231
232
233
234 3540 nacho
235 716 igbrotru
236 826 igbrotru
                //byte[] buf=null;
237
                GdalBuffer buf=null;
238 716 igbrotru
239
                  for(int i=0; i<yoverview; i++){
240
241
//Reading Raster Data ----------------------------
242
243
                          try{
244 823 igbrotru
                                  buf = mioverview.readRaster(0, i, xoverview, 1, xoverview, 1, tipo);
245 716 igbrotru
                          }catch(GdalException e){
246
                                  System.out.println("Error in BSBReadLine");
247
                                  System.exit(1);
248
                          }
249
250
//End Reading Raster Data ----------------------------
251
252 3540 nacho
                          try{
253 829 igbrotru
                                  if(tipo==Gdal.GDT_Byte)s.write(buf.buffByte);
254 716 igbrotru
                          }catch(IOException e){
255
                                  System.out.println("Error writing a line in the file\n");
256
                                  System.exit(1);
257 3540 nacho
                          }
258 716 igbrotru
259
                  }
260
261
        }
262
263
264
265
          try{
266 5866 nacho
            String[] metadata = migdal.getMetadata();
267
            if(metadata.length > 0){
268
                    System.out.println("-METADATA-");
269
                    System.out.println("Number of values:"+metadata.length);
270
                    for(int i=0;i<metadata.length;i++)
271
                            System.out.println(metadata[i]);
272 5844 nacho
            }
273 716 igbrotru
            migdal.close();
274
          }catch(GdalException e){
275
                                                                  e.printStackTrace();
276
                                                           }
277
278
279
        }
280
}