Package org.geotools.renderer.j2d

Couches ? afficher sur une carte ? l'aide de Java2D.

See:
          Description

Class Summary
GeoMouseEvent An event which indicates that a mouse action occurred in a map component.
Hints Deprecated. Replaced by the set of hints in org.geotools.display.canvas.AbstractCanvas as part of the port of J2D-renderer to the new GO-1 based API.
ImageType Deprecated. Replaced by org.geotools.display.canvas.ImageType.
LegendPosition Position of a legend relative to the widget's bounds.
MarkIterator Provides the mechanism for RenderedGridMarks layer to return the appearance of their marks.
MouseCoordinateFormat Formateurs des coordonn?es point?es par le curseur de la souris.
RenderedGeometries A layer for a GeometryCollection object.
RenderedGridCoverage A layer for rendering a grid coverage.
RenderedGridMarks Renderer grid coverage data as marks.
RenderedLayer Deprecated. Replaced by org.geotools.display.canvas.GraphicPrimitive2D as part of the port of J2D-renderer to the new GO-1 based API.
RenderedLayerFactory A factory creating RenderedLayers from Features and Styles.
RenderedLegend Base class for legends painted at fixed location in the widget area.
RenderedMapScale A map scale in linear units (for example kilometres) to be painted over others layers.
RenderedMarks A set of marks and/or labels to be rendered.
Renderer Deprecated. Replaced by org.geotools.display.canvas.BufferedCanvas2D as part of the port of J2D-renderer to the new GO-1 based API.
RenderingContext Deprecated. Replaced by org.geotools.display.canvas.RenderingContext as part of the port of J2D-renderer to the new GO-1 based API.
SLDRenderedGeometries A RenderedGeometries layer that can process styles (will use device space coordinates for style rendering)
StyledMapRenderer A renderer for rendering .
StyledMark  
StyledShapePainter A simple class that knows how to paint a Shape object onto a Graphic given a Style2D.
TransformedShape Apply an arbitrary AffineTransform on a Shape.
 

Package org.geotools.renderer.j2d Description

Couches ? afficher sur une carte ? l'aide de Java2D. Ces couches peuvent ?tre des points indiquant les positions des stations, des fl?ches de courants, des ellipses de mar?es, des images satellitaires, des courbes de pressions, l'?chelle de la carte, des fronti?res g?opolitiques, des villes, etc. Comme cette biblioth?que ne peut pas embrasser toutes les ?tendues des possibilit?s, les quelques classes qu'elle propose sont con?ues de fa?on ? faciliter autant que possible la t?che du programmeur qui voudrait les ?tendre. Le fonctionnement de ce paquet pr?sente quelques similitudes avec les composantes AWT, qui servent ? construire une interface utilisateur. Pour mieux comprendre le fonctionnement de ce paquet, il est utile de faire un parall?le entre celui-ci et AWT. Cette documentation suppose que le lecteur est familier avec le paquet java.awt. Une attention toute particuli?re devrait ?tre apport?e aux syst?mes de coordonn?es des objets Graphics2D.

 

Rappel de quelques notions de AWT

Une application fen?tr?e contient une liste de composantes formant l'interface utilisateur. Chaque type de composante (bouton, barre de d?filement, etc.) est repr?sent?e par une classe sp?cialis?e (Button, Scrollbar, etc.) qui d?rive obligatoirement de la classe Component. Quand le syst?me a d?termin? qu'il faut redessiner une composante, il appelle automatiquement la m?thode paint(...) de celle-ci. Aux m?thodes paint(...) de chacune des composantes, le syst?me transmet un m?me objet Graphics2D temporaire qu'il aura pr?alablement cr?? et configur? comme suit:

Origine (0,0) des axes: Coin sup?rieur gauche de l'?cran ou du papier d'imprimante.
Direction des axes: Les x croissent vers la droite et les y vers le bas.
Unit?s des axes: Les pixels (sorties ? l'?cran) ou environ 1/72 de pouce (sorties ? l'imprimante).
?paisseur des lignes: Un pixel (sorties ? l'?cran) ou environ 1/72 de pouce (sorties ? l'imprimante).

