From: Martin Desruisseaux <martin.desruisseaux@te...> - 2002-06-17 14:24:14
A few weeks ago, I told that I would provide some screenshots of my
current project. There is some:
It make use of GridCoverage package which is now part of Geotools. Some
rendering code have already moved to Geotools (e.g. ZoomPane). More may
move later. Screenshots don't show that, but all image loading and some
amount of processing are performed in background threads.
There is some screenshots of maps produced by the org.geotools.renderer
module. Technically, it can renderer marks and many isolines, but my
focus lately was on tuning the rendering of a single isoline.
* Can automatically reassamble polygons digitalized from many maps.
I don't know for shape files, but my primary source of vector data
is the GEBCO digital atlas (marine bathymetry). It is impossible to
fill polygons produced by GEBCO, because they are usually brokent in
many parts (see figure 1). The PolygonAssembler class in the rendering
module can automatically reassemble such polygon in order to fill
them. Note that PolygonAssembler also complete automatically the
line along the map's border.
* Figure 2 is a screenshots of the Mediterranee after PolygonAssembler
work. Trying to fill this map without running PolygonAssembler first
give a totally chaotic output.
* Figure 2 is in plain lat/lon. Figure 3 is the same map projection
in a stereographic projection. Both maps (lat/lon and stereographic)
can be displayed in the same time. Data are *not* copied; the same
underlying polygon's data are shared. Projection can be changed at
* Note the curved line among the border. They are not made from a
sucession of small line; the renderer has computed (well, estimated
using an interpolation) the quadratic equation. In other words,
borders are java.awt.geom.QuadCurve2D.
* In order to make the curved border more obvious, figure 4 is an other
map with intentionnaly stronger deformations.
* Rendering the mediterranean map in stereographic projection
(resolution = 250 meters) took 0.75 seconds the first time and
0.25 seconds next times on a Pentium 800 Mhz machine.
* Support scroll bars (optional).
* Support zoom in, zoom out, translation and rotation through keyboard,
mouse wheel, mouse selection or contextual menu. Figure 4 show a
* Fully localized in English and French, partially localized in Spanish
and Greek. If someone want to add, said, an Italian translation, just
advise me please.
* Support glass pane (Figure 2).
* Status bar (optional) showing mouse coordinates. The mouse coordinates
can be expressed in any arbitrarycoordinates system, providing that a
transformation exist from the rendering CS. All figure show
coordinates in lat/lon, even the figure for projected map (i.e.
stereographic coordinates are transformed in geographic coordinates
before to be displayed in the status bar).
Future work: There is one more optimization that I have to commit. Some
other optimization are possible (e.g. multi-thread rendering), but I
will defer them to later.
When I will have finish to commit my last piece of code, the next work
(probably the most important on an usuability point of view) will be to
change the API in order to use Feature, Style, etc.