From: Martin D. <mar...@te...> - 2003-03-28 10:10:38
|
Hello Rueben Rueben Schulz a =E9crit: > Attached is my copy of Simple_TestScript with the tests I did for the > datum shifts. Feel free to include this with the cts testing. I also > have a transverse mercator test that failed, but will leave that out > until I am working on that projection.=20 Wonderful!!! I will commit this Simple_TestScript today and lets peoples=20 know when it will be done. Many thanks for all yours work! > 1) where is the best place to put constants shared by mercator and the > spheroid inner class. Right now I have 2 copies of them, because I > cannot think of a better way. Mercator is the right place. Just declare it 'protected' instead of=20 'private' and remove the declaration in the 'Spherical' inner class. Add=20 the following constructor to 'Mercator': /** * Construct a Mercator projection with an explicit {@link #ak0} * parameter. This constructor is used for the initialisation of * spherical projection only. */ private Mercator(final Projection parameters, final double ak0) throws=20 MissingParameterException { super(parameters); this.ak0 =3D ak0; } The 'Spherical' constructor will then become: protected Spherical(final Projection parameters) throws=20 MissingParameterException { super(parameters, scaleFactor * semiMajor*Math.cos(latitudeTrueScale= )); } I removed the Math.abs(latitudeTrueScale) call since this formula use=20 'latitudeTrueScale' in Math.cos(...) only, and cos(theta) =3D=3D cos(-the= ta). > 2)should the 2SP mercator case be handled separately, the way it is for > Lambert? Right now this class handles both 1SP and 2SP cases.=20 Maybe. I have to admit that I have not looked deeply to the formulas for=20 1SP. What are the differences in the formulas? > 3)does the Sphere inner class need to override Provider as well, and > will this require a new provider to be listed in MathTransformFactory t= o > use it? No. Instead, the existing Provider need to be updated. Replace the=20 following line in the 'create' method: return new Mercator(parameters); By: if (isSpherical(parameters)) { return new Spherical(parameters); } else { return new Mercator(parameters); } I will commit the 'isSpherical(Projection)' convenience method in a few=20 minutes (right now it doesn't exists). > I will start on Lambert once I get these issues and a bit more testing > done. Great!!! Martin. |