Revision 13021 trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/cutting/ui/listener/CuttingPanelListener.java
CuttingPanelListener.java | ||
---|---|---|
90 | 90 |
public void setAffineTransform(AffineTransform at) { |
91 | 91 |
this.at = at; |
92 | 92 |
} |
93 |
|
|
93 |
|
|
94 | 94 |
/** |
95 | 95 |
* Asigna la dimensi?n del raster |
96 | 96 |
* @param dim |
... | ... | |
204 | 204 |
if (e.getSource() == getCuttingPanel().getButtonBarContainer().getButton(0)) { |
205 | 205 |
Point2D ulPx = new Point2D.Double(0, 0); |
206 | 206 |
Point2D lrPx = new Point2D.Double(dim.width, dim.height); |
207 |
|
|
207 |
|
|
208 | 208 |
double minX = Math.min(ulPx.getX(), lrPx.getX()); |
209 | 209 |
double maxX = Math.max(ulPx.getX(), lrPx.getX()); |
210 | 210 |
double minY = Math.min(ulPx.getY(), lrPx.getY()); |
... | ... | |
215 | 215 |
Point2D lrWc = new Point2D.Double(); |
216 | 216 |
at.transform(new Point2D.Double(minX, minY), ulWc); |
217 | 217 |
at.transform(new Point2D.Double(maxX, maxY), lrWc); |
218 |
|
|
218 |
|
|
219 | 219 |
getCuttingPanel().setCoorRealFromDouble(ulWc.getX(), ulWc.getY(), lrWc.getX(), lrWc.getY(), 3); |
220 | 220 |
getCuttingPanel().setCoorPixelFromDouble(0, 0, dim.width - 1, dim.height - 1, 3); |
221 | 221 |
getCuttingPanel().setWidthText(dim.width, 0); |
... | ... | |
256 | 256 |
Extent ex = getMapWindow(); |
257 | 257 |
if (obj == getCuttingPanel().getCoor_reales().getPDataInput11().getJTextField()) |
258 | 258 |
getCuttingPanel().setCoorRealFromDouble(Double.valueOf(getCuttingPanel().getCoor_reales().getPDataInput11().getJTextField().getText()).doubleValue(), |
259 |
ex.getULY(),//getCuttingPanel().getWcMinY(),
|
|
260 |
ex.getLRX(),//getCuttingPanel().getWcMaxX(),
|
|
259 |
ex.getULY(),//getCuttingPanel().getWcMinY(), |
|
260 |
ex.getLRX(),//getCuttingPanel().getWcMaxX(), |
|
261 | 261 |
ex.getLRY(), 6);//getCuttingPanel().getWcMaxY(), 6); |
262 | 262 |
if (obj == getCuttingPanel().getCoor_reales().getPDataInput12().getJTextField()) |
263 | 263 |
getCuttingPanel().setCoorRealFromDouble(ex.getULX(),//getCuttingPanel().getWcMinX(), |
264 |
Double.valueOf(getCuttingPanel().getCoor_reales().getPDataInput12().getJTextField().getText()).doubleValue(),
|
|
264 |
Double.valueOf(getCuttingPanel().getCoor_reales().getPDataInput12().getJTextField().getText()).doubleValue(), |
|
265 | 265 |
ex.getLRX(),//getCuttingPanel().getWcMaxX(), |
266 | 266 |
ex.getLRY(), 6);//getCuttingPanel().getWcMaxY(), 6); |
267 | 267 |
if (obj == getCuttingPanel().getCoor_reales().getPDataInput21().getJTextField()) |
268 |
getCuttingPanel().setCoorRealFromDouble(ex.getULX(),//getCuttingPanel().getWcMinX(),
|
|
268 |
getCuttingPanel().setCoorRealFromDouble(ex.getULX(),//getCuttingPanel().getWcMinX(), |
|
269 | 269 |
ex.getULY(),//getCuttingPanel().getWcMinY(), |
270 |
Double.valueOf(getCuttingPanel().getCoor_reales().getPDataInput21().getJTextField().getText()).doubleValue(),
|
|
270 |
Double.valueOf(getCuttingPanel().getCoor_reales().getPDataInput21().getJTextField().getText()).doubleValue(), |
|
271 | 271 |
ex.getLRY(), 6);//getCuttingPanel().getWcMaxY(), 6); |
272 | 272 |
if (obj == getCuttingPanel().getCoor_reales().getPDataInput22().getJTextField()) |
273 |
getCuttingPanel().setCoorRealFromDouble(ex.getULX(), //getCuttingPanel().getWcMinX(),
|
|
274 |
ex.getURY(), //getCuttingPanel().getWcMinY(),
|
|
273 |
getCuttingPanel().setCoorRealFromDouble(ex.getULX(), //getCuttingPanel().getWcMinX(), |
|
274 |
ex.getURY(), //getCuttingPanel().getWcMinY(), |
|
275 | 275 |
ex.getLRX(), //getCuttingPanel().getWcMaxX(), |
276 | 276 |
Double.valueOf(getCuttingPanel().getCoor_reales().getPDataInput22().getJTextField().getText()).doubleValue(), 6); |
277 | 277 |
} catch (NumberFormatException ex1) { |
... | ... | |
344 | 344 |
return; |
345 | 345 |
Point2D ulPx = new Point2D.Double(pxWindow.getMinX(), pxWindow.getMinY()); |
346 | 346 |
Point2D lrPx = new Point2D.Double(pxWindow.getMaxX(), pxWindow.getMaxY()); |
347 |
|
|
347 |
|
|
348 | 348 |
//Comprobamos si la selecci?n est? fuera del ?rea |
349 | 349 |
if(isOutside(ulPx, lrPx)) { |
350 | 350 |
cuttingPanel.setCoorPixelFromDouble(0, 0, 0, 0, 0); |
... | ... | |
355 | 355 |
cuttingPanel.setCoorRealFromDouble(0, 0, 0, 0, 0); |
356 | 356 |
return; |
357 | 357 |
} |
358 |
|
|
358 |
|
|
359 | 359 |
//Comprobamos que las esquinas no esten cambiadas de sitio |
360 | 360 |
if(ulPx.getX() > lrPx.getX()) { |
361 | 361 |
double ulTmp = ulPx.getX(); |
... | ... | |
367 | 367 |
ulPx.setLocation(ulPx.getX(), lrPx.getY()); |
368 | 368 |
lrPx.setLocation(lrPx.getX(), ulTmp); |
369 | 369 |
} |
370 |
|
|
370 |
|
|
371 | 371 |
Point2D[] pointList = new Point2D[]{ulPx, lrPx}; |
372 | 372 |
Point2D dim = new Point2D.Double(this.dim.width, this.dim.height); |
373 |
|
|
373 |
|
|
374 | 374 |
//Ajustamos los puntos al ?rea en pixeles del raster |
375 | 375 |
RasterUtilities.adjustToPixelSize(pointList, dim); |
376 |
|
|
376 |
|
|
377 | 377 |
Point2D ulWc = new Point2D.Double(); |
378 | 378 |
Point2D lrWc = new Point2D.Double(); |
379 | 379 |
at.transform(ulPx, ulWc); |
380 | 380 |
at.transform(new Point2D.Double(lrPx.getX() + 1, lrPx.getY() + 1), lrWc); |
381 |
|
|
381 |
|
|
382 | 382 |
cuttingPanel.setCoorRealFromDouble(ulWc.getX(), ulWc.getY(), lrWc.getX(), lrWc.getY(), 3); |
383 | 383 |
cuttingPanel.setCoorPixelFromDouble(ulPx.getX(), ulPx.getY(), lrPx.getX(), lrPx.getY(), 3); |
384 | 384 |
cuttingPanel.setWidthText(dim.getX(), 0); |
385 | 385 |
cuttingPanel.setHeightText(dim.getY(), 0); |
386 | 386 |
cuttingPanel.setCellSizeText((Math.abs(lrWc.getX() - ulWc.getX()) / dim.getX()), 4); |
387 |
cuttingPanel.setRelWidthHeight((double) (dim.getX() / dim.getY()));
|
|
387 |
cuttingPanel.setRelWidthHeight((double) (dim.getX() / dim.getY())); |
|
388 | 388 |
} else { |
389 | 389 |
Extent mapWindow = getMapWindow(); |
390 | 390 |
if (mapWindow == null) |
391 | 391 |
return; |
392 |
|
|
392 |
|
|
393 | 393 |
Point2D ulPx = new Point2D.Double(mapWindow.getULX(), mapWindow.getULY()); |
394 | 394 |
Point2D lrPx = new Point2D.Double(mapWindow.getLRX(), mapWindow.getLRY()); |
395 |
Point2D p = new Point2D.Double(); |
|
396 | 395 |
|
397 |
try {
|
|
396 |
try { |
|
398 | 397 |
at.inverseTransform(ulPx, ulPx); |
399 | 398 |
at.inverseTransform(lrPx, lrPx); |
400 | 399 |
} catch (NoninvertibleTransformException e) { |
... | ... | |
417 | 416 |
} |
418 | 417 |
//Ajustamos los puntos al ?rea en pixeles del raster |
419 | 418 |
RasterUtilities.adjustToPixelSize(pointList, dim); |
420 |
|
|
419 |
|
|
421 | 420 |
double minX = Math.min(ulPx.getX(), lrPx.getX()); |
422 | 421 |
double maxX = Math.max(ulPx.getX(), lrPx.getX()); |
423 | 422 |
double minY = Math.min(ulPx.getY(), lrPx.getY()); |
... | ... | |
428 | 427 |
Point2D lrWc = new Point2D.Double(); |
429 | 428 |
at.transform(new Point2D.Double(minX, minY), ulWc); |
430 | 429 |
at.transform(new Point2D.Double(maxX + 1, maxY + 1), lrWc); |
431 |
|
|
430 |
|
|
432 | 431 |
cuttingPanel.setCoorRealFromDouble(ulWc.getX(), ulWc.getY(), lrWc.getX(), lrWc.getY(), 3); |
433 | 432 |
cuttingPanel.setCoorPixelFromDouble(minX, minY, maxX, maxY, 3); |
434 | 433 |
cuttingPanel.setWidthText(dim.getX(), 0); |
... | ... | |
441 | 440 |
} |
442 | 441 |
} |
443 | 442 |
} |
444 |
|
|
443 |
|
|
445 | 444 |
/** |
446 |
* Comprueba si la selecci?n del punto est? fuera del ?rea del raster.
|
|
445 |
* Comprueba si la selecci?n del punto est? fuera del ?rea del raster. |
|
447 | 446 |
* @param ulPx Coordenada superior izquierda en pixeles |
448 | 447 |
* @param lrPx Corrdenada inferior derecha en pixeles |
449 | 448 |
* @return true si la selecci?n del punto est? fuera del raster y false si no lo est? |
... | ... | |
453 | 452 |
double minY = Math.min(ulPx.getY(), lrPx.getY()); |
454 | 453 |
double maxX = Math.max(ulPx.getX(), lrPx.getX()); |
455 | 454 |
double maxY = Math.max(ulPx.getY(), lrPx.getY()); |
456 |
if(minX >= dim.width || minY >= dim.height || maxX < 0 || maxY < 0)
|
|
455 |
if(minX >= dim.width || minY >= dim.height || maxX < 0 || maxY < 0) |
|
457 | 456 |
return true; |
458 | 457 |
return false; |
459 | 458 |
} |
... | ... | |
607 | 606 |
|
608 | 607 |
WriterBufferServer dataWriter1 = new WriterBufferServer(); |
609 | 608 |
//TODO: FUNCIONALIDAD: Falta asignar la matriz de transformaci?n para que se salve con georreferenciaci?n. |
610 |
|
|
609 |
|
|
611 | 610 |
AffineTransform transf = calcAffineTransform(ulx, uly, lrx, lry, getCuttingPanel().getWidthText(), getCuttingPanel().getHeightText()); |
612 | 611 |
|
613 | 612 |
int interpMethod = getCuttingPanel().getPResolution().getSelectedInterpolationMethod(); |
... | ... | |
638 | 637 |
private AffineTransform calcAffineTransform(double ulx, double uly, double lrx, double lry, double width, double height) { |
639 | 638 |
Point2D ul = new Point2D.Double(ulx, uly); |
640 | 639 |
Point2D lr = new Point2D.Double(lrx, lry); |
641 |
Point2D p = new Point2D.Double(); |
|
642 | 640 |
try { |
643 | 641 |
at.inverseTransform(ul, ul); |
644 | 642 |
at.inverseTransform(lr, lr); |
... | ... | |
647 | 645 |
return new AffineTransform(); |
648 | 646 |
} |
649 | 647 |
double w = Math.abs(lr.getX() - ul.getX()); |
650 |
double h = Math.abs(lr.getY() - ul.getY()); |
|
651 |
|
|
648 |
|
|
652 | 649 |
Point2D ur = new Point2D.Double(ul.getX() + w, ul.getY()); |
653 | 650 |
Point2D ll = new Point2D.Double(lr.getX() - w, lr.getY() ); |
654 |
|
|
651 |
|
|
655 | 652 |
//Obtenemos la georreferenciaci?n de las cuatro esquinas del nuevo raster |
656 | 653 |
at.transform(ul, ul); |
657 | 654 |
at.transform(ur, ur); |
658 | 655 |
at.transform(lr, lr); |
659 | 656 |
at.transform(ll, ll); |
660 |
|
|
657 |
|
|
661 | 658 |
double pixelSizeX = (ur.getX() - ul.getX()) / width; |
662 | 659 |
double pixelSizeY = (ll.getY() - ul.getY()) / height; |
663 | 660 |
double rotX = at.getShearX(); |
664 | 661 |
double rotY = at.getShearY(); |
665 | 662 |
return new AffineTransform(pixelSizeX, rotY, rotX, pixelSizeY, ulx, uly); |
666 | 663 |
} |
667 |
|
|
668 |
private double[] calcNewShear(AffineTransform trOld, double psX, double psY, double tX, double tY, Point2D ul, Point2D lr) { |
|
669 |
at.transform(ul, ul); |
|
670 |
at.transform(lr, lr); |
|
671 |
return null; |
|
672 |
} |
|
673 |
|
|
664 |
|
|
674 | 665 |
/* |
675 | 666 |
* (non-Javadoc) |
676 | 667 |
* @see java.awt.event.KeyListener#keyPressed(java.awt.event.KeyEvent) |
... | ... | |
714 | 705 |
public Cursor getCursor() { |
715 | 706 |
return null; |
716 | 707 |
} |
708 |
|
|
709 |
/** |
|
710 |
* @return the widthPx |
|
711 |
*/ |
|
712 |
public int getWidthPx() { |
|
713 |
return widthPx; |
|
714 |
} |
|
715 |
|
|
716 |
/** |
|
717 |
* @return the heightPx |
|
718 |
*/ |
|
719 |
public int getHeightPx() { |
|
720 |
return heightPx; |
|
721 |
} |
|
717 | 722 |
} |
Also available in: Unified diff