Statistics
| Revision:

root / trunk / libraries / libJCRS / src / org / gvsig / crs / CrsFactory.java @ 8704

History | View | Annotate | Download (2.25 KB)

1
package org.gvsig.crs;
2

    
3
import java.util.TreeMap;
4

    
5
import org.cresques.cts.ICRSFactory;
6
import org.cresques.cts.IProjection;
7
import org.gvsig.crs.repository.EpsgRepository;
8
import org.gvsig.crs.repository.ICrsRepository;
9
import org.gvsig.crs.repository.Iau2000Repository;
10

    
11
public class CrsFactory implements ICRSFactory {
12
        static TreeMap data = new TreeMap();
13
        
14
        public CrsFactory() {        
15
        }
16
        /**
17
         * Obtiene un CRS a partir de su c?digo (p.e. EPSG:23030).
18
         * @param code
19
         * @return
20
         * @throws CrsException
21
         */
22
        public ICrs getCRS(String code) throws CrsException {
23
                
24
                if (data.containsKey(code))
25
                        return (Crs) data.get(code);
26

    
27
                String repoId = code.substring(0, code.indexOf(":"));
28
                String crsCode = code.substring(code.indexOf(":")+1);
29
                
30
                ICrsRepository repo = null;
31
                Crs crs = null;
32
                
33
                if(repoId.equals("EPSG")){
34
                        repo = new EpsgRepository();
35
                        crs = (Crs)repo.getCrs(crsCode);
36
                }else if (repoId.equals("IAU2000")){
37
                        repo = new Iau2000Repository();
38
                        crs = (Crs)repo.getCrs(crsCode);
39
                }
40
                
41
                // LWS Esta l?nea sobra, cuando el cuadro de di?logo est?
42
                // mejor hecho.
43
                code = crs.getAbrev();
44
                
45
                data.put(code, crs);
46

    
47
                return crs;
48
                
49
                /*if (data.containsKey(code))
50
                        return (Crs) data.get(code);
51

52
                Crs crs = new Crs(code);
53
                
54
                // LWS Esta l?nea sobra, cuando el cuadro de di?logo est?
55
                // mejor hecho.
56
                code = crs.getAbrev();
57
                
58
                data.put(code, crs);
59

60
                return crs;*/
61
        }
62
        
63
        public ICrs getCRS(int epsg_code, String code) throws CrsException {
64
                if (data.containsKey(code))
65
                        return (Crs) data.get(code);
66

    
67
                Crs crs = new Crs(epsg_code, code);
68
                
69
                // LWS Esta l?nea sobra, cuando el cuadro de di?logo est?
70
                // mejor hecho.
71
                code = crs.getAbrev();
72
                
73
                data.put(code, crs);
74

    
75
                return crs;
76
        }
77
        
78
        public ICrs getCRS(int epsg_code, String code, String params) throws CrsException {
79
                if (data.containsKey(code))
80
                        return (Crs) data.get(code);
81
                
82
                Crs crs = new Crs(epsg_code, code,params);
83
                
84
                // LWS Esta l?nea sobra, cuando el cuadro de di?logo est?
85
                // mejor hecho.
86
                code = crs.getAbrev();
87
                
88
                data.put(code, crs);
89

    
90
                return crs;
91
        }
92
        
93
        public IProjection get(String name) {
94
                // TODO Auto-generated method stub
95
                try {
96
                        return getCRS(name);
97
                } catch (CrsException e) {
98
                        // TODO Auto-generated catch block
99
                        e.printStackTrace();
100
                }
101
                return null;
102
        }
103
}