Revision 4354

View differences:

org.gvsig.raster.gdal/tags/org.gvsig.raster.gdal-2.2.21/org.gvsig.raster.gdal.io/src/main/resources/META-INF/services/org.gvsig.tools.library.Library
1
org.gvsig.raster.gdal.io.DefaultGdalIOLibrary
org.gvsig.raster.gdal/tags/org.gvsig.raster.gdal-2.2.21/org.gvsig.raster.gdal.io/src/main/java/org/gvsig/raster/gdal/overview/GdalOverviewBuilder.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.gdal.overview;
23

  
24
import org.gvsig.addo.BuildingOverviewsException;
25
import org.gvsig.addo.IOverviewIncrement;
26
import org.gvsig.addo.Jaddo;
27
import org.gvsig.addo.WritingException;
28
import org.gvsig.fmap.dal.coverage.exception.OverviewException;
29
import org.gvsig.fmap.dal.coverage.process.BaseIncrementableTask;
30
import org.gvsig.fmap.dal.coverage.process.overview.OverviewBuilder;
31

  
32
/**
33
 * Servicios ofrecidos por el proceso de construcci?n de overviews. Esta
34
 * implementaci?n usa gdal para construir las overviews.
35
 * 
36
 * @author Nacho Brodin (nachobrodin@gmail.com)
37
 */
38
public class GdalOverviewBuilder implements OverviewBuilder {
39
	private Jaddo        build         = new Jaddo();
40
	private int          value         = 0;
41

  
42
	/**
43
	 * Bindings between an IOverviewIncrement and a BaseIncrementableTask
44
	 * @author Nacho Brodin (nachobrodin@gmail.com)
45
	 */
46
	class ProcessBinding implements IOverviewIncrement {
47
		private BaseIncrementableTask  task = null;
48
		
49
		public ProcessBinding(BaseIncrementableTask task) {
50
			this.task = task;	
51
		}
52
		
53
		public int getPercent() {
54
			return task.getPercent();
55
		}
56

  
57
		public void setPercent(int value) {
58
			task.setPercent(value);
59
		}
60
	}
61
	
62
	/*
63
	 * (non-Javadoc)
64
	 * @see org.gvsig.fmap.dal.coverage.process.overview.OverviewBuilder#buildOverviews(int, java.lang.String, int[])
65
	 */
66
	public void buildOverviews(int resamplingAlg, String file, int[] overviews)
67
			throws OverviewException {
68
		try {
69
			build.buildOverviews(resamplingAlg, file, overviews);
70
		} catch (BuildingOverviewsException e) {
71
			throw new OverviewException("Error building overviews", e);
72
		} catch (WritingException e) {
73
			throw new OverviewException("Error writing overviews", e);
74
		}
75
	}
76

  
77
	/*
78
	 * (non-Javadoc)
79
	 * @see org.gvsig.fmap.dal.coverage.process.overview.OverviewBuilder#getPercent()
80
	 */
81
	public int getPercent() {
82
		return value;
83
	}
84

  
85
	/*
86
	 * (non-Javadoc)
87
	 * @see org.gvsig.fmap.dal.coverage.process.overview.OverviewBuilder#setIncrementListener(org.gvsig.addo.IOverviewIncrement)
88
	 */
89
	public void setIncrementListener(BaseIncrementableTask incr) {
90
		build.setIncrementListener(new ProcessBinding(incr));
91
	}
92

  
93
	/*
94
	 * (non-Javadoc)
95
	 * @see org.gvsig.fmap.dal.coverage.process.overview.OverviewBuilder#setPercent(int)
96
	 */
97
	public void setPercent(int value) {
98
		this.value = value;
99
	}
100
}
0 101

  
org.gvsig.raster.gdal/tags/org.gvsig.raster.gdal-2.2.21/org.gvsig.raster.gdal.io/src/main/java/org/gvsig/raster/gdal/io/features/PAuxFeatures.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.gdal.io.features;
23

  
24
import org.gvsig.raster.gdal.io.GdalProvider;
25
import org.gvsig.raster.gdal.io.GdalWriter;
26
import org.gvsig.raster.impl.store.WriteFileFormatFeatures;
27
/**
28
 * Caracteristicas del formato PAux para escritura.
29
 * Soporta tipo de datos enteros de 8 y 16 bits y reales de 32 bits.
30
 * La georreferenciaci?n y la proyecci?n son ignoradas.
31
 * 
32
 * @version 04/06/2007
33
 * @author Nacho Brodin (nachobrodin@gmail.com)
34
 */
35
public class PAuxFeatures extends WriteFileFormatFeatures {
36

  
37
	public PAuxFeatures() {
38
		super(GdalProvider.FORMAT_PAUX, "aux", new int[] { 3 }, null, GdalWriter.class);
39
	}
40

  
41
	/**
42
	 * Carga los par?metros de este driver.
43
	 */
44
	public void loadParams() {
45
		super.loadParams();
46
	}
47
}
0 48

  
org.gvsig.raster.gdal/tags/org.gvsig.raster.gdal-2.2.21/org.gvsig.raster.gdal.io/src/main/java/org/gvsig/raster/gdal/io/features/PNM_PgmFeatures.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.gdal.io.features;
23

  
24
import org.gvsig.fmap.dal.coverage.datastruct.Params;
25
import org.gvsig.raster.gdal.io.GdalProvider;
26
import org.gvsig.raster.gdal.io.GdalWriter;
27
import org.gvsig.raster.impl.store.WriteFileFormatFeatures;
28
/**
29
 * Caracteristicas del formato PNM para escritura.
30
 * Esta clase soporta solo ficheros pgm. Estos son solo los PNM en 
31
 * escala de grises
32
 * 
33
 * @version 04/06/2007
34
 * @author Nacho Brodin (nachobrodin@gmail.com)
35
 */
