Statistics
| Revision:

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&Aacute;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&oacute;n de los s&iacute;mbolos m&aacute;s habituales. 
16
  Con &quot;cualquier s&iacute;mbolo&quot; me refiero a que dejaremos una puerta 
17
  abierta para que un desarrollador implemente su propio s&iacute;mbolo especial.</p>
18
<p>Los s&iacute;mbolos m&aacute;s habituales:</p>
19
<ol>
20
  <li>Para puntos</li>
21
  <ul>
22
    <li>C&iacute;rculo, cuadrado, tri&aacute;ngulo, cruz, icono + tama&ntilde;os 
23
      y colores</li>
24
  </ul>
25
  <li>Para L?neas</li>
26
  <ul>
27
    <li>Cont&iacute;nua, raya-raya, raya-punto-raya, raya-punto-punto-raya, raya-cruz-raya 
28
      + grosores y colores.</li>
29
  </ul>
30
  <li>Para Pol&iacute;gonos</li>
31
  <ul>
32
    <li>Relleno uniforme, sin relleno, tramado a 45&ordm;, a -45&ordm;, 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&aacute; fijar la fuente, el tama&ntilde;o de la fuente (en pixels 
39
      o coordenadas de mapa), la posici&oacute;n relativa de la etiqueta, si lleva 
40
      halo o no, la inclinaci&oacute;n, adem&aacute;s de distinguir entre lo necesario 
41
      para etiquetar un punto, l&iacute;nea o pol&iacute;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&oacute;n de que ning&uacute;n 
49
servidor soporta SLD con garant&iacute;as =&gt; No se puede probar bien): 
50
<ul>
51
  <li>Guardar un s&iacute;mbolo definido por el usuario.</li>
52
  <li>Definir s&iacute;mbolos compuestos de otros s&iacute;mbolos.</li>
53
  <li>Permitir que un desarrollador cree su propio s&iacute;mbolo, con comportamiento 
54
    especial de dibujado (se trata de soportar lo que tiene MapObjects, de que 
55
    te puedas hacer t&uacute; (como desarrollador) tus propios s&iacute;mbolos. 
56
    Por ejemplo, para pintar una l&iacute;nea con una sinusoidal + cruces).</li>
57
  <li>Compatible con SLD =&gt; 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&iacute;mbolo 
68
  en base a cualquier combinaci&oacute;n de campos y/o relaciones geom&eacute;tricas 
69
  (Filtros).</p>
70
<p>FMap se puede ir ampliando con leyendas de todo tipo, pero al estudiar c&oacute;mo 
71
  lo hace SLD, creo que podemos hacer algo parecido y mejorar algunas carencias.</p>
72
<p>A su vez, el SLD tambi&eacute;n tiene una serie de limitaciones. A saber:</p>
73
<p>- No est&aacute; definida la posibilidad de fijar un tama&ntilde;o de s&iacute;mbolo 
74
  en coordenadas de mundo real. Esto es imprescindible para s&iacute;mbolos de 
75
  tipo puntual y para etiquetas.</p>
76
<p>- La forma de aplicar los s&iacute;mbolos es lenta (se tiene que recorrer todos 
77
  los s&iacute;mbolos, evaluando uno a uno sus condiciones para ver si se aplican 
78
  o no.</p>
79
<p>- No permite la agrupaci&oacute;n de s&iacute;mbolos para formar uno complejo. 
80
  Se puede conseguir el efecto poniendo tantos s&iacute;mbolos como se quiera, 
81
  pero entonces el usuario, para editar el s&iacute;mbolo tiene que editar cada 
82
  uno de los s&iacute;mbolos que lo forman (tanto a nivel gr&aacute;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&iacute;mbolos predefinidos (para puntos, l&iacute;neas, 
86
  pol&iacute;gonos y textos).</p>
87
<p>Si no se encuentra la im&aacute;gen que tenemos que emplear con el s&iacute;mbolo, 
88
  lanzar una excepci&oacute;n de tipo &quot;File not found&quot;, con el nombre 
89
  del fichero que se busca.</p>
90
<p>Para evaluar si un s&iacute;mbolo se aplica o no, se puede emplear el mecanismo 
91
  de Filtros definido en geoAPI. Un filtro toma una Feature (Geometr&iacute;a 
92
  + atributos), la eval&uacute;a y si es cierta la condici&oacute;n, llama al 
93
  dibujado, si no, no. Esto lo que permite es que podamos asignar un s&iacute;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&aacute;s, en un criterio espacial (por ejemplo, poner un s&iacute;mbolo 
96
  a todos los pol&iacute;gonos que contengan un punto, o que su per&iacute;metro 
97
  sea mayor que X).</p>
98
<p>El interfaz con el usuario es important&iacute;simo. Un usuario debe poder 
99
  definir el s&iacute;mbolo con facilidad, tanto su parte gr&aacute;fica como 
100
  la parte de filtro, aquella que vamos a usar para definir si un s&iacute;mbolo 
101
  se ha de aplicar a una feature o no.</p>
102
<p>El usuario ha de poder escoger entre los s&iacute;mbolos predefinidos por nosotros 
103
  y los que pueda definir otro plugin. (Un s&iacute;mbolo se definir&aacute; por 
104
  un archivo dentro del directorio de s&iacute;mbolos, o por una clase que implemente 
105
  el interfaz IFSymbol. Estas clases se podr&aacute;n registrar de forma parecida 
106
  al mecanismo actual de drivers). Para que un usuario pueda especificar las caracter&iacute;sticas 
107
  de estos nuevos s&iacute;mbolos, deberemos implementar un mecanismo que le permita 
108
  al desarrollador especificar qu&eacute; panel va asociado con qu&eacute; s&iacute;mbolo.</p>
109
<p>Lo mismo pasa con los filtros. Nosotros implementaremos los m&aacute;s comunes, 
110
  pero dejaremos la puerta abierta al resto.</p>
111
<p>Para mostrar los s&iacute;mbolos de una capa mixta, en lugar de mostrarlos 
112
  todos en la misma l&iacute;nea (dibujar un rect&aacute;ngulo, l&iacute;nea, 
113
  punto y texto), los vamos a dibujar cada uno con su l&iacute;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&iacute;mbolos por defecto 
116
  para pol&iacute;gonos, l&iacute;neas, puntos y texto, uno debajo del otro. Si 
117
  definimos alg&uacute;n s&iacute;mbolo m&aacute;s a la leyenda, aparecer&aacute; 
118
  encima de los que son por defecto. Si modificamos la leyenda por defecto quitando 
119
  alguno de esos s&iacute;mbolos, ya no aparecer&aacute;n en el TOC o la leyenda 
120
  del Layout, o donde toque.</p>
121
<p>Tambi&eacute;n daremos la posibilidad de &quot;habilitar/deshabilitar&quot; 
122
  (o vis&iacute;ble/invisible) un s&iacute;mbolo pinchando sobre el s&iacute;mbolo 
123
  en el TOC. Esto es muy &uacute;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&aacute;cilmente, sin tener que recargar una leyenda 
126
  o fijar colores, tipos de l&iacute;nea, etc. La idea es, por ejemplo, mostar 
127
  la descripci&oacute;n del s&iacute;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&ntilde;o.</p>
131
<p>El usuario podr&aacute; tener una serie de s&iacute;mbolos &quot;favoritos&quot;, 
132
  o que use con m&aacute;s frecuencia. Tampoco es prioritario. Desarrollarlo al 
133
  final, o guardar estas tareas para alg&uacute;n becario o colaborador que quiera 
134
  empezar. </p>
135
<p>&nbsp;</p>
136
<p>&nbsp;</p>