svn-gvsig-desktop / tags / J2ME_compat_v1_2_Build_1209 / libraries / libFMap / docs / Analisis_Styling.html @ 19509
History | View | Annotate | Download (8.17 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>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> |