Statistics
| Revision:

root / trunk / libraries / libCq CMS for java.old / src / org / cresques / io / TifGeoRefFile.java @ 157

History | View | Annotate | Download (3.43 KB)

1
/*
2
 * Created on 16-jun-2004
3
 */
4
package org.cresques.io;
5

    
6
import java.awt.Dimension;
7
import java.awt.Image;
8
import java.awt.Point;
9
import java.io.IOException;
10

    
11
import org.cresques.cts.ICoordTrans;
12
import org.cresques.cts.IProjection;
13
import org.cresques.geo.GeoPoint;
14
import org.cresques.geo.Geodetic;
15
import org.cresques.geo.ProjPoint;
16
import org.cresques.geo.Projection;
17
import org.cresques.px.Extent;
18

    
19
/**
20
 * Soporte para ficheros georeferenciados con World File (.tfw)
21
 * @author "Luis W. Sevilla" <sevilla_lui@gva.es>
22
 * @author "Jos? Morell Rama" <morell_josram@gva.es>
23
 */
24
public class TifGeoRefFile extends GeoRasterFile {
25
        geo.raster.GeoRasterFile geoRasterFile = null;
26
        Extent v = null;
27

    
28
        /**
29
         * @param name
30
         */
31
        public TifGeoRefFile(IProjection proj, String fName) {
32
                super(proj, null); // TODO aqui van las proyecciones
33
                fName = DataSource.normalize(fName);
34
                super.setName(fName);
35
                System.out.println("jmGeoRaster: "+fName);
36

    
37
                geoRasterFile = geo.raster.GeoRasterFile.createFile(fName);
38

    
39
                load();
40
        }
41

    
42
        /* (non-Javadoc)
43
         * @see org.cresques.io.GeoRasterFile#load()
44
         */
45
        public GeoFile load() {
46
                try {
47
                        geoRasterFile.open();
48
                        if (!(proj instanceof Geodetic) && (proj instanceof Projection) &&
49
                                geoRasterFile.getOriginX() >= -180.0 && geoRasterFile.getOriginX() <= 180.0) {
50
                                GeoPoint gPt = new GeoPoint(geoRasterFile.getOriginX(), geoRasterFile.getOriginY());
51
                                ProjPoint pt = (ProjPoint) getProjection().createPoint(0.0, 0.0);
52
                                pt = (ProjPoint) ((Geodetic)getProjection()).fromGeo(gPt, pt);
53
                                GeoPoint gPt2 = new GeoPoint(geoRasterFile.getOriginX()+geoRasterFile.getCellIncrementX(), geoRasterFile.getOriginY()+geoRasterFile.getCellIncrementY());
54
                                ProjPoint pt2 = (ProjPoint) ((Geodetic)getProjection()).createPoint(0.0, 0.0);
55
                                pt2 = (ProjPoint) ((Geodetic)getProjection()).fromGeo(gPt2, pt2);
56
                                geoRasterFile.setOriginX(pt.getX());
57
                                geoRasterFile.setOriginY(pt.getY());
58
                                geoRasterFile.setCellIncrementX(pt2.getX()-pt.getX());
59
                                geoRasterFile.setCellIncrementY(pt2.getY()-pt.getY());
60
                                
61
                                //geoRasterFile.computeExtent();
62
                        }
63
                        extent = new Extent(geoRasterFile.getExtent());
64
                        System.out.println("jmGeoRaster: Extent="+extent);
65
                        geoRasterFile.setOriginRaster(new Point(0, 0));
66
                        geoRasterFile.setGraphics2Doffset(new Point(0, 0));
67

    
68
                } catch (IOException e) {
69
                        e.printStackTrace();
70
                        geoRasterFile = null;
71
                }
72
                return this;
73
        }
74

    
75
        public int getWidth() { return geoRasterFile.getWidth(); }
76
        public int getHeight() { return geoRasterFile.getHeight(); }
77

    
78
        /* (non-Javadoc)
79
         * @see org.cresques.io.GeoRasterFile#setView(org.cresques.px.Extent)
80
         */
81
        public void setView(Extent e) { v = new Extent(e); }
82
        public Extent getView() { return v; }
83

    
84
        /* (non-Javadoc)
85
         * @see org.cresques.io.GeoRasterFile#setTransparency(boolean)
86
         */
87
        public void setTransparency(boolean t) {
88
                //transparency = t;        
89
        }
90

    
91
        /* (non-Javadoc)
92
         * @see org.cresques.io.GeoRasterFile#updateImage(int, int, org.cresques.geo.ReProjection)
93
         */
94
        public Image updateImage(int width, int height, ICoordTrans rp) {
95
                double viewportScale = (double) width/v.width();
96
                Dimension sz = new Dimension(width, height);
97

    
98
                //return geoRasterFile.window(v.toRectangle2D(), viewportScale);
99
                return ((geo.raster.GeoRasterFile) geoRasterFile).updateImage(sz, v.toRectangle2D(), viewportScale);
100
        }
101

    
102

    
103
        /* (non-Javadoc)
104
         * @see org.cresques.io.GeoRasterFile#reProject(org.cresques.geo.ReProjection)
105
         */
106
        public void reProject(ICoordTrans rp) {
107
                // TODO Auto-generated method stub
108
                
109
        }
110
}