svn-gvsig-desktop / tags / Root_v05 / libraries / libFMap / docs / Analisis_Styling.html @ 33793
History | View | Annotate | Download (8.04 KB)
1 | 2183 | fernando | <style type="text/css"> |
---|---|---|---|
2 | <!--
|
||
3 | .textoNormal {
|
||
4 | font-family: Arial, Helvetica, sans-serif;
|
||
5 | }
|
||
6 | -->
|
||
7 | </style>
|
||
8 | <body class="textoNormal"> |
||
9 | <h2>NOTA: en d:\java\reserva he dejado las pruebas de uso directo de las entidades
|
||
10 | JTS y LiteShape</h2>
|
||
11 | <h2><strong>ANÁLISIS STYLING (LEYENDAS)</strong></h2> |
||
12 | <h3>1.- Objetivos (Requisitos)</h3> |
||
13 | <p>Objetivo principal:</p> |
||
14 | <p> <strong> PERMITIR QUE EN gvSIG SE PUEDA UTILIZAR CUALQUIER TIPO DE S?MBOLO</strong></strong></p> |
||
15 | <p>Haremos una implementación de los símbolos más habituales. |
||
16 | Con "cualquier símbolo" me refiero a que dejaremos una puerta |
||
17 | abierta para que un desarrollador implemente su propio símbolo especial.</p> |
||
18 | <p>Los símbolos más habituales:</p> |
||
19 | <ol>
|
||
20 | <li>Para puntos</li> |
||
21 | <ul>
|
||
22 | <li>Círculo, cuadrado, triángulo, cruz, icono + tamaños |
||
23 | y colores</li>
|
||
24 | </ul>
|
||
25 | <li>Para L?neas</li> |
||
26 | <ul>
|
||
27 | <li>Contínua, raya-raya, raya-punto-raya, raya-punto-punto-raya, raya-cruz-raya |
||
28 | + grosores y colores.</li>
|
||
29 | </ul>
|
||
30 | <li>Para Polígonos</li> |
||
31 | <ul>
|
||
32 | <li>Relleno uniforme, sin relleno, tramado a 45º, a -45º, horizontal, |
||
33 | vertical, tramado con fondo, gradiente, con bitmap + grosores aplicados |
||
34 | al contorno y colores aplicados al tramado y al contorno.</li>
|
||
35 | </ul>
|
||
36 | <li>Para Etiquetas</li> |
||
37 | <ul>
|
||
38 | <li>Se podrá fijar la fuente, el tamaño de la fuente (en pixels |
||
39 | o coordenadas de mapa), la posición relativa de la etiqueta, si lleva
|
||
40 | halo o no, la inclinación, además de distinguir entre lo necesario |
||
41 | para etiquetar un punto, línea o polígono (ver ArcMap).</li> |
||
42 | </ul>
|
||
43 | |||
44 | </ol>
|
||
45 | |||
46 | Objetivos secundarios (algunos de ellos puede que los obviemos o postpongamos |
||
47 | el desarrollo para cuando haya tiempo. Por ejemplo, la compatibilidad con SLD |
||
48 | es discutible, ya que ahora mismo da la impresión de que ningún |
||
49 | servidor soporta SLD con garantías => No se puede probar bien): |
||
50 | <ul>
|
||
51 | <li>Guardar un símbolo definido por el usuario.</li> |
||
52 | <li>Definir símbolos compuestos de otros símbolos.</li> |
||
53 | <li>Permitir que un desarrollador cree su propio símbolo, con comportamiento |
||
54 | especial de dibujado (se trata de soportar lo que tiene MapObjects, de que |
||
55 | te puedas hacer tú (como desarrollador) tus propios símbolos. |
||
56 | Por ejemplo, para pintar una línea con una sinusoidal + cruces).</li> |
||
57 | <li>Compatible con SLD => La leyenda de este tipo se tiene que poder escribir |
||
58 | en SLD, y viceversa, un fichero SLD tiene que poder transformarse a esta leyenda.</li>
|
||
59 | <li>Que sea aplicable a capas de acceso de tipo secuencial, por si hace falta
|
||
60 | tener capas de este estilo.</li>
|
||
61 | <li>Que se pueda guardar como leyenda, para poder ser recuperada con posterioridad,
|
||
62 | tanto fuera como dentro del fichero de proyecto.</li>
|
||
63 | </ul>
|
||
64 | <h3>2.- Antecedentes.</h3> |
||
65 | <p>En FMap existe un sistema de leyendas orientado a acceso aleatorio y (en principio)
|
||
66 | una serie de leyendas basadas en un campo.</p>
|
||
67 | <p>En SLD, se puede utilizar una leyenda con acceso secuencial, fijar un símbolo |
||
68 | en base a cualquier combinación de campos y/o relaciones geométricas |
||
69 | (Filtros).</p>
|
||
70 | <p>FMap se puede ir ampliando con leyendas de todo tipo, pero al estudiar cómo |
||
71 | lo hace SLD, creo que podemos hacer algo parecido y mejorar algunas carencias.</p>
|
||
72 | <p>A su vez, el SLD también tiene una serie de limitaciones. A saber:</p> |
||
73 | <p>- No está definida la posibilidad de fijar un tamaño de símbolo |
||
74 | en coordenadas de mundo real. Esto es imprescindible para símbolos de
|
||
75 | tipo puntual y para etiquetas.</p>
|
||
76 | <p>- La forma de aplicar los símbolos es lenta (se tiene que recorrer todos |
||
77 | los símbolos, evaluando uno a uno sus condiciones para ver si se aplican
|
||
78 | o no.</p>
|
||
79 | <p>- No permite la agrupación de símbolos para formar uno complejo. |
||
80 | Se puede conseguir el efecto poniendo tantos símbolos como se quiera,
|
||
81 | pero entonces el usuario, para editar el símbolo tiene que editar cada
|
||
82 | uno de los símbolos que lo forman (tanto a nivel gráfico como |
||
83 | sus filtros). Esto afecta a la hora de interactuar con el usuario.</p>
|
||
84 | <h3>3.- Aspectos a tener en cuenta (Funcionalidades):</h3> |
||
85 | <p> Un directorio con símbolos predefinidos (para puntos, líneas, |
||
86 | polígonos y textos).</p> |
||
87 | <p>Si no se encuentra la imágen que tenemos que emplear con el símbolo, |
||
88 | lanzar una excepción de tipo "File not found", con el nombre |
||
89 | del fichero que se busca.</p>
|
||
90 | <p>Para evaluar si un símbolo se aplica o no, se puede emplear el mecanismo |
||
91 | de Filtros definido en geoAPI. Un filtro toma una Feature (Geometría
|
||
92 | + atributos), la evalúa y si es cierta la condición, llama al |
||
93 | dibujado, si no, no. Esto lo que permite es que podamos asignar un símbolo
|
||
94 | en base a criterios de todo tipo (basado en el valor de un campo, en los valores |
||
95 | de 2 campos o más, en un criterio espacial (por ejemplo, poner un símbolo |
||
96 | a todos los polígonos que contengan un punto, o que su perímetro |
||
97 | sea mayor que X).</p>
|
||
98 | <p>El interfaz con el usuario es importantísimo. Un usuario debe poder |
||
99 | definir el símbolo con facilidad, tanto su parte gráfica como |
||
100 | la parte de filtro, aquella que vamos a usar para definir si un símbolo
|
||
101 | se ha de aplicar a una feature o no.</p>
|
||
102 | <p>El usuario ha de poder escoger entre los símbolos predefinidos por nosotros |
||
103 | y los que pueda definir otro plugin. (Un símbolo se definirá por |
||
104 | un archivo dentro del directorio de símbolos, o por una clase que implemente
|
||
105 | el interfaz IFSymbol. Estas clases se podrán registrar de forma parecida
|
||
106 | al mecanismo actual de drivers). Para que un usuario pueda especificar las características
|
||
107 | de estos nuevos símbolos, deberemos implementar un mecanismo que le permita
|
||
108 | al desarrollador especificar qué panel va asociado con qué símbolo.</p> |
||
109 | <p>Lo mismo pasa con los filtros. Nosotros implementaremos los más comunes, |
||
110 | pero dejaremos la puerta abierta al resto.</p>
|
||
111 | <p>Para mostrar los símbolos de una capa mixta, en lugar de mostrarlos |
||
112 | todos en la misma línea (dibujar un rectángulo, línea, |
||
113 | punto y texto), los vamos a dibujar cada uno con su línea, y solo si
|
||
114 | existen. Es decir, si hemos definido una leyenda sobre un tema de DXF, pondremos |
||
115 | un icono en el tema que indica que es mixto, y unos símbolos por defecto
|
||
116 | para polígonos, líneas, puntos y texto, uno debajo del otro. Si |
||
117 | definimos algún símbolo más a la leyenda, aparecerá |
||
118 | encima de los que son por defecto. Si modificamos la leyenda por defecto quitando |
||
119 | alguno de esos símbolos, ya no aparecerán en el TOC o la leyenda |
||
120 | del Layout, o donde toque.</p>
|
||
121 | <p>También daremos la posibilidad de "habilitar/deshabilitar" |
||
122 | (o visíble/invisible) un símbolo pinchando sobre el símbolo |
||
123 | en el TOC. Esto es muy útil porque cuando quieres ver solo un determinado
|
||
124 | tipo de entidades, las puedes poner invisibles sin tocar la leyenda, y puedes |
||
125 | volver a la leyenda habitual fácilmente, sin tener que recargar una leyenda
|
||
126 | o fijar colores, tipos de línea, etc. La idea es, por ejemplo, mostar
|
||
127 | la descripción del símbolo en gris, o tachado en el TOC. O con |
||
128 | un icono de ojo abierto/cerrrado, como lo hace Flash. En el Layout, ponerlo |
||
129 | como si no estuviera. Esta funcionalidad no es prioritaria, desarrollarla al |
||
130 | final, pero tenerla en cuenta en el diseño.</p> |
||
131 | <p>El usuario podrá tener una serie de símbolos "favoritos", |
||
132 | o que use con más frecuencia. Tampoco es prioritario. Desarrollarlo al
|
||
133 | final, o guardar estas tareas para algún becario o colaborador que quiera
|
||
134 | empezar. </p>
|
||
135 | <p> </p> |
||
136 | <p> </p> |