9 |
9 |
import java.awt.Image;
|
10 |
10 |
import java.awt.geom.GeneralPath;
|
11 |
11 |
import java.awt.geom.Point2D;
|
|
12 |
import java.awt.image.DataBuffer;
|
12 |
13 |
import java.awt.image.ImageObserver;
|
13 |
14 |
import java.util.Date;
|
14 |
15 |
import java.util.Vector;
|
... | ... | |
17 |
18 |
import org.cresques.cts.IProjection;
|
18 |
19 |
import org.cresques.geo.Projected;
|
19 |
20 |
import org.cresques.geo.ViewPortData;
|
20 |
|
//import org.cresques.io.GdalFile;
|
|
21 |
import org.cresques.io.GdalFile;
|
21 |
22 |
import org.cresques.io.GeoRasterFile;
|
22 |
|
//import org.cresques.io.raster.ComputeMinMaxFilter;
|
23 |
|
//import org.cresques.io.raster.ComputeMinMaxImageFilter;
|
24 |
|
//import org.cresques.io.raster.LinearEnhancementFilter;
|
25 |
|
//import org.cresques.io.raster.LinearEnhancementImageFilter;
|
26 |
|
//import org.cresques.io.raster.RasterBuf;
|
27 |
|
//import org.cresques.io.raster.RasterFilter;
|
28 |
|
//import org.cresques.io.raster.RasterStats;
|
|
23 |
import org.cresques.io.raster.ComputeMinMaxFilter;
|
|
24 |
import org.cresques.io.raster.ComputeMinMaxImageFilter;
|
|
25 |
import org.cresques.io.raster.LinearEnhancementFilter;
|
|
26 |
import org.cresques.io.raster.LinearEnhancementImageFilter;
|
|
27 |
import org.cresques.io.raster.RasterBuf;
|
|
28 |
import org.cresques.io.raster.RasterStats;
|
|
29 |
import org.cresques.io.raster.RasterToImageFilter;
|
29 |
30 |
|
30 |
31 |
public class PxRaster extends PxObj implements Projected {
|
31 |
32 |
protected GeoRasterFile geoFile = null;
|
... | ... | |
35 |
36 |
protected GeoRasterFile [] colorBand = null;
|
36 |
37 |
protected int rBand = 1, gBand = 2, bBand = 3;
|
37 |
38 |
|
38 |
|
//RasterStats stats = new RasterStats();
|
|
39 |
RasterStats stats = new RasterStats();
|
39 |
40 |
int transparente = 0x10ffff80;
|
40 |
41 |
|
41 |
42 |
String vName = null;
|
... | ... | |
283 |
284 |
System.out.println("Dibujando PxRaster: pt0 = "+pt);
|
284 |
285 |
vp.mat.transform(pt, pt);
|
285 |
286 |
System.out.println("Dibujando PxRaster: pt1 = "+pt);
|
286 |
|
/*if (colorBand == null && geoFile instanceof GdalFile &&
|
|
287 |
if (colorBand == null && geoFile instanceof GdalFile &&
|
287 |
288 |
(geoFile.getDataType() != DataBuffer.TYPE_BYTE)) {
|
288 |
289 |
System.out.println("PxRaster: Has dado con un Raster de 16 bits");
|
289 |
290 |
System.out.println("Dibujando PxRaster sz=("+wImg+","+hImg+"...");
|
... | ... | |
297 |
298 |
g.drawImage(geoImage, (int) Math.round(pt.getX()), (int) Math.round(pt.getY()), component);
|
298 |
299 |
t2 = new Date().getTime();
|
299 |
300 |
System.out.println("Dibujando PxRaster: "+(t2-t1)/1000D+", secs. Dibujando");
|
300 |
|
} else */if (colorBand != null) { // multiBands
|
|
301 |
} else if (colorBand != null) { // multiBands
|
301 |
302 |
System.out.println("Dibujando PxRaster (Multifile) ...");
|
302 |
303 |
//if (doTransparency)
|
303 |
304 |
//geoImage = new BufferedImage(wImg, hImg, BufferedImage.TYPE_INT_ARGB);
|
... | ... | |
307 |
308 |
geoImage = colorBand[gBand].updateImage(wImg, hImg, rp, geoImage, GeoRasterFile.GREEN_BAND);
|
308 |
309 |
geoImage = colorBand[bBand].updateImage(wImg, hImg, rp, geoImage, GeoRasterFile.BLUE_BAND);
|
309 |
310 |
|
310 |
|
//geoImage = renderizeRaster(geoImage);
|
|
311 |
geoImage = renderizeRaster(geoImage);
|
311 |
312 |
g.drawImage(geoImage, (int) Math.round(pt.getX()), (int) Math.round(pt.getY()), component);
|
312 |
313 |
t2 = new Date().getTime();
|
313 |
314 |
System.out.println("Dibujando PxRaster: "+(t2-t1)/1000D+", secs.");
|
... | ... | |
316 |
317 |
geoImage = geoFile.updateImage(wImg, hImg, rp);
|
317 |
318 |
System.out.println("Dibujando PxRaster sz=("+wImg+","+hImg+"...");
|
318 |
319 |
|
319 |
|
//geoImage = renderizeRaster(geoImage);
|
|
320 |
geoImage = renderizeRaster(geoImage);
|
320 |
321 |
g.drawImage(geoImage, (int) Math.round(pt.getX()), (int) Math.round(pt.getY()), component);
|
321 |
322 |
t2 = new Date().getTime();
|
322 |
323 |
System.out.println("Dibujando PxRaster: "+(t2-t1)/1000D+", secs.");
|
... | ... | |
334 |
335 |
|
335 |
336 |
|
336 |
337 |
|
337 |
|
/*
|
338 |
|
/**
|
339 |
|
* Renderiza el raster.
|
340 |
|
* @author Luis W. Sevilla (sevilla_lui@gva.es)
|
341 |
|
* /
|
|
338 |
/* */
|
342 |
339 |
|
343 |
|
class RasterToImageFilter extends RasterFilter {
|
344 |
|
private BufferedImage image;
|
345 |
|
private int alpha;
|
346 |
|
private int rgb;
|
347 |
|
public RasterToImageFilter(RasterBuf raster, int a) {
|
348 |
|
super(raster, null);
|
349 |
|
this.alpha = (a & 0xff) << 24;
|
350 |
|
image = new BufferedImage(raster.getWidth(), raster.getHeight(), BufferedImage.TYPE_INT_ARGB);
|
351 |
|
execute();
|
352 |
|
}
|
353 |
|
|
354 |
|
/* (non-Javadoc)
|
355 |
|
* @see org.cresques.px.PxRaster.RasterFilter#process(int, int)
|
356 |
|
* /
|
357 |
|
public void process(int x, int y) {
|
358 |
|
raster.getPixelInt(x, y, px);
|
359 |
|
rgb = alpha | ((px[0] & 0xff) << 16) |
|
360 |
|
((px[1] & 0xff) << 8) | (px[2] & 0xff);
|
361 |
|
|
362 |
|
image.setRGB(x, y, rgb);
|
363 |
|
}
|
364 |
|
|
365 |
|
public Image getImage() { return image; }
|
366 |
|
|
367 |
|
/* (non-Javadoc)
|
368 |
|
* @see org.cresques.px.PxRaster.RasterFilter#processLines(int)
|
369 |
|
* /
|
370 |
|
public void processLine(int y) {
|
371 |
|
for (int x=0; x<width; x++) {
|
372 |
|
int [][] line = raster.getLineInt(y);
|
373 |
|
rgb = alpha | ((line[x][0] & 0xff) << 16) |
|
374 |
|
((line[x][1] & 0xff) << 8) | (line[x][2] & 0xff);
|
375 |
|
|
376 |
|
image.setRGB(x, y, rgb);
|
377 |
|
}
|
378 |
|
}
|
379 |
|
}
|
380 |
|
|
381 |
340 |
public Image renderizeRaster(RasterBuf raster) {
|
382 |
341 |
if (true) {
|
383 |
342 |
ComputeMinMaxFilter filter =
|
... | ... | |
414 |
373 |
stats.pinta();
|
415 |
374 |
return image;
|
416 |
375 |
}
|
417 |
|
*/
|
|
376 |
/* */
|
418 |
377 |
public void drawMarco(Graphics2D g, ViewPortData vp) {
|
419 |
378 |
// Color color = new Color(255,222,165,128), fillColor = new Color(255,214,132,128);
|
420 |
379 |
Color color = new Color(128,128,128), fillColor = new Color(255,220,220,0x20);
|