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

View differences:

RasterDataset.java
560 560
		}
561 561
		return p;
562 562
	}
563

  
564
	/**
565
	 * Obtiene las coordenadas reales de las esquinas del raster. En un raster sin rotaci?n esta llamada no es
566
	 * necesaria ya que es suficiente con el Extent pero cuando introducimos rotaci?n las coordenadas de las
567
	 * 4 esquinas son diferentes entre si.
568
	 * @return Point2D[] Lista de cuatro puntos que corresponden a las esquinas superior izquieda, superior derecha,
569
	 * inferior derecha e inferior inquierda respectivamente.
570
	 */
571
	public Point2D[] getCorners() {
572
		Point2D[] corner = new Point2D[4];
573
		corner[0] = rasterToWorld(new Point2D.Double(0, 0));
574
		corner[1] = rasterToWorld(new Point2D.Double(getWidth(), 0));
575
		corner[2] = rasterToWorld(new Point2D.Double(getWidth(), getHeight()));
576
		corner[3] = rasterToWorld(new Point2D.Double(0, getHeight()));
577
		return corner;
578
	}
579 563
	
580 564
	/**
581
	 * Obtiene el Extent correspondiente a los valores m?ximos y m?nimos del raster. Este es equivalente a getExtent
582
	 * en un raster sin rotaci?n pero varia en un raster rotado.
583
	 * @return Extent
584
	 */
585
	public Extent getLimits() {
586
		Point2D[] corner = getCorners();
587
		double minX1 = Math.min(corner[0].getX(), corner[1].getX());
588
		double minX2 = Math.min(corner[2].getX(), corner[3].getX());
589
		double minX = Math.min(minX1, minX2);
590
		
591
		double minY1 = Math.min(corner[0].getY(), corner[1].getY());
592
		double minY2 = Math.min(corner[2].getY(), corner[3].getY());
593
		double minY = Math.min(minY1, minY2);
594
		
595
		double maxX1 = Math.max(corner[0].getX(), corner[1].getX());
596
		double maxX2 = Math.max(corner[2].getX(), corner[3].getX());
597
		double maxX = Math.max(maxX1, maxX2);
598
		
599
		double maxY1 = Math.max(corner[0].getY(), corner[1].getY());
600
		double maxY2 = Math.max(corner[2].getY(), corner[3].getY());
601
		double maxY = Math.max(maxY1, maxY2);
602
		return new Extent(minX, maxY, maxX, minY);
603
	}
604
	
605
	/**
606 565
	 * Calcula el extent en coordenadas del mundo real
607 566
	 * @return Extent
608 567
	 */
609 568
	public Extent getExtent() {
610 569
		return new Extent(	rasterToWorld(new Point2D.Double(0, 0)), 
611
							rasterToWorld(new Point2D.Double(getWidth(), getHeight())));
570
							rasterToWorld(new Point2D.Double(getWidth(), getHeight())),
571
							rasterToWorld(new Point2D.Double(getWidth(), 0)),
572
							rasterToWorld(new Point2D.Double(0, getHeight())));
612 573
	}
613 574
	
614 575
	/**

Also available in: Unified diff