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