Statistics
| Revision:

root / org.gvsig.geotools.proj / trunk / org.gvsig.geotools.proj / org.gvsig.geotools.proj.catalog.impl / src / test / java / org / gvsig / geotools / proj / catalog / test / GtCRSCatalogManagerIT.java @ 839

History | View | Annotate | Download (6.83 KB)

1
package org.gvsig.geotools.proj.catalog.test;
2

    
3
import java.util.ArrayList;
4
import java.util.List;
5

    
6
import org.gvsig.geotools.proj.catalog.DefaultTransformationDefinition;
7
import org.gvsig.geotools.proj.catalog.GtCRSCatalogManager;
8
import org.gvsig.proj.catalog.CRSCatalogManager;
9
import org.gvsig.proj.catalog.CRSCatalogManagerIT;
10
import org.gvsig.proj.catalog.CRSDefinition;
11
import org.gvsig.proj.catalog.TransformationDefinition;
12

    
13
public class GtCRSCatalogManagerIT extends CRSCatalogManagerIT {
14
        private static final String EPSG25830_WKT = "PROJCS[\"ETRS89 / UTM zone 30N\",GEOGCS[\"ETRS89\",DATUM[\"European Terrestrial Reference System 1989\",SPHEROID[\"GRS 1980\",6378137.0, 298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0.0,0.0,0.0,0.0,0.0,0.0,0.0],AUTHORITY[\"EPSG\",\"6258\"]],PRIMEM[\"Greenwich\", 0.0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943295],AXIS[\"Geodetic latitude\",NORTH],AXIS[\"Geodetic longitude\",EAST],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Transverse_Mercator\",AUTHORITY[\"EPSG\",\"9807\"]],PARAMETER[\"central_meridian\", -3.0],PARAMETER[\"latitude_of_origin\",0.0],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500000.0],PARAMETER[\"false_northing\",0.0],UNIT[\"m\",1.0],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"25830\"]]";
15
        private static final String WKT_25830_TO_4326 = "CONCAT_MT[INVERSE_MT[PARAM_MT[\"Transverse_Mercator\", PARAMETER[\"semi_major\", 6378137.0], PARAMETER[\"semi_minor\", 6356752.314140356], PARAMETER[\"central_meridian\", -3.0], PARAMETER[\"latitude_of_origin\", 0.0], PARAMETER[\"scale_factor\", 0.9996], PARAMETER[\"false_easting\", 500000.0], PARAMETER[\"false_northing\", 0.0]]], PARAM_MT[\"Ellipsoid_To_Geocentric\", PARAMETER[\"dim\", 2], PARAMETER[\"semi_major\", 6378137.0], PARAMETER[\"semi_minor\", 6356752.314140356]], PARAM_MT[\"Geocentric_To_Ellipsoid\", PARAMETER[\"dim\", 2], PARAMETER[\"semi_major\", 6378137.0], PARAMETER[\"semi_minor\", 6356752.314245179]], PARAM_MT[\"Affine\", PARAMETER[\"num_row\", 3], PARAMETER[\"num_col\", 3], PARAMETER[\"elt_0_0\", 0.0], PARAMETER[\"elt_0_1\", 1.0], PARAMETER[\"elt_1_0\", 1.0], PARAMETER[\"elt_1_1\", 0.0]]]";
16
        private static final String TRANS_SOURCE_25830 = "EPSG:25830";
17
        private static final String TRANS_TARGET_4326 = "EPSG:4326";
18

    
19
        @Override
20
        protected CRSCatalogManager createProjectionManager() {
21
                return new GtCRSCatalogManager();
22
        }
23

    
24
        @Override
25
        protected String getAuthorityName() {
26
                return "EPSG";
27
        }
28

    
29
        @Override
30
        protected String getCode() {
31
                return "EPSG:23030";
32
        }
33

    
34
        @Override
35
        protected String getSearchString() {
36
                return "WGS";
37
        }
38

    
39
        @Override
40
        protected String getCoordinateReferenceSystemWKT() {
41
                return EPSG25830_WKT;
42
        }
43

    
44
        @Override
45
        protected String getCoordinateTransformationWKT() {
46
                return WKT_25830_TO_4326;
47
        }
48
        
49
        @Override
50
        protected String getCoordinateTransformationSource() {
51
                return TRANS_SOURCE_25830;
52
        }
53

    
54
        @Override
55
        protected String getCoordinateTransformationTarget() {
56
                return TRANS_TARGET_4326;
57
        }
58
           
59
    /**
60
     * Test method
61
     * {@link org.gvsig.proj.catalog.CRSCatalogManager#getTransformationDefinition(String, CRSDefinition, CRSDefinition)}
62
     * for a well-known ntv2 transformation
63
     */
64
    public void testNTv2Grid() throws Exception {
65
            
66
            String transCode = "EPSG:15932";
67
        CRSDefinition sourceCrs =
68
            manager.getCRSDefinition("EPSG:4230");
69
        CRSDefinition targetCrs =
70
                manager.getCRSDefinition("EPSG:4258");
71
        TransformationDefinition transDef = manager.getTransformationDefinition(transCode);
72
        assertNotNull(transDef);
73
        assertNotNull(transDef.getName());
74
        assertEquals(transCode, transDef.getIdentifier());
75
        assertEquals(sourceCrs, transDef.getSourceDefinition());
76
        assertEquals(targetCrs, transDef.getTargetDefinition());
77
        assertEquals(getAuthorityName(), transDef.getAuthorityName());
78
    }
79
    
80
    /**
81
     * This test should be moved to TransformationDefinitionTests class!!!
82
     * 
83
     * Tests the instantiation of TransformationDefinition and ensures some basic information is available
84
     * for a set of coordinate operations using heterogeneous methods
85
     */
86
    public void testTransformationDefinition() throws Exception {
87
            ArrayList<String> codesToFind = new ArrayList<String>();
88
            codesToFind.add("EPSG:1632"); // 7-params
89
            codesToFind.add("EPSG:15932"); // NTv2 grid
90
        CRSDefinition sourceCrs =
91
            manager.getCRSDefinition("EPSG:23030");
92
        CRSDefinition targetCrs =
93
                manager.getCRSDefinition("EPSG:4258");
94
        testTransformationDefinition(sourceCrs, targetCrs, codesToFind);
95
        
96
            codesToFind = new ArrayList<String>();
97
            codesToFind.add("EPSG:1633"); // 7-params
98
            codesToFind.add("EPSG:15933"); // NTv2 grid
99
        sourceCrs =
100
            manager.getCRSDefinition("EPSG:23030");
101
        targetCrs =
102
                manager.getCRSDefinition("EPSG:4326");
103
        testTransformationDefinition(sourceCrs, targetCrs, codesToFind);
104

    
105
    }
106
    
107
    protected void testTransformationDefinition(CRSDefinition sourceCrs, CRSDefinition targetCrs, ArrayList<String> codesToFind) throws Exception {
108
        List<TransformationDefinition> transDefs = manager.getCoordinateTransformations(sourceCrs, targetCrs);
109
        for (TransformationDefinition transDef: transDefs) {
110
            assertNotNull(transDef);
111
            assertNotNull(transDef.getName());
112
            System.out.println(transDef.getName());
113
            if (transDef.getIdentifier()!=null && codesToFind.contains(transDef.getIdentifier())) {
114
                    codesToFind.remove(transDef.getIdentifier());
115
            }
116
            else {
117
                    for (String code: new ArrayList<String>(codesToFind)) {
118
                            if (transDef.getName().contains(code)) {
119
                                    codesToFind.remove(code);
120
                            }
121
                    }
122
            }
123
            assertEquals(sourceCrs, transDef.getSourceDefinition());
124
            assertEquals(targetCrs, transDef.getTargetDefinition());
125
        }
126
        assertEquals(codesToFind.size(), 0);
127
    }
128
    
129
    /**
130
     * Test method
131
     * {@link org.gvsig.proj.catalog.CRSCatalogManager#getTransformationDefinition(String, CRSDefinition, CRSDefinition)}
132
     * for a well-known transformation
133
     */
134
    public void testTransformation() throws Exception {
135
            String transCode = "EPSG:1632";
136
        CRSDefinition sourceCrs =
137
            manager.getCRSDefinition("EPSG:4230");
138
        CRSDefinition targetCrs =
139
                manager.getCRSDefinition("EPSG:4258");
140
        TransformationDefinition transDef = manager.getTransformationDefinition(transCode);
141
        assertNotNull(transDef);
142
        assertEquals(transCode, transDef.getIdentifier());
143
        assertEquals(sourceCrs, transDef.getSourceDefinition());
144
        assertEquals(targetCrs, transDef.getTargetDefinition());
145
        assertEquals(getAuthorityName(), transDef.getAuthorityName());
146
    }        
147
}