Revision 12793 trunk/libraries/libRaster/src/org/gvsig/raster/dataset/io/ErmapperWriter.java
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