Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[udig-devel] First (of many) reproject question

Hi CRS guys I have a question / testcase for you ... the code is at the end of this message.

In short I am getting very different results from the Postgis transformation code - I am sure we went over this back in the spring. I recall at the end of the day we got both systems returning with in 10cm of each other so I am probably doing something wrong. The epsg.properties file being used was generated from PostGIS so
the WKT definitions they are working from should be identical.

Now the answer may be one of:
0) I messed up
1) Switch over to the CRS system
2) The old CS objects no longer work, or parse WKT differently
4) The epsg.properties file is some how wrong

If I messed up on this one I really would like to fix things as soon as possible because all DataStores, Lite renderer and UDIG are funneling through the CRSService API. It may be that CRSService wants to go and live next to all the other CRS code,
it operates as a Facade for that module after all....

Jody Garnett

------------------------
   public void testTranform() throws Exception {
       CoordinateSystem bc = service.createCoordinateSystem("EPSG:42102");
CoordinateSystem latlong = service.createCoordinateSystem("EPSG:4269"); MathTransform transform = CRSService.reproject( bc, latlong, true ); // origional bc alberts
       Polygon poly1 = poly( new double[] {
               1187128,395268, 1187128,396027,
               1188245,396027, 1188245,395268,
               1187128,395268} );

       // transformed
       Polygon poly2 = poly( new double[] {
-123.470095558323,48.5432615620081, -123.469728946766,48.5500959221152, -123.454638288508,48.5497352036088, -123.455007082796,48.5429008916377, -123.470095558323,48.5432615620081} ); Polygon polyAfter = CRSService.transform( poly1, transform );
       System.out.println( "expected:"+ polyAfter );
System.out.println( "expected:"+ poly2 ); //assertEquals( poly2, polyAfter ); Envelope before = poly1.getEnvelopeInternal();
       Envelope after = CRSService.transform( before, transform );
assertEquals( poly2.getEnvelopeInternal(), after ); }
----------------------
Here is the output:
actual:POLYGON ((-123.47009555832284 48.54326156200811, -123.46972894676578 48.55009592211517, -123.45463828850829 48.54973520360885, -123.4550070827961 48.54290089163769, -123.47009555832284 48.54326156200811)) expected:POLYGON ((-123.470095558323 48.5432615620081, -123.469728946766 48.5500959221152, -123.454638288508 48.5497352036088, -123.455007082796 48.5429008916377, -123.470095558323 48.5432615620081))

actual:Env[-138.4474639892578 : -138.4474639892578, 44.199676513671875 : 44.199676513671875] expected:Env[-123.470095558323 : -123.454638288508, 48.5429008916377 : 48.5500959221152]


Back to the top