svn-gvsig-desktop / tags / Root_Fmap_GisPlanet / libraries / libFMap / docs / Diseño_Styling.html @ 1826
History | View | Annotate | Download (8.7 KB)
1 |
<style type="text/css"> |
---|---|
2 |
<!--
|
3 |
.textoNormal {
|
4 |
font-family: Arial, Helvetica, sans-serif;
|
5 |
}
|
6 |
-->
|
7 |
</style>
|
8 |
<body class="textoNormal"> |
9 |
<h2><strong>DISEÑO STYLING (LEYENDAS)</strong></h2> |
10 |
<h3>1.- Descripción de la solución propuesta</h3> |
11 |
<p>Se me ocurre que en lugar de que una leyenda SLD sea una colección "plana" |
12 |
de símbolos, debería ser un árbol. De esta manera, podemos |
13 |
trabajar con símbolos complejos (compuestos de otros símbolos). |
14 |
Cuando se quiera generar el SLD a partir de una leyenda nuestra, se recorre |
15 |
el árbol en profundidad, escribiendo solo los nodos finales. Si se quiere
|
16 |
obtener la leyenda de un SLD, obtendremos un árbol "plano", |
17 |
solo con nodos finales.</p>
|
18 |
<p>La lectura/escritura de un SLD no es una tarea crítica. Da igual si |
19 |
se hace rápido o no, así que he optado por usar Geotools2, y traducir |
20 |
los símbolos que entrega la clase SLDTransformer. Con esto ya tenemos
|
21 |
un parser, y solo necesitamos traducir nuestros símbolos a los símbolos |
22 |
de GT2. Nosotros implementaremos los símbolos típicos que gestiona |
23 |
GT2, y el resto de ampliaciones, si se pueden exportar bien, y si no, se pone |
24 |
algo por defecto.</p>
|
25 |
<p>Además, no tenemos ningún servidor libre que implemente bien |
26 |
SLD todavía.</p> |
27 |
<p>El patrón escogido es el Composite => una colección de símbolos |
28 |
también implementa la interfaz del símbolo.</p> |
29 |
<p>Para que un desarrollador pueda crear un símbolo que se comporte de |
30 |
una manera especial, el símbolo debería tener una llamada para |
31 |
dibujar un shape. Por tanto, habría que cambiar el sistema de dibujado
|
32 |
un poco, que no sea una clase "FGraphicUtilities" la que dibuja, sino |
33 |
que sea el símbolo el responsable del dibujado.</p> |
34 |
<p>La idea es que a un símbolo simple le pasa el graphics, un Shape y una |
35 |
matriz de transformación, y te dibuja en el graphics. Dependiendo del
|
36 |
tipo de símbolo que sea, ya estará preparado para pintar polígonos |
37 |
con relleno, líneas, puntos o etiquetas. Para eso, montamos una herencia
|
38 |
con clases como FSymbolPolygon, FSymbolLine, FSymbolPoint, FSymbolPoint, FSymbolLabelPoint, |
39 |
FSymbolLabelLine, FSymbolLabelPolygon. Es decir, cuando creas un símbolo,
|
40 |
ya sabes para qué lo quieres (para puntos, líneas, etc).</p> |
41 |
<p>Para conseguir la extensibilidad con los símbolos, es decir, que un |
42 |
desarrollador implemente su símbolo especial, le pondremos al interfaz
|
43 |
símbolo una función que devuelva la clase de un panel que sirva |
44 |
para especificar ese símbolo. Es decir, el desarrollador suministra,
|
45 |
además del símbolo, la clase que devolverá ese símbolo. |
46 |
Esta clase será un panel extendido que devolverá el símbolo. |
47 |
A la hora de dar a escoger al usuario los símbolos que puede seleccionar,
|
48 |
miraremos los símbolos que devuelvan algo coherente (una clase instanciable)
|
49 |
con esa llamada. Si no se suministra esa clase, no damos la posiblidad de escoger |
50 |
el símbolo especial.</p> |
51 |
<p>Para cada tipo de símbolo que suministramos nosotros, daremos una clase |
52 |
panel para ese símbolo.</p> |
53 |
<p>Para aclarar más las cosas:</p> |
54 |
<p>Un símbolo tendrá una función getShapeType que indicará |
55 |
si es adecuado para renderizar puntos, líneas o polígonos. En |
56 |
función del tipo de shape de una capa, cuando le demos al botón |
57 |
de leyenda, aparecerán solo los símbolos que sean adecuados a |
58 |
ese tipo de shape. Por ejemplo, si la capa es de puntos, solo aparecerán
|
59 |
símbolos aplicables a los puntos. Si la capa es mixta, el usuario podrá |
60 |
seleccionar a qué tipo de shape le está poniendo el símbolo. |
61 |
(Un combo box con algo como "Ver símbolos para puntos", "líneas", |
62 |
"polígonos"). Dentro de la ventana de "Selector de símbolo", |
63 |
habrá una zona con los símbolos de la librería, un "preview", |
64 |
una zona de botones con los botones de OK, Cancel, Save... y Propiedades, y |
65 |
una zona de opciones comunes a todos los símbolos de la clase seleccionada.
|
66 |
Las opciones comunes son:</p>
|
67 |
<p>- Para puntos: Color, tamaño, ángulo</p> |
68 |
<p>- Para líneas: Color, ancho</p> |
69 |
<p>- Para polígonos: Fill color, outline width, outline color</p> |
70 |
<p>Cuando apretamos al botón de Propiedades de símbolo, entramos |
71 |
en otro formulario con 4 zonas: Preview, Layers y Properties. La zona de Layers |
72 |
controla los diferentes símbolos que componen el nuestro (al pintar,
|
73 |
se dibuja primero el de más abajo y se va subiendo). La zona Properties
|
74 |
empieza con un combo box llamado "Tipo de símbolo". Este combo |
75 |
se tiene que rellenar en tiempo real a partir de las clases que implementen |
76 |
el interfaz IFSymbol adecuado a lo que pretendemos dibujar. Por ejemplo, en |
77 |
ArcGis y para polígonos, este combo muestra "Gradient Fill Symbol", |
78 |
"Line Fill Symbol", "Marker Fill Symbol", "Picture |
79 |
Fill Symbol", "Simple Fill Symbol" (ordenados alfabéticamente). |
80 |
Nosotros vamos a implementar por ahora Simple Fill Symbol y Line Fill Symbol, |
81 |
pero el resto no debería costar mucho.</p> |
82 |
<p>Los tipo de símbolo para <strong>línea</strong> en ArcGis son:</p> |
83 |
<p>- Simple Line: Color, Estilo (solido, dashed, dotted, dash-dot, dash-dot-dot),
|
84 |
Grosor</p>
|
85 |
<p>- Cartographic Line: Tiene 3 pestañas (Cartographic Line, Template y |
86 |
Line Properties). En la primera pestaña puedes fijar el color, grosor
|
87 |
y "Line caps" (Butt, Round y Square) y "Line Joins" (Mitter, |
88 |
Round, Bevel). En la pestaña de template, el pattern que va a usar la
|
89 |
línea, y en la pestaña de Line Properties, el offset y los "decoradores" |
90 |
(cómo termina la línea (con flecha, círculo, etc)).</p> |
91 |
<p>- Hash Line Symbol (en realidad, se parece a una mezcla de una simple sólida |
92 |
+ otra dashed). Lo único es que la capa de dashed puede girar sus tramitos
|
93 |
con un ángulo de rotación) Creo que por ahora no hace falta implementarlo |
94 |
en gvSIG.</p>
|
95 |
<p>- Marker Line Symbol. Además de los mismo que en Cartographic Line, |
96 |
una pestaña para seleccionar el símbolo que quieres que se repita.</p> |
97 |
<p>- Picture Line Symbol. Esta la podemos implementar como una imagen que recuperas
|
98 |
de disco, y la usas para crear un TexturePaint. </p>
|
99 |
<p>Para <strong>Polígono</strong>:</p> |
100 |
<p>- Simple Fill Symbol: Una pestaña con el color de Fondo, el outline |
101 |
color, el grosor del outline y un botón para seleccionar el tipo de línea |
102 |
que abre la ventana "Symbol Selector" mostrando todos los tipos de |
103 |
línea disponibles.</p> |
104 |
<p>- Line Fill Symbol: Una pestaña con el color del tramado, 3 números |
105 |
con el ángulo, el offset y la separación, y 2 botones que llaman |
106 |
al "Symbol Selector" para seleccionar el tipo de línea a usar |
107 |
con el tramado y con el outline.</p>
|
108 |
<p>- Marker Fill Symbol. Una pestaña (no 2 como en ArcGis) con el color |
109 |
del símbolo, un botón para el tipo de símbolo a emplear, |
110 |
el outline, si lo quieres matricial o aleatorio, el offset en x e y, y la separación
|
111 |
en x e y.</p>
|
112 |
<p>- Picture Fill: Usar una imagen para montar un TexturePaint</p> |
113 |
<p>- Gradient Fill: Fijar el outline, la rampa de colores, si lo quieres linear
|
114 |
o circular y el ángulo.</p> |
115 |
<p>Para <strong>puntos</strong>:</p> |
116 |
<p>- Character Marker Symbol: 2 pestañas, una con Color, Carácter, |
117 |
Fuente, Tamaño, Ángulo, Offset y otra con la máscara, donde |
118 |
podemos fijar el halo (con o sin halo, y si es con halo, fijar el color y el |
119 |
tamaño). </p> |
120 |
<p>- Picture Marker Symbol: Escoges la imágen de un fichero, y le puedes |
121 |
fijar el tamaño. (Quizás alguna vez se puede necesitar fijar también |
122 |
la rotación y el offset).</p> |
123 |
<p>- Single Marker Symbol: Color, Estilo (Círculo, cuadrado, cruz, X, rombo), |
124 |
tamaño, use outline, outline size, offset (x e y). También con |
125 |
pestaña de máscara.</p> |
126 |
<p> </p> |
127 |
<h3>Propuesta de Diagrama de Objetos:</h3> |
128 |
<p> </p> |
129 |
<p> </p> |
130 |
<p> </p> |
131 |
<p> </p> |
132 |
<p> </p> |
133 |
<p> </p> |