36
public class PNM_PgmFeatures extends WriteFileFormatFeatures {
37

  
38
	public PNM_PgmFeatures() {
39
		super(GdalProvider.FORMAT_PNM, "pgm", new int[] { 1 }, null, GdalWriter.class);
40
	}
41

  
42
	/**
43
	 * Carga los par?metros de este driver.
44
	 */
45
	public void loadParams() {
46
		super.loadParams();
47

  
48
		driverParams.setParam("tfw", new Boolean("true"), Params.CHECK, null);
49
	}
50
}
0 51

  
org.gvsig.raster.gdal/tags/org.gvsig.raster.gdal-2.2.21/org.gvsig.raster.gdal.io/src/main/java/org/gvsig/raster/gdal/io/features/BMPFeatures.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.gdal.io.features;
23

  
24
import org.gvsig.fmap.dal.coverage.datastruct.Params;
25
import org.gvsig.raster.gdal.io.GdalProvider;
26
import org.gvsig.raster.gdal.io.GdalWriter;
27
import org.gvsig.raster.impl.store.WriteFileFormatFeatures;
28
/**
29
 * Caracteristicas del formato BMP para escritura.
30
 * Soporta escritura de imagenes 1 banda (monocromo) o 3 (RGB) en 8 bits. 
31
 * La georreferenciaci?n puede hacerse mediante un fichero .wld.
32
 * 
33
 * @version 04/06/2007
34
 * @author Nacho Brodin (nachobrodin@gmail.com)
35
 */
36
public class BMPFeatures extends WriteFileFormatFeatures {
37

  
38
	public BMPFeatures() {
39
		super(GdalProvider.FORMAT_BMP, "bmp", new int[] { 3 }, null, GdalWriter.class);
40
	}
41

  
42
	/**
43
	 * Carga los par?metros de este driver.
44
	 */
45
	public void loadParams() {
46
		super.loadParams();
47
		driverParams.setParam("tfw", new Boolean("true"), Params.CHECK, null);
48
	}
49
}
0 50

  
org.gvsig.raster.gdal/tags/org.gvsig.raster.gdal-2.2.21/org.gvsig.raster.gdal.io/src/main/java/org/gvsig/raster/gdal/io/features/HFAFeatures.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.gdal.io.features;
23

  
24
import org.gvsig.fmap.dal.coverage.datastruct.Params;
25
import org.gvsig.raster.gdal.io.GdalProvider;
26
import org.gvsig.raster.gdal.io.GdalWriter;
27
import org.gvsig.raster.impl.store.WriteFileFormatFeatures;
28
/**
29
 * Caracteristicas del formato HFA (.img) de Erdas para escritura.
30
 * Soporta enteros de 8, 16 y 32 bits y datos en coma flotante de 32 y 64 bits
31
 * con cualquier n?mero de bandas.
32
 * 
33
 * @version 04/06/2007
34
 * @author Nacho Brodin (nachobrodin@gmail.com)
35
 */
36
 //TODO: Mirar si se pueden generar con piramides
37
public class HFAFeatures extends WriteFileFormatFeatures {
38
	
39
	public HFAFeatures() {
40
		super(GdalProvider.FORMAT_HFA, "img", new int[] { -1 }, new int[] { 0, 1, 2, 3, 4, 5 }, GdalWriter.class);
41
	}
42
	
43
	/**
44
	 * Carga los par?metros de este driver.
45
	 */
46
	public void loadParams() {
47
		super.loadParams();
48

  
49
		driverParams.setParam("rrd", 
50
				new Integer(1), 
51
				Params.CHOICE, 
52
				new String[]{ "YES", "NO"});
53

  
54
		driverParams.setParam("compress", 
55
				new Integer(1), 
56
				Params.CHOICE, 
57
				new String[]{"YES", "NO"});
58
	}
59
}
0 60

  
org.gvsig.raster.gdal/tags/org.gvsig.raster.gdal-2.2.21/org.gvsig.raster.gdal.io/src/main/java/org/gvsig/raster/gdal/io/features/GTiffFeatures.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.gdal.io.features;
23

  
24
import org.gvsig.fmap.dal.coverage.datastruct.Params;
25
import org.gvsig.raster.gdal.io.GdalProvider;
26
import org.gvsig.raster.gdal.io.GdalWriter;
27
import org.gvsig.raster.impl.store.WriteFileFormatFeatures;
28

  
29
/**
30
 * Caracteristicas del formato GeoTiff para escritura.
31
 * 
32
 * @version 04/06/2007
33
 * @author Nacho Brodin (nachobrodin@gmail.com)
34
 */
35
public class GTiffFeatures extends WriteFileFormatFeatures {
36

  
37
	public GTiffFeatures() {
38
		super(GdalProvider.FORMAT_GTiff, "tif", new int[] { -1 }, new int[] { 0, 1, 2, 3, 4, 5 }, GdalWriter.class);
39
	}
40

  
41
	/**
42
	 * Carga los par?metros de este driver.
43
	 */
44
	public void loadParams() {
45
		super.loadParams();
46
		driverParams.setParam(
47
				"photometric", 
48
				new Integer(3), 
49
				Params.CHOICE, 
50
				new String[]{"YCBR", "MINISBLACK", "MINISWHITE", "RGB", "CMYK", "CIELAB", "ICCLAB", "ITULAB", "CBCR"});
51
		driverParams.setParam(
52
				"interleave", 
53
				new Integer(0), 
54
				Params.CHOICE, 
55
				new String[]{ "BAND", "PIXEL"});
56
		driverParams.setParam(
57
				"compression", 
58
				new Integer(3),
59
				Params.CHOICE, 
60
				new String[]{"LZW", "PACKBITS", "DEFLATE", "NONE"});
61
		driverParams.setParam("tfw", new Boolean("false"), Params.CHECK, null);
62
	}
63
}
0 64

  
org.gvsig.raster.gdal/tags/org.gvsig.raster.gdal-2.2.21/org.gvsig.raster.gdal.io/src/main/java/org/gvsig/raster/gdal/io/features/IDRISIFeatures.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.gdal.io.features;
23

  
24
import org.gvsig.raster.gdal.io.GdalProvider;
25
import org.gvsig.raster.gdal.io.GdalWriter;
26
import org.gvsig.raster.impl.store.WriteFileFormatFeatures;
27
/**
28
 * Caracteristicas del formato RST de IDRISI para escritura.
29
 * Soporta tipos de datos enteros en 8, 16 y 32 bits y coma flotante en 32 bits
30
 * Genera un fichero RDC con la descripci?n de la imagen
31
 * 
32
 * @version 04/06/2007
33
 * @author Nacho Brodin (nachobrodin@gmail.com)
34
 */