Tableau 1: Configuration de Graphics2D lors du tra?age des composantes AWT

Cette configuration convient tr?s bien ? l'?criture de texte. Ainsi, un texte de 12 unit?s de haut aura une hauteur de 12 pixels ? l'?cran ou de 1/6 de pouces ? l'impression. Les m?thodes paint(...) peuvent changer temporairement la configuration de Graphics2D lors d'un tra?age, mais doivent le remettre dans son ?tat initial (tableau 1) lorsqu'elles se terminent.

 

Notions de org.geotools.renderer.j2d calqu?es sur celles de AWT

Un objet Renderer peut contenir une liste de couches repr?sentant les informations que l'on place sur une carte. Chaque type de couche (stations, ?chelle de la carte, etc.) est repr?sent? par une classe sp?cialis?e (RenderedMarks, RenderedMapScale, etc.) qui d?rive obligatoirement de la classe RenderedLayer. Quand le syst?me a d?termin? qu'il faut redessiner une couche, il appelle automatiquement la m?thode paint(...) de celle-ci. Aux m?thodes paint(...) de chacune des couches, le syst?me transmet un m?me objet Graphics2D temporaire qu'il aura pr?alablement cr?? et configur? comme suit:

Origine (0,0) des axes: D?pend de la projection cartographique en cours. Souvent en dehors de la r?gion visible de la carte.
Direction des axes: Les x croissent vers la droite et les y vers le haut, comme en g?om?trie.
Unit?s des axes: Habituellement en m?tres sur le terrain (et non en m?tres sur l'?cran!), on en degr?s de longitude/latitude.
?paisseur des lignes: D?pend de la r?solution de la carte. Peut ?tre de l'ordre de 50 m?tres par exemple.

Tableau 2: Configuration de Graphics2D lors du tra?age des couches d'une carte

Cette configuration convient tr?s bien au tra?age de couches cartographiques. Elle permet de travailler avec les dimensions r?elles des constructions sans se soucier du facteur d'?chelle. Toutefois, elle ne convient pas du tout ? l'?criture de texte. Par exemple, un texte de 12 unit?s de haut sera interpr?t? comme ayant une hauteur de 12 m?tres. Pour une carte d'?chelle 1:50 000, des lettres de 12 m?tres appara?tront ? l'?cran comme un point de dimension infime. Le programmeur peut changer temporairement la configuration de Graphics2D (par exemple pour ?crire du texte), mais doit le remettre dans son ?tat initial (tableau 2) lorsqu'il aura termin?.

 

Rappel de quelques notions sur les transformations affines

Pour convertir en pixels des coordonn?es exprim?es selon un syst?me d'unit?s quelconque, Java2D utilise une transformation affine repr?sent?e par la classe AffineTransform. En gros, une transformation affine est une matrice 3×3. En pla?ant dans cette matrice les bons coefficients, on peut obtenir n'importe quelles combinaisons d'?chelles, translations, rotations et cisaillements. Dans notre cas particulier, nous utilisons cette matrice pour convertir en pixels des coordonn?es exprim?es en m?tres.

La classe AffineTransform fournit un ensemble de m?thodes permettant d'appliquer des transformations sur cette matrice sans n?cessairement conna?tre les math?matiques sous-jacentes. Par exemple la m?thode rotate(...) modifiera les termes de la matrice 3×3 pour y ajouter l'effet d'une rotation d'un angle quelconque. Notons au passage une identit? qui se r?v?lent parfois pratique:

et sont invariants sous rotations.

En l'absence de rotation ou de cisaillement, les termes m01 et m10 sont nuls. Restent alors les termes m00 et m11, qui nous indiquent l'?chelle de la carte telle qu'appliqu?e par la transformation affine. Dans cette situation simplifi?e on obtient donc les relations suivantes:

      =      m00      =      AffineTransform.getScaleX()

      =      m11      =      AffineTransform.getScaleY()



Copyright © GeoTools. All Rights Reserved.