This coordref test fails!!
--------------------------
Key: GEOT-1428
URL: http://jira.codehaus.org/browse/GEOT-1428
Project: GeoTools
Issue Type: Test
Components: core referencing
Affects Versions: 2.3.3
Environment: Windows XP Pro, JAI 1.1.3, Java 1.5.12
Reporter: Rafal Glowinski
Assignee: Martin Desruisseaux
Another test case for Poland. This one fails :(
Transformation of point 304 from EUREF-POL point number 304
(http://www.cbk.waw.pl/zgp/proj/eurefpol_pl.html#Tab) given in EPSG:2180
Coordref System to EPSG:2173 CoordrefSystem. Both of those systems are local
for Poland.
1) Transformation: EPSG:2180 ----> EPSG:2173
Point 304[EPSG:2180] (652629.45871, 310593.99113)
Point 304[EPSG:2173] (6012822.17515, 3443105.22912)
Point 304[RESULT] (6012784.025, 3442979.07)
The difference is not large: (38.15015, 126.15912)
2) Reverse Transformation: EPSG:2173:Result ----> EPSG:2180
Point 304[EPSG:2173:RESULT] (6012784.025, 3442979.07)
Point 304[EPSG:2180:RESLT] (652629.459, 310593.991)
So the transformation can be reveresed - thats a good news, but why the results
are so inaccurate?
The JAVA Code:
try
{
String csEPSG_2180 = "PROJCS[\"ETRS89 / Poland CS92\",
" +
"GEOGCS[\"ETRS89\", "+
"DATUM[\"European_Terrestrial_Reference_System_1989\", " +
"SPHEROID[\"GRS 1980\", 6378137.0, 298.257222101,
AUTHORITY[\"EPSG\",\"7019\"]], " +
"AUTHORITY[\"EPSG\",\"6258\"]], " +
"PRIMEM[\"Greenwich\", 0.0, AUTHORITY[\"EPSG\",\"8901\"]], " +
"UNIT[\"degree\", 0.017453292519943295], " +
"AXIS[\"Lon\",
EAST], " +
"AXIS[\"Lat\",
NORTH], " +
"AUTHORITY[\"EPSG\",\"4258\"]], " +
"PROJECTION[\"Transverse_Mercator\"], " +
"PARAMETER[\"central_meridian\", 19.0], " +
"PARAMETER[\"latitude_of_origin\", 0.0], " +
"PARAMETER[\"scale_factor\", 0.9993], " +
"PARAMETER[\"false_easting\", 500000.0], " +
"PARAMETER[\"false_northing\", -5300000.0], " +
"UNIT[\"m\",
1.0], " +
"AXIS[\"x\",
NORTH], " +
"AXIS[\"y\",
EAST], " +
"AUTHORITY[\"EPSG\",\"2180\"]]";
String csEPSG_2173 = "PROJCS[\"Pulkovo 1942(58) /
Poland zone III\", " +
"GEOGCS[\"Pulkovo 1942(58)\", " +
"DATUM[\"Pulkovo_1942_58\", " +
"SPHEROID[\"Krassowsky 1940\", 6378245.0, 298.3, AUTHORITY[\"EPSG\",\"7024\"]],
" +
"TOWGS84[33.4,
-146.6, -76.3, -0.359, -0.053, 0.844, -0.84], " +
"AUTHORITY[\"EPSG\",\"6179\"]], " +
"PRIMEM[\"Greenwich\", 0.0, AUTHORITY[\"EPSG\",\"8901\"]], " +
"UNIT[\"degree\", 0.017453292519943295], " +
"AXIS[\"Lon\",
EAST], " +
"AXIS[\"Lat\",
NORTH], " +
"AUTHORITY[\"EPSG\",\"4179\"]], " +
"PROJECTION[\"Oblique_Stereographic\"], " +
"PARAMETER[\"central_meridian\", 17.00833333333333], " +
"PARAMETER[\"latitude_of_origin\", 53.583333333333336], " +
"PARAMETER[\"scale_factor\", 0.9998], " +
"PARAMETER[\"false_easting\", 3501000.0], " +
"PARAMETER[\"false_northing\", 5999000.0], " +
"UNIT[\"m\",
1.0], " +
"AXIS[\"x\",
NORTH], " +
"AXIS[\"y\",
EAST], " +
"AUTHORITY[\"EPSG\",\"2173\"]]";
/*
CRSAuthorityFactory factory =
FactoryFinder.getCRSAuthorityFactory("EPSG", null);
CoordinateReferenceSystem crs_src =
factory.createCoordinateReferenceSystem("EPSG:2180");
CoordinateReferenceSystem crs_dest =
factory.createCoordinateReferenceSystem("EPSG:2173");
*/
CRSFactory crsFactory =
FactoryFinder.getCRSFactory(null);
CoordinateReferenceSystem crs_src =
crsFactory.createFromWKT(csEPSG_2180);
CoordinateReferenceSystem crs_dest =
crsFactory.createFromWKT(csEPSG_2173);
Hints hints = new Hints(Hints.LENIENT_DATUM_SHIFT,
Boolean.TRUE);
// przeliczenia
DefaultCoordinateOperationFactory trFactory = new
DefaultCoordinateOperationFactory(hints);
/*
* 1992 -> 1965/3
* 304 (652629.45871, 310593.99113)
*/
DirectPosition pt304_1992 = new
DirectPosition2D(crs_src, 652629.45871, 310593.99113);
System.out.println("Before tranform: " +
pt304_1992.toString());
CoordinateOperation o1992_to_1965_3 =
trFactory.createOperation(crs_src, crs_dest);
DirectPosition pt304_1965_3 =
o1992_to_1965_3.getMathTransform().transform(pt304_1992, null);
System.out.println("After tranform: " +
pt304_1965_3.toString());
/*
* Reverse Transform
* 1965/3 (Result) -> 1992
*/
CoordinateOperation o1965_3_to_1992 =
trFactory.createOperation(crs_dest, crs_src);
pt304_1992 =
o1965_3_to_1992.getMathTransform().transform(pt304_1965_3, null);
System.out.println("After reverse tranform: " +
pt304_1992.toString());
int a = 0;
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Geotools-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-devel