35
public class IDRISIFeatures extends WriteFileFormatFeatures {
36
	
37
	public IDRISIFeatures() {
38
		super(GdalProvider.FORMAT_RST, "rst", new int[] { -1 }, new int[] { 0, 1, 2, 3, 4 }, GdalWriter.class);
39
	}
40

  
41
	/**
42
	 * Carga los par?metros de este driver.
43
	 */
44
	public void loadParams() {
45
		super.loadParams();
46
	}
47
}
0 48

  
org.gvsig.raster.gdal/tags/org.gvsig.raster.gdal-2.2.21/org.gvsig.raster.gdal.io/src/main/java/org/gvsig/raster/gdal/io/features/PngFeatures.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.gdal.io.features;
23

  
24
import org.gvsig.raster.gdal.io.PngWriter;
25
import org.gvsig.raster.impl.store.WriteFileFormatFeatures;
26
/**
27
 * Caracteristicas del formato Png para escritura.
28
 * La georreferenciaci?n puede hacerse mediante un fichero .wld.
29
 * 
30
 * @version 14/12/2007
31
 * @author Nacho Brodin (nachobrodin@gmail.com)
32
 */
33
public class PngFeatures extends WriteFileFormatFeatures {
34

  
35
	public PngFeatures() {
36
		super("Png", "png", new int[] { 4 }, null, PngWriter.class);
37
	}
38

  
39
	/**
40
	 * Carga los par?metros de este driver.
41
	 */
42
	public void loadParams() {
43
		super.loadParams();
44
	}
45
}
0 46

  
org.gvsig.raster.gdal/tags/org.gvsig.raster.gdal-2.2.21/org.gvsig.raster.gdal.io/src/main/java/org/gvsig/raster/gdal/io/features/RMFFeatures.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.gdal.io.features;
23

  
24
import org.gvsig.fmap.dal.coverage.datastruct.Params;
25
import org.gvsig.raster.gdal.io.GdalProvider;
26
import org.gvsig.raster.gdal.io.GdalWriter;
27
import org.gvsig.raster.impl.store.WriteFileFormatFeatures;
28
/**
29
 * Caracteristicas del formato Raster Matrix Format 
30
 * Soporta tipos de datos enteros en 16 bits y coma flotante en 64 bits.
31
 * ?Ojo! en la documentaci?n de gdal pone 32 bits en flotante pero no se lo traga.
32
 * 
33
 * @version 04/06/2007
34
 * @author Nacho Brodin (nachobrodin@gmail.com)
35
 */
36
public class RMFFeatures extends WriteFileFormatFeatures {
37
	
38
	public RMFFeatures() {
39
		super(GdalProvider.FORMAT_RMF, "rmf", new int[]{-1}, new int[]{0, 1, 3, 5}, GdalWriter.class);
40
	}
41
	
42
	/**
43
	 * Carga los par?metros de este driver.
44
	 */
45
	public void loadParams() {
46
		super.loadParams();
47
		
48
		driverParams.setParam("Mtw", 
49
			new Integer(1), 
50
			Params.CHOICE, 
51
			new String[]{"ON", "OFF"});
52
		driverParams.setParam("Tile Width", 
53
			new Integer(3), 
54
			Params.CHOICE, 
55
			new String[]{"32", "64", "128", "256", "512"});
56
		driverParams.setParam("Tile Height", 
57
			new Integer(3),  
58
			Params.CHOICE, 
59
			new String[]{"32", "64", "128", "256", "512"});
60
	}
61
}
0 62

  
org.gvsig.raster.gdal/tags/org.gvsig.raster.gdal-2.2.21/org.gvsig.raster.gdal.io/src/main/java/org/gvsig/raster/gdal/io/features/ILWIS_MprFeatures.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.gdal.io.features;
23

  
24
import org.gvsig.raster.gdal.io.GdalProvider;
25
import org.gvsig.raster.gdal.io.GdalWriter;
26
import org.gvsig.raster.impl.store.WriteFileFormatFeatures;
27
/**
28
 * Caracteristicas del formato ILWIS para escritura.
29
 * Soporta tipos de datos enteros en 8, 16 y 32 bits y coma flotante en 32 y 64 bits
30
 * Genera un fichero .mpl con la informaci?n de contenido (ficheros), un fichero .grf con la
31
 * georreferenciaci?n, y dos ficheros por banda. Un .mpr con la informaci?n referente a los
32
 * datos de la banda y un .mp# con los datos de la banda
33
 * 
34
 * @version 04/06/2007
35
 * @author Nacho Brodin (nachobrodin@gmail.com)
36
 */
37
public class ILWIS_MprFeatures extends WriteFileFormatFeatures {
38

  
39
	public ILWIS_MprFeatures() {
40
		super(GdalProvider.FORMAT_ILWIS, "mpl", new int[] { -1 }, new int[] { 0, 1, 2, 3, 4, 5 }, GdalWriter.class);
41
	}
42

  
43
	/**
44
	 * Carga los par?metros de este driver.
45
	 */
46
	public void loadParams() {
47
		super.loadParams();
48
	}
49
}
0 50

  
org.gvsig.raster.gdal/tags/org.gvsig.raster.gdal-2.2.21/org.gvsig.raster.gdal.io/src/main/java/org/gvsig/raster/gdal/io/features/JpegFeatures.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.gdal.io.features;
23

  
24
import org.gvsig.fmap.dal.coverage.datastruct.Params;
25
import org.gvsig.raster.gdal.io.JpegWriter;
26
import org.gvsig.raster.impl.store.WriteFileFormatFeatures;
27
/**
28
 * Caracteristicas del formato Jpeg para escritura.
29
 * Soporta escritura de imagenes 1 banda (monocromo) o 3 (RGB) en 8 bits. 
30
 * La georreferenciaci?n puede hacerse mediante un fichero .wld.
31
 * 
32
 * @version 04/06/2007
33
 * @author Nacho Brodin (nachobrodin@gmail.com)
34
 *
35
 */
