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

Reply via email to