Adrian Custer a écrit :
*) In gt2-migrate.jar, what's org.geotools.gui.swing.MapPaneImpl ?
This seems like an unrelated effort to MapPane. However the
names suggest that the second is an interface and the first its
implementation. Is this simply an older effort?
Yes, the rendering engines (and as a side effect the various MapPane
flavors) are in a somewhat chaotic state right now. The current state is
largely the result of unsychronized historical efforts, and I'm
partially reponsible for that. There is the problem:
* In the begining of Geotools (back in 2002), the intended design was:
1) Provide a set of implementation-neutral interfaces. It was
called "module core" (geotools-core.jar).
2) Provide an implementation of those interfaces. The initial
convention was that implementations would have an "Impl" suffix.
So "MapPaneImpl" was intented to be an implementation of some
"MapPane" interface to be defined in "geotools-core".
So we were supposed to create a set of interfaces for rendering, widgets
and tools (among other interfaces like Feature, CRS, etc.). The effort
on the widgets side was largely driven by Cameron. Unfortunatly,
creating a good set of widgets interfaces (in general, not just GIS
widgets) is a very difficult task (as indicated by the vast amount of
different widgets API in C/C++, Java and almost any language), and we
failed to find an agreement about what the interfaces should looks like.
So we were faced to a kind of fork:
* Cameron did a very great effort in creating widgets interfaces, and
provided a MapPaneImpl in this spirit. This MapPaneImpl target the
lite-renderer (now called "streaming renderer"), a renderer which is
well integrated to Geotools right now.
* In 2002, an independent project ("Seagis") has been merged with
Geotools. Sesgis helped to fill some Geotools holes in the CRS and
GridCoverage side. But it conflicted with Geotools on the rendering
side. Seagis had his own renderer (now called "J2D-renderer"), which
totally ignore Geotools's Feature, Style and the like, since it has
been initially developped in an independent project. At the time it
has been merged, J2D-renderer provided better performances than
lite-renderer when the same map is rendered many time in a widget,
at the cost of greater memory usage. This better performance was a
reason why we lived with the J2D-renderer / lite-renderer duplication
for a while. But today (3 years later), lite-renderer performances
have been improved and the situation need to be reevaluated. In my
mind, J2D-renderer still have great value, providing that we perform
a major refactoring of it (more on it below).
Since 2002, the situation has evolved. The GeoAPI project started. It
was initially an attempt to move "geotools-core" out of Geotools, in
order to improve the chance to get the API accepted outside Geotools.
Then we managed to get support from OpenGIS, and a compagny (Polexis,
now SYS Technologies) did a very great job of defending GeoAPI at OGC.
GeoAPI is now an official "working group" in the Open Geospatial
Consortium, largely thanks to Polexis efforts. Polexis also extended
GeoAPI with their GO-1 specification, which provides interfaces for...
widgets. Exactly the kind of thing that we tried to do in 2002.
So we have 2 renderers in Geotools. One of them ignores many Geotools
objects, because it has been initially developped in an independent
projects. Both renderers ignore GO-1, because both of them were
developped before the GeoAPI projects.
The mess was still worst than that one years ago. The CRS framework
(Coordinate Reference System) in Geotools were initially derived from
OGC's O1-009.pdf document ("Coordinate system transformation services
implementation specification"). But this specification is now deprecated
and replaced by ISO 19111. Same applies to geometries ("Simple
Features"), which should be replaced by ISO 19123. Same applies again to
"Grid Coverage implementation specification"), which is replaced by ISO
19123.
Why so much legacy OpenGIS specifications are now deprecated? Partially
for political reasons. A few years ago, the OpenGIS consortium and the
ISO (International Standards Organisations) was not really working
together. I don't know what the contentious was, but they were more like
concurrents than partners. The consequence was two sets of concurent
specifications for the same thing: OGC and ISO. Then a new management
team replaced the previous one at OGC, and the new team managed to
improves the relations between OGC and ISO. Now they are harmonizing
their specifications, which means in many case dropping the legacy OGC
specification in favor of the ISO equivalent.
The consequence in Geotools was the deprecation of the whole
org.geotools.cs/ct/pt/cv/gc/gp packages (among others), and the creation
of brands new packages implementing the new ISO interfaces. But this
refactoring is a lot of work. We finished CRS around april 2005, but
can't delete the old deprecated packages yet because some legacy code
has not yet been ported (e.g. the legacy j2d-renderer). The port of Grid
Coverage packages is a work in progress. The port of geometries has not
yet started (for now we still use JTS).
So the state of affair is:
CRS : from legacy OGC to ISO 19111: done.
Grid Coverage : from legacy OGC to ISO 19123: in progress.
Geometries : from JTS to ISO 19107: not started.
Renderer : from Geotools to GO-1 : not started.
The Geometries and Renderer topics are in discussion. Some point out
that ISO 19107 is very complex (much more than JTS). Some others have
doupt about GO-1 suitability for rendering. We need more investigation
on those two topics.
In conclusion, we are aware that an unfortunate chaos currently exists
in Geotools. We are trying to put some order in that, but this is a long
term effort (at least one year).
It was my 2-cents about rendering. For the questions about
DefaultMapContext and DefaultFeatureCollection, I don't know the answers.
Martin.
-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server.
Download it for free - -and be entered to win a 42" plasma tv or your very
own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
Geotools-gt2-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users