36
public class JpegFeatures extends WriteFileFormatFeatures {
37
	
38
	public JpegFeatures() {
39
		super("Jpeg", "jpg", new int[]{3}, null, JpegWriter.class);
40
	}
41
	
42
	/**
43
	 * Carga los par?metros de este driver.
44
	 */
45
	public void loadParams() {
46
		super.loadParams();
47
		
48
		driverParams.setParam("quality",
49
				new Integer(16),
50
				Params.SLIDER,
51
				new String[]{ "10", "100", "16", "5", "30"}); //min, max, valor defecto, intervalo peque?o, intervalo grande;
52

  
53
		driverParams.setParam("progressive", 
54
				new Boolean("false"), 
55
				Params.CHECK, 
56
				null);
57
	}
58
}
0 59

  
org.gvsig.raster.gdal/tags/org.gvsig.raster.gdal-2.2.21/org.gvsig.raster.gdal.io/src/main/java/org/gvsig/raster/gdal/io/features/PNM_PpmFeatures.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.gdal.io.features;
23

  
24
import org.gvsig.fmap.dal.coverage.datastruct.Params;
25
import org.gvsig.raster.gdal.io.GdalProvider;
26
import org.gvsig.raster.gdal.io.GdalWriter;
27
import org.gvsig.raster.impl.store.WriteFileFormatFeatures;
28
/**
29
 * Caracteristicas del formato PNM para escritura.
30
 * Esta clase soporta solo ficheros ppm. Estos son solo los PNM en
31
 * RGB
32
 * 
33
 * @version 04/06/2007
34
 * @author Nacho Brodin (nachobrodin@gmail.com)
35
 */
36
public class PNM_PpmFeatures extends WriteFileFormatFeatures {
37

  
38
	public PNM_PpmFeatures() {
39
		super(GdalProvider.FORMAT_PNM, "pgm", new int[] { 3 }, null, GdalWriter.class);
40
	}
41

  
42
	/**
43
	 * Carga los par?metros de este driver.
44
	 */
45
	public void loadParams() {
46
		super.loadParams();
47

  
48
		driverParams.setParam("tfw", new Boolean("true"), Params.CHECK, null);
49
	}
50
}
0 51

  
org.gvsig.raster.gdal/tags/org.gvsig.raster.gdal-2.2.21/org.gvsig.raster.gdal.io/src/main/java/org/gvsig/raster/gdal/io/features/Jpeg2000Features.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.gdal.io.features;
23

  
24
import org.gvsig.fmap.dal.coverage.datastruct.Params;
25
import org.gvsig.raster.gdal.io.GdalProvider;
26
import org.gvsig.raster.gdal.io.GdalWriter;
27
import org.gvsig.raster.impl.store.WriteFileFormatFeatures;
28
/**
29
 * Caracteristicas del formato Jpeg2000 para escritura.
30
 * Soporta escritura de imagenes 1 banda (monocromo) o 3 (RGB) en 8 bits. 
31
 * La georreferenciaci?n puede hacerse mediante un fichero .wld.
32
 * 
33
 * @version 26/08/2013
34
 * @author Nacho Brodin (nachobrodin@gmail.com)
35
 *
36
 */
37
public class Jpeg2000Features extends WriteFileFormatFeatures {
38
	
39
	public Jpeg2000Features() {
40
		super(GdalProvider.FORMAT_JP2, "jp2", new int[]{3}, null, GdalWriter.class);
41
	}
42
	
43
	/**
44
	 * Carga los par?metros de este driver.
45
	 */
46
	public void loadParams() {
47
		super.loadParams();
48
		
49
		driverParams.setParam("quality",
50
				new Integer(16),
51
				Params.SLIDER,
52
				new String[]{ "10", "100", "16", "5", "30"}); //min, max, valor defecto, intervalo peque?o, intervalo grande;
53

  
54
		driverParams.setParam("progressive", 
55
				new Boolean("false"), 
56
				Params.CHECK, 
57
				null);
58
	}
59
}
0 60

  
org.gvsig.raster.gdal/tags/org.gvsig.raster.gdal-2.2.21/org.gvsig.raster.gdal.io/src/main/java/org/gvsig/raster/gdal/io/PngWriter.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.gdal.io;
23

  
24
import java.awt.geom.AffineTransform;
25
import java.io.File;
26
import java.io.IOException;
27

  
28
import org.cresques.cts.IProjection;
29
import org.gvsig.fmap.dal.coverage.RasterLocator;
30
import org.gvsig.fmap.dal.coverage.datastruct.Params;
31
import org.gvsig.fmap.dal.coverage.exception.ProcessInterruptedException;
32
import org.gvsig.fmap.dal.coverage.store.DataServerWriter;
33
import org.gvsig.jgdal.GdalDataset;
34
import org.gvsig.jgdal.GdalDriver;
35
import org.gvsig.jgdal.GdalException;
36
import org.gvsig.raster.gdal.io.features.PngFeatures;
37
import org.gvsig.raster.impl.store.WriteFileFormatFeatures;
38
import org.gvsig.raster.impl.store.writer.DefaultRasterWriter;
39
import org.gvsig.raster.util.DefaultProviderServices;
40
import org.gvsig.tools.ToolsLocator;
41
import org.gvsig.tools.extensionpoint.ExtensionPoint;
42
import org.gvsig.tools.extensionpoint.ExtensionPointManager;
43
/**
44
 * Driver para la escritura de Png.
45
 * Este driver utiliza GdalWriter para salvar Png.
46
 * La escritura de un png no es posible utilizando un servidor de datos
47
 * como el que usan los drivers comunes por lo que ser? necesario salvar antes
48
 * a Tif con el driver de Gdal para posteriormente convertir la imagen completa
49
 * a png. El problema que tiene es el mismo del jpg y es que el dataset solo soporta la
50
 * escritura rw y no rw+.
51
 *
52
 * @version 22/07/2008
53
 * @author Nacho Brodin (nachobrodin@gmail.com)
54
 */
