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 |
}
|