Revision 12793 trunk/libraries/libRaster/src/org/gvsig/raster/dataset/io/ErmapperWriter.java

View differences:

ErmapperWriter.java
18 18
 */
19 19
package org.gvsig.raster.dataset.io;
20 20

  
21
import java.awt.geom.AffineTransform;
22
import java.awt.geom.Point2D;
21 23
import java.io.IOException;
22 24

  
23 25
import org.cresques.cts.IProjection;
......
28 30
import org.gvsig.raster.dataset.Params;
29 31
import org.gvsig.raster.dataset.Params.Param;
30 32
import org.gvsig.raster.dataset.io.features.WriteFileFormatFeatures;
31
import org.gvsig.raster.datastruct.Extent;
32 33
import org.gvsig.raster.util.RasterUtilities;
33 34
import org.gvsig.raster.util.extensionPoints.ExtensionPoints;
34 35
import org.gvsig.raster.util.extensionPoints.ExtensionPointsSingleton;
......
128 129
	public ErmapperWriter(	IDataWriter dataWriter,
129 130
			String outFileName,
130 131
			Integer nBands,
131
			Extent ex,
132
			AffineTransform at,
132 133
			Integer outSizeX,
133 134
			Integer outSizeY,
134 135
			Integer dataType,
135 136
			Params params,
136 137
			IProjection proj) throws EcwException, IOException {
138
		
139
		//La libreria de ECW no se traga caracteres raros al escribir. Los cambiamos por X de momento y ya se apa?a el usuario
140
		
141
		String ext = RasterUtilities.getExtensionFromFileName(outFileName);
142
		String fname = outFileName.substring(outFileName.lastIndexOf("/") + 1, outFileName.lastIndexOf(".")).replaceAll("[^a-zA-Z0-9]", "X");
143
		outFileName = outFileName.substring(0, outFileName.lastIndexOf("/") + 1) + fname + "." + ext;
144
		
137 145
		this.proj = proj;
138 146
		ident = RasterUtilities.getExtensionFromFileName(outFileName);
139 147
		driver = ((WriteFileFormatFeatures)fileFeature.get(ident)).getDriverName();
......
142 150
		if (nBands.intValue() <= 0)
143 151
			throw new EcwException("N?mero de bandas erroneo.");
144 152

  
145
		if ((ex.width() <= 0) || (ex.height() <= 0)) {
146
			throw new EcwException("Tama?o de la imagen de salida erroneo.");
147
		}
148

  
149 153
		this.outFileName = outFileName;
150 154
		this.dataWriter = dataWriter;
151 155

  
......
155 159
		this.sizeWindowY = outSizeY.intValue();
156 160

  
157 161
		//Calculamos la georeferenciaci?n a partir del extend pasado por el cliente.
158
		double maxX = ex.maxX();
159
		geoCoordOrigenX = ex.minX();
160
		geoCoordOrigenY = ex.maxY();
162
		geoCoordOrigenX = at.getTranslateX();
163
		geoCoordOrigenY = at.getTranslateY();
161 164

  
162
		double minY = ex.minY();
163
		pixelSizeX = (maxX - geoCoordOrigenX) / outSizeX.intValue();
164
		pixelSizeY = (minY - geoCoordOrigenY) / outSizeY.intValue();
165
		pixelSizeX = (at.getScaleX() > 0) ? at.getScaleX() : -at.getScaleX();
166
		pixelSizeY = (at.getScaleY() < 0) ? at.getScaleY() : -at.getScaleY();
167
		
168
		String outRmf = outFileName.substring(0, outFileName.lastIndexOf("."));
169
		RasterUtilities.saveGeoInfo(outRmf, at, new Point2D.Double(sizeWindowX, sizeWindowY));
165 170

  
166 171
		if (pixelSizeX == 0)
167 172
			pixelSizeX = 1.0;

Also available in: Unified diff