55
public class PngWriter extends DefaultRasterWriter {
56

  
57
	// Datos de registro de drivers
58
	public static void register() {
59
		DefaultProviderServices pInfo = (DefaultProviderServices)RasterLocator.getManager().getProviderServices();
60
		ExtensionPointManager extensionPoints =ToolsLocator.getExtensionPointManager();
61
		ExtensionPoint point=extensionPoints.get("RasterWriter");
62
		point.append("png", "", PngWriter.class);
63
		pInfo.getFileFeature().put("png", new PngFeatures());
64
	}
65

  
66
	private GdalWriter gdalWriter = null;
67
	private String     outTif     = null;
68
	private String     outPng     = null;
69

  
70
	/**
71
	 * Carga los par?metros de este driver.
72
	 */
73
	public void loadParams(String ident) {
74
		WriteFileFormatFeatures wfff = (WriteFileFormatFeatures) pInfo.getFileFeature().get(ident);
75
		wfff.loadParams();
76
		driverParams = wfff.getParams();
77
	}
78
	
79
	/*
80
	 * (non-Javadoc)
81
	 * @see org.gvsig.fmap.dal.coverage.store.RasterWriter#getProviderName()
82
	 */
83
	public String getProviderName() {
84
		return GdalProvider.NAME;
85
	}
86

  
87
	/**
88
	 * Constructor para la obtenci?n de par?metros del driver
89
	 * @param drvType Tipo de driver
90
	 */
91
	public PngWriter(String fileName) {
92
		ident = fileUtil.getExtensionFromFileName(fileName);
93
		driver = ((WriteFileFormatFeatures) pInfo.getFileFeature().get(ident)).getDriverName();
94
		gdalWriter = new GdalWriter(fileName);
95

  
96
		loadParams(ident);
97
	}
98

  
99
	/**
100
	 * Constructor para salvar datos servidos por el cliente
101
	 * @param dataWriter Objeto servidor de datos para el driver de escritura
102
	 * @param outSizeX N?mero de pixels en X de la imagen de salida
103
	 * @param outSizeY N?mero de pixels en Y de la imagen de salida
104
	 * @param outFilename Fichero de salida
105
	 * @param extentMaxX Posici?n en X m?xima del extent
106
	 * @param extentMinX Posici?n en X m?nima del extent
107
	 * @param extentMaxY Posici?n en Y m?xima del extent
108
	 * @param extentMinY Posici?n en Y m?nima del extent
109
	 * @param nBands N?mero de bandas
110
	 * @param drvType Tipo de driver
111
	 * @throws GdalException
112
	 * @throws IOException
113
	 */
114
	public PngWriter(DataServerWriter dataWriter,
115
							String outFileName,
116
							Integer nBands,
117
							AffineTransform at,
118
							Integer outSizeX,
119
							Integer outSizeY,
120
							Integer dataType,
121
							Params params,
122
							IProjection proj,
123
							Boolean geo)throws GdalException, IOException  {
124
		ident = fileUtil.getExtensionFromFileName(outFileName);
125
		driver = ((WriteFileFormatFeatures) pInfo.getFileFeature().get(ident)).getDriverName();
126
		outPng = outFileName;
127
		outTif = outFileName.substring(0, outFileName.lastIndexOf("."));
128
		outTif += ".tif";
129
		this.at = at;
130

  
131
		gdalWriter = new GdalWriter(dataWriter, outTif, nBands, at, outSizeX, outSizeY, dataType, params, proj, geo);
132
		if (params == null)
133
			loadParams(ident);
134
		else
135
			this.driverParams = params;
136
	}
137

  
138
	/**
139
	 * Asigna el tipo de driver con el que se salvar? la imagen
140
	 * @param drvType Tipo de driver
141
	 */
142
	public void setDriverType(String drvType) {
143
		gdalWriter.setDriverType(drvType);
144
	}
145

  
146
		/**
147
	 * Realiza la funci?n de compresi?n a partir de un GeoRasterFile.
148
	 * @throws IOException
149
	 */
150
	public void fileWrite() throws IOException, ProcessInterruptedException {
151
		gdalWriter.fileWrite();
152
	}
153

  
154
	/**
155
	 * Realiza una copia en el formato especificado.
156
	 * @throws IOException
157
	 */
158
	public static void createCopy(GdalDriver driverDst, String dst, String src,
159
			boolean bstrict, String[] params) throws IOException, GdalException {
160
		GdalWriter.createCopy(driverDst, dst, src, bstrict, params);
161
	}
162

  
163
	/**
164
	 * Realiza la escritura de datos con los datos que le pasa el cliente.
165
	 * @throws IOException
166
	 */
167
	public void dataWrite() throws IOException, ProcessInterruptedException {
168
		if(colorInterp != null)
169
			gdalWriter.setColorBandsInterpretation(colorInterp.getValues());
170
		gdalWriter.dataWrite();
171
		if (gdalWriter.isWrite()) {
172
			gdalWriter.writeClose();
173
			if (outTif != null) {
174
				GdalDriver driver = null;
175
				try {
176
					driver = GdalDataset.getDriverByName("PNG");
177
					GdalWriter.createCopy(driver, outPng, outTif, false, gdalWriter.gdalParamsFromRasterParams(driverParams));
178
				} catch (GdalException exc) {
179
					throw new IOException("No se ha podido obtener el driver.");
180
				}
181
				File file = new File(outTif);
182
				file.delete();
183
			}
184
		}
185
	}
186

  
187
	/**
188
	 * Cancela el salvado de datos.
189
	 */
190
	public void writeCancel() {
191
		gdalWriter.setWrite(false);
192
	}
193

  
194
	/*
195
	 * (non-Javadoc)
196
	 * @see org.gvsig.raster.dataset.GeoRasterWriter#setParams(org.gvsig.raster.dataset.Params)
197
	 */
198
	public void setParams(Params params) {
199
		driverParams = params;
200
		if (gdalWriter != null)
201
			gdalWriter.setParams(params);
202
	}
203

  
204
	/**
205
	 * Cierra el compresor ecw.
206
	 * @throws GdalException
207
	 */
208
	public void writeClose() {
209
	// El close del tif se hizo en dataWrite
210
	}
211

  
212
	public void setWkt(String wkt) {}
213
}
0 214

  
org.gvsig.raster.gdal/tags/org.gvsig.raster.gdal-2.2.21/org.gvsig.raster.gdal.io/src/main/java/org/gvsig/raster/gdal/io/GdalDataSource.java
1
	/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.gdal.io;
