Note about package organisation in "Coverage Framework Design".
Suggested changes (I realize that the first one is the most controversial. Discussion below):
| Current proposal |
My proposal |
| org.geotools.coverage.core |
org.geotools.coverage |
| org.geotools.coverage.qgrid |
org.geotools.coverage.grid.quadrilateral |
| org.geotools.coverage.hgrid |
org.geotools.coverage.grid.hexagonal |
I believe that a common practice in Java is to use the parent package as "core". For example javax.imageio is core, javax.imageio.stream, javax.imageio.metadata, etc. are specialisations. Same apply to javax.swing (core), javax.swing.table, javax.swing.tree, etc. I realize that it pose an apparent conflict with legacy coverage interfaces, but I actually believe that this is not really a problem. "Coverage Framework Design" said:
No determination of the fate of these packages has yet been made. Presumably, they will be deprecated in the first
release which contains the ISO 19123 coverage implementation, and removed in the following release. In any case, there will be a period of time during which the two implementations are required to coexist in the same namespace.
I suggest to amend the text with something like: "ISO 19123 implementation will extends the existing grid coverage implementation. All methods specific to the legacy OGC 01-004 specification, as well as some 01-001 specific interfaces, will be deprecated and removed in a future version."
The rational is that even if the specification change, I believe that a large amount of Geotools implementation would actually stay the same. At the very least, our current GridCoverage2D implementation could continue to exists as a special case of Coverage backed by a RenderedImage. I don't think that there is a need for creating a new implementation and deprecates the old one. Just add the new ISO 19123 methods in the existing implementation and remove (in a future version) the old OGC 01-004 methods. The internal mechanism wrapping a java.awt.image.RenderedImage would stay the same (with possible improvement).
Would it be possible to commit everything to SVN except the move to the core subpackage? After this commit, I would like to commit the legacy coverage interfaces to pending (we will need to do that anyway) and send my proposal for the Coverage interface transition. We could make the move to the core subpackage after that if peoples feel that it is the best thing to do after we take in account the legacy interfaces (right now, they are not taken in account in our discussion).
This proposal, like ISO 19123 itself, relies on the 19107 geometry objects. However, I do not currently know of any 19107 Java implementations. This is not a problem for the interface-only implementation, I guess, but it does make the new interfaces effectively useles until implementations for all the dependant parts are created.