Simone Giannecchini a écrit :
> Yeah, I would like to have a bit more details about what you did

 From memory. I don't remember all the work done.


Changes in AuthorityBackedFactory
---------------------------------
This class is in charge of looking for transformations in the EPSG database 
using authority codes. 
Added the following steps:

   - When a transformation has been found in the database, check the source and 
target CRS
     *as they are defined in the database* (not as the user specified - we 
can't trust him
     since the axis order may be modified).

   - If the source CRS in the database disagree with the user-supplied source 
CRS (for the
     same authority code), get the transformation from the "user-supplied 
source CRS" to the
     "database supplied source CRS". Note that for this particular step, 
AuthorityBackedFactory
     itself must be disabled (I means, Geotools must not try to looks for the 
above-cited
     transformation in the EPSG database - it must figure it out by itself 
using the usual
     DefaultCoordinateOperationFactory).

   - Concatenate (prepend) the transformation found in the above step with the 
transformation
     found in the EPSG database.

   - Do the same process for "database supplied target CRS" to "user-supplied 
target CRS".



Changes in Hints, AbstractFactory, etc.
---------------------------------------
- Added FORCE_LONGITUDE_FIRST_AXIS_ORDER, FORCE_STANDARD_AXIS_DIRECTIONS and
   FORCE_STANDARD_AXIS_UNITS hints. I suspect that most users will care only
   about the first of those hints.

- Solved a few bugs in hints management by FactoryRegistry, in order to make
   the above-cited hints to actually work.

- Added 'toString()', 'equals()' and 'hashCode()' methods in AbstractFactory,
   for making debugging a little bit easier.



Changes in OrderedAxisAuthorityFactory
--------------------------------------
- Deprecated the 'register' static method. Use the system property instead (see 
next
   point below).

- Added a LongitudeFirstFactory subclasses (in 
org.geotools.referencing.factory.epsg).
   This subclass is specifically about (longitude,latitude) axis order from 
EPSG database.
   LongitudeFirstFactory is registered like any other authority factories, with 
a priority
   level slightly different than the EPSG DefaultFactory:

     * By default, LongitudeFirstFactory has a lower priority level than 
DefaultFactory.
       This means that the default factory should be preferred by FactoryFinder 
if no
       implementation hints were explicitly specified.

     * If the org.geotools.referencing.forceXY system property is defined to 
'true', then
       LongitudeFirstFactory has a upper priority level than DefaultFactory. 
The check for
       this system property is performed when FactoryFinder loads 
LongitudeFirstFactory
       (it should be when the user invoke 
FactoryFinder.getCRSAuthorityFactory(...) for
       the first time).



Changes in FactoryRegistry, FactoryGroup, etc.
----------------------------------------------
The addition of LongitudeFirstFactory as a CRSAuthorityFactory service provider 
revealed some bugs 
in FactoryRegistry (used by FactoryFinder). The bugs was caused by cyclic 
dependencies, which caused 
infinite loops (with recursive method calls). I will not go in details, but one 
cause for cyclic 
dependencies was the CoordinateOperationFactory dependency in FactoryGroup. 
This dependency has been 
removed from FactoryGroup (it should never has been added there anyway). Many 
other changes were 
done in various place of the referencing package in order to make 
FactoryRegistry more robust to 
cyclic dependencies. Actually, this cyclic dependencies problem has been the 
most difficult one I 
faced in the context of the axis order issue (more difficult than managing the 
axis order itself).



Changes in DefaultCoordinateOperation
-------------------------------------
- Improved to 'toString()' formatting. It is actually a side effect of the 
above-cited
   AuthorityBackedFactory work. It make debugging easier, and now provides more 
useful
   informations anyway.


Changes in CRS, AbstractAuthorityFactory and its friends
--------------------------------------------------------
- Added a CRS.decode(String code, boolean longitudeFirst) convenience method.
   Note: this work is not yet finished.

- Reimplemented CRS.decode on top of AllAuthoritiesFactory.

- Added a FallbackAuthorityFactory, used internally by AllAuthoritiesFactory. 
This class
   can also provides a migration path away from gt2-epsg-wkt (because the later 
provides
   some non-official EPSG code in addition to the usual ones).

- Refactored some AbstractAuthorityFactory subclasses. Better separation of 
concern
   between AuthorityFactoryAdapter and the new TransformedAutorityFactory class.


        Martin.


_______________________________________________
Geotools-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-devel

Reply via email to