23

  
24
import java.awt.Color;
25
import java.awt.Rectangle;
26
import java.awt.geom.AffineTransform;
27
import java.awt.geom.NoninvertibleTransformException;
28
import java.awt.geom.Point2D;
29
import java.io.IOException;
30
import java.util.ArrayList;
31
import java.util.List;
32

  
33
import org.gdal.gdal.gdal;
34
import org.gdal.ogr.ogr;
35

  
36
import org.gvsig.fmap.dal.coverage.RasterLibrary;
37
import org.gvsig.fmap.dal.coverage.RasterLocator;
38
import org.gvsig.fmap.dal.coverage.dataset.Buffer;
39
import org.gvsig.fmap.dal.coverage.datastruct.BandList;
40
import org.gvsig.fmap.dal.coverage.datastruct.ColorItem;
41
import org.gvsig.fmap.dal.coverage.datastruct.Extent;
42
import org.gvsig.fmap.dal.coverage.datastruct.NoData;
43
import org.gvsig.fmap.dal.coverage.exception.ProcessInterruptedException;
44
import org.gvsig.fmap.dal.coverage.store.props.ColorInterpretation;
45
import org.gvsig.fmap.dal.coverage.store.props.ColorTable;
46
import org.gvsig.fmap.dal.coverage.util.FileUtils;
47
import org.gvsig.jgdal.GdalBuffer;
48
import org.gvsig.jgdal.GdalColorEntry;
49
import org.gvsig.jgdal.GdalColorTable;
50
import org.gvsig.jgdal.GdalDataset;
51
import org.gvsig.jgdal.GdalException;
52
import org.gvsig.jgdal.GdalRasterBand;
53
import org.gvsig.jgdal.GeoTransform;
54
import org.gvsig.raster.impl.datastruct.ColorItemImpl;
55
import org.gvsig.raster.impl.datastruct.DefaultNoData;
56
import org.gvsig.raster.impl.datastruct.ExtentImpl;
57
import org.gvsig.raster.impl.process.RasterTask;
58
import org.gvsig.raster.impl.process.RasterTaskQueue;
59
import org.gvsig.raster.impl.store.properties.DataStoreColorInterpretation;
60
import org.gvsig.raster.impl.store.properties.DataStoreColorTable;
61
import org.gvsig.raster.impl.store.properties.DataStoreMetadata;
62
import org.gvsig.raster.impl.store.properties.DataStoreTransparency;
63
import org.gvsig.tools.dispose.Disposable;
64
import org.gvsig.tools.task.TaskStatus;
65
/**
66
 * Soporte 'nativo' para ficheros desde GDAL.
67
 */
68
public class GdalDataSource extends GdalDataset implements Disposable {
69
	private String                       fileName                = null;
70
	private String                       shortName               = "";
71
	public 	GeoTransform                 trans                   = null;
72
	public int                           width                   = 0, height = 0;
73
	public double                        originX                 = 0D, originY = 0D;
74
	public String                        version                 = "";
75
	protected int                        rBandNr                 = 1, gBandNr = 2, bBandNr = 3, aBandNr = 4;
76
	private int[]                        dataType                = null;
77
	DataStoreMetadata                    metadata                = null;
78
	protected boolean                    georeferenced           = true;
79

  
80
	/**
81
	 * Vectores que contiene los desplazamientos de un pixel cuando hay supersampling.
82
	 * , es decir el n?mero de pixels de pantalla que tiene un pixel de imagen. Como todos
83
	 * los pixeles no tienen el mismo ancho y alto ha de meterse en un array y no puede ser
84
	 * una variable. Adem?s hay que tener en cuenta que el primer y ?ltimo pixel son de
85
	 * distinto tama?o que el resto.
86
	 */
87
	public int[]                              stepArrayX             = null;
88
	public int[]                              stepArrayY             = null;
89
	protected GdalRasterBand[]                gdalBands              = null;
90
	private double                            lastReadLine           = -1;
91
	private int                               overviewWidth          = -1;
92
	private int                               overviewHeight         = -1;
93
	private int                               currentViewWidth       = -1;
94
	private int                               currentViewHeight      = -1;
95
	private double                            currentViewX           = 0D;
96
	private double                            viewportScaleX         = 0D;
97
	private double                            viewportScaleY         = 0D;
98
	private double                            stepX                  = 0D;
99
	private double                            stepY                  = 0D;
100
	public boolean                            isSupersampling        = false;
101
	private boolean                           open                   = false;
102
	/**
103
	 * Estado de transparencia del raster.
104
	 */
105
	protected DataStoreTransparency           fileTransparency       = null;
106
	protected DataStoreColorTable             palette                = null;
107
	protected DataStoreColorInterpretation    colorInterpr           = null;
108
	protected AffineTransform                 ownTransformation      = null;
109
	protected AffineTransform                 externalTransformation = new AffineTransform();
110

  
111
	public static int getGdalTypeFromRasterBufType(int rasterBufType) {
112
		switch (rasterBufType) {
113
			case Buffer.TYPE_BYTE: return GdalDataset.GDT_Byte;
114
			case Buffer.TYPE_USHORT: return GdalDataset.GDT_UInt16;
115
			case Buffer.TYPE_SHORT: return GdalDataset.GDT_Int16;
116
			case Buffer.TYPE_INT: return GdalDataset.GDT_Int32;
117
			case Buffer.TYPE_FLOAT: return GdalDataset.GDT_Float32;
118
			case Buffer.TYPE_DOUBLE: return GdalDataset.GDT_Float64;
119
			case Buffer.TYPE_UNDEFINED: return GdalDataset.GDT_Unknown;
120
			case Buffer.TYPE_IMAGE: return GdalDataset.GDT_Byte;
121
		}
122
		return GdalDataset.GDT_Unknown;
123
	}
124

  
125
	/**
126
	 * Conversi?n de los tipos de datos de gdal a los tipos de datos de RasterBuf
127
	 * @param gdalType Tipo de dato de gdal
128
	 * @return Tipo de dato de RasterBuf
129
	 */
130
	public static int getRasterBufTypeFromGdalType(int gdalType) {
131
		switch (gdalType) {
132
			case 1:// Eight bit unsigned integer GDT_Byte = 1
133
				return Buffer.TYPE_BYTE;
134

  
135
			case 3:// Sixteen bit signed integer GDT_Int16 = 3,
136
				return Buffer.TYPE_SHORT;
137

  
138
			case 2:// Sixteen bit unsigned integer GDT_UInt16 = 2
139
				//return RasterBuffer.TYPE_USHORT;
140
				return Buffer.TYPE_SHORT; //Apa?o para usar los tipos de datos que soportamos
141

  
142
			case 5:// Thirty two bit signed integer GDT_Int32 = 5
143
				return Buffer.TYPE_INT;
144

  
145
			case 6:// Thirty two bit floating point GDT_Float32 = 6
146
				return Buffer.TYPE_FLOAT;
147

  
148
			case 7:// Sixty four bit floating point GDT_Float64 = 7
149
				return Buffer.TYPE_DOUBLE;
150

  
151
				// TODO:Estos tipos de datos no podemos gestionarlos. Habria que definir
152
				// el tipo complejo y usar el tipo long que de momento no se gasta.
153
			case 4:// Thirty two bit unsigned integer GDT_UInt32 = 4,
154
				return Buffer.TYPE_INT;
155
				//return RasterBuffer.TYPE_UNDEFINED; // Deberia devolver un Long
156

  
157
			case 8:// Complex Int16 GDT_CInt16 = 8
158
			case 9:// Complex Int32 GDT_CInt32 = 9
159
			case 10:// Complex Float32 GDT_CFloat32 = 10
160
			case 11:// Complex Float64 GDT_CFloat64 = 11
161
				return Buffer.TYPE_UNDEFINED;
162
		}
163
		return Buffer.TYPE_UNDEFINED;
164
	}
165

  
166
	/**
167
	 * Overview usada en el ?ltimo setView
168
	 */
169
	int currentOverview = -1;
170

  
171
	public GdalDataSource(String fName) throws GdalException, IOException {
172
		super();
173
		init(fName);
174
	}
175

  
176
//	private static Dataset initializeGdal(String fName) throws GdalException {
177
//		gdal.AllRegister();
178
//		ogr.RegisterAll();
179
//		Dataset data = gdal.Open(fName, 1);
180
//		if (data == null)
181
//			throw new GdalException("Error en la apertura del fichero. El fichero no tiene un formato v?lido.");
182
//
183
//		return data;
184
//	}
185

  
186
	private void init(String fName) throws GdalException, IOException {
187
		gdal.AllRegister();
188
		ogr.RegisterAll();
189
		fileName = fName;
190
		open(fName, GA_ReadOnly);
191
		open = true;
192
		if (getDataset() == null)
193
			throw new GdalException("Error en la apertura del fichero. El fichero no tiene un formato v?lido.");
194
		width = getRasterXSize();
195
		height = getRasterYSize();
196

  
197
		int[] dt = new int[getRasterCount()];
198
		for (int i = 0; i < getRasterCount(); i++)
199
			dt[i] = this.getRasterBand(i + 1).getRasterDataType();
200
		setDataType(dt);
201
		shortName = getDriverShortName();
202
		colorInterpr = new DataStoreColorInterpretation(getRasterCount());
203
		fileTransparency = new DataStoreTransparency(colorInterpr);
204
		metadata = new DataStoreMetadata(getMetadata(), colorInterpr);
205

  
206
		// Asignamos la interpretaci?n de color leida por gdal a cada banda. Esto
207
		// nos sirve para saber que banda de la imagen va asignada a cada banda de
208
		// visualizaci?n (ARGB)
209
		metadata.initNoDataByBand(getRasterCount());
210
		for (int i = 0; i < getRasterCount(); i++) {
211
			GdalRasterBand rb = getRasterBand(i + 1);
212
			String colorInt = getColorInterpretationName(rb.getRasterColorInterpretation());
213
			metadata.setNoDataEnabled(rb.existsNoDataValue());
214
			if(rb.existsNoDataValue()) {
215
				metadata.setNoDataValue(i, rb.getRasterNoDataValue());
216
				metadata.setNoDataEnabled(rb.existsNoDataValue());
217
			}
218
			colorInterpr.setColorInterpValue(i, colorInt);
219
			if (colorInt.equals("Alpha"))
220
				fileTransparency.setTransparencyBand(i);
221

  
222
			if (rb.getRasterColorTable() != null && palette == null) {
223
				palette = new DataStoreColorTable(gdalColorTable2ColorItems(rb.getRasterColorTable()), false);
224
//				fileTransparency.setTransparencyRangeList(palette.getTransparencyRange());
225
			}
226
		}
227
		fileTransparency.setTransparencyByPixelFromMetadata(metadata);
228

  
229
		try {
230
			trans = getGeoTransform();
231

  
232
			boolean isCorrect = false;
233
			for (int i = 0; i < trans.adfgeotransform.length; i++)
234
				if (trans.adfgeotransform[i] != 0)
235
					isCorrect = true;
236
			if (!isCorrect)
237
				throw new GdalException("");
238

  
239
			double psX = trans.adfgeotransform[1];
240
			double psY = trans.adfgeotransform[5];
241
			double rotX = trans.adfgeotransform[4];
242
			double rotY = trans.adfgeotransform[2];
243
			double offX = trans.adfgeotransform[0];
244
			double offY = trans.adfgeotransform[3];
245

  
246
			ownTransformation = new AffineTransform(psX, rotX, rotY, psY, offX, offY);
247
					//trans.adfgeotransform[1], trans.adfgeotransform[4], trans.adfgeotransform[2], trans.adfgeotransform[5], trans.adfgeotransform[0], trans.adfgeotransform[3]);
248
			externalTransformation = (AffineTransform) ownTransformation.clone();
249
			overviewWidth = width;
250
			overviewHeight = height;
251

  
252
			this.georeferenced = true;
253
		} catch (GdalException exc) {
254
			// Transformaci�n para ficheros sin georreferenciaci�n. Se invierte la Y
255
			// ya que las WC decrecen de
256
			// arriba a abajo y los pixeles crecen de arriba a abajo
257
			ownTransformation = new AffineTransform(1, 0, 0, -1, 0, height);
258
			externalTransformation = (AffineTransform) ownTransformation.clone();
259
			overviewWidth = width;
260
			overviewHeight = height;
261
			this.georeferenced = false;
262
		}
263
//		}
264
	}
265

  
266
	/**
267
	 * Returns true if this provider is open and false if don't
268
	 * @return
269
	 */
270
	public boolean isOpen() {
271
		return open;
272
	}
273

  
274
	/**
275
	 * Obtiene el flag que informa de si el raster tiene valor no data o no.
276
	 * Consultar� todas las bandas del mismo y si alguna tiene valor no data
277
	 * devuelve true sino devolver� false.
278
	 * @return true si tiene valor no data y false si no lo tiene
279
	 * @throws GdalException
280
	 */
281
	public boolean existsNoDataValue() throws GdalException {
282
		for (int i = 0; i < getRasterCount(); i++) {
283
			GdalRasterBand rb = getRasterBand(i + 1);
284
			if (rb.existsNoDataValue())
285
				return true;
286
		}
287
		return false;
288
	}
289

  
290
	/**
291
	 * Obtiene el flag que informa de si el raster tiene valor no data o no
292
	 * en una banda concreta.
293
	 * @return true si tiene valor no data en esa banda y false si no lo tiene
294
	 * @param band Posici�n de la banda a consultar (0..n)
295
	 * @throws GdalException
296
	 */
297
	public boolean existsNoDataValue(int band) throws GdalException {
298
		GdalRasterBand rb = getRasterBand(band + 1);
299
		return rb.existsNoDataValue();
300
	}
301

  
302
	/**
303
	 * Gets nodata value
304
	 * @return
305
	 */
306
	public NoData getNoDataValue() {
307
		Number value = null;
308
		int type = getRasterBufTypeFromGdalType(getDataType()[0]);
309
		if (metadata != null && metadata.isNoDataEnabled() && metadata.getNoDataValue().length > 0) {
310
			switch (type) {
311
			case Buffer.TYPE_BYTE:
312
				if (metadata == null || metadata.getNoDataValue().length == 0)
313
					value = new Byte(RasterLibrary.defaultByteNoDataValue);
314
				else
315
					value = new Byte((byte)metadata.getNoDataValue()[0]);
316
				break;
317
			case Buffer.TYPE_SHORT:
318
				if (metadata == null || metadata.getNoDataValue().length == 0)
319
					value = new Short(RasterLibrary.defaultShortNoDataValue);
320
				else
321
					value = new Short((short)metadata.getNoDataValue()[0]);
322
				break;
323
			case Buffer.TYPE_INT:
324
				if (metadata == null || metadata.getNoDataValue().length == 0)
325
					value = new Integer((int)RasterLibrary.defaultIntegerNoDataValue);
326
				else
327
					value = new Integer((int)metadata.getNoDataValue()[0]);
328
				break;
329
			case Buffer.TYPE_FLOAT:
330
				if (metadata == null || metadata.getNoDataValue().length == 0)
331
					value = new Float(RasterLibrary.defaultFloatNoDataValue);
332
				else
333
					value = new Float(metadata.getNoDataValue()[0]);
334
				break;
335
			case Buffer.TYPE_DOUBLE:
336
				if (metadata == null || metadata.getNoDataValue().length == 0)
337
					value = new Double(RasterLibrary.defaultFloatNoDataValue);
338
				else
339
					value = new Double(metadata.getNoDataValue()[0]);
340
				break;
341
			}
342
		}
343

  
344
		NoData nodata = new DefaultNoData(value, value, fileName);
345
		nodata.setNoDataTransparent(false);
346
		return nodata;
347
	}
348

  
349
	/**
350
	 * Asigna el tipo de dato
351
	 * @param dt entero que representa el tipo de dato
352
	 */
353
	public void setDataType(int[] dt) {
354
		dataType = dt;
355
	}
356

  
357
	/**
358
	 * Obtiene el tipo de dato
359
	 * @return entero que representa el tipo de dato
360
	 */
361
	public int[] getDataType() {
362
		return dataType;
363
	}
364

  
365
	/**
366
	 * Gets the color interpretation
367
	 * @return
368
	 */
369
	public ColorInterpretation getColorInterpretation() {
370
		return colorInterpr;
371
	}
372

  
373
	/**
374
	 * Gets the color table
375
	 * @return
376
	 */
377
	public ColorTable getColorTable() {
378
		return palette;
379
	}
380

  
381
	/**
382
	 * Obtiene un punto 2D con las coordenadas del raster a partir de uno en coordenadas
383
	 * del punto real.
384
	 * Supone rasters no girados
385
	 * @param pt	punto en coordenadas del punto real
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff