Statistics
| Revision:

root / branches / FMap_piloto_CAD_Layout_version / libraries / libFMap / docs / Edición vectorial en FMap.html @ 1762

History | View | Annotate | Download (7.01 KB)

1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2
<HTML>
3
<HEAD>
4
        <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=iso-8859-1">
5
        <TITLE>Edici&oacute;n vectorial en FMap</TITLE>
6
        <META NAME="GENERATOR" CONTENT="OpenOffice.org 1.1.1  (Linux)">
7
        <META NAME="CREATED" CONTENT="20050315;16132800">
8
        <META NAME="CHANGED" CONTENT="20050316;11344600">
9
</HEAD>
10
<BODY LANG="es-ES" DIR="LTR">
11
<P><FONT SIZE=5><FONT SIZE=6>Edici&oacute;n vectorial en FMap<BR></FONT><FONT SIZE=3>La
12
edici&oacute;n vectorial en FMap se realiza sobre fuentes de datos
13
vectoriales mediante el uso de ficheros auxiliares, en los cuales se
14
va introduciendo las geometr&iacute;as modificadas y a&ntilde;adidas.
15
Para esto, FMap proporciona la interfaz EditableFeatureSource, la
16
cual tiene los m&eacute;todos adecuados para a&ntilde;adir geometr&iacute;as
17
y modificar o eliminar las ya existentes.<BR><BR>La edici&oacute;n se
18
efectuar&aacute; de manera transaccional, s&oacute;lo realizandose la
19
escritura en la fuente de datos cuando el usuario determine el fin de
20
la edici&oacute;n. Llegado este momento, se obtendr&aacute; una
21
fuente de datos resultado de la edici&oacute;n que contendr&aacute;
22
al menos el mismo n&uacute;mero de geometr&iacute;as que al principio
23
de &eacute;sta. Esto es as&iacute; porque las geometr&iacute;as
24
eliminadas se identificar&aacute;n porque ser&aacute;n null, es
25
decir, si se tiene una fuente de datos con 10 geometr&iacute;as y en
26
edici&oacute;n se eliminan las 5 &uacute;ltimas, la fuente resultante
27
de la edici&oacute;n tendr&aacute; 10 geometr&iacute;as y las 5
28
&uacute;ltimas ser&aacute;n null. Las geometr&iacute;as que se a&ntilde;adan
29
se situar&aacute;n al final de la fuente de datos ( a partir de la
30
posici&oacute;n 11 del ejemplo).</FONT></FONT></P>
31
<P><FONT SIZE=3>Por otro lado se mantiene un hist&oacute;rico de los
32
comandos de edici&oacute;n que se van ejecutando, de manera que se
33
puede deshacer cualquier comando desde que se comenz&oacute; a editar
34
la fuente de datos. Esta misma pila de comandos sirve para realizar
35
un modo de recuperaci&oacute;n en caso de terminaciones abruptas de
36
la edici&oacute;n (apagones, etc) de forma que se recupera el estado
37
exacto del fichero en edici&oacute;n en el momento del percance. Como
38
la edici&oacute;n se realiza de manera transaccional, cualquier fallo
39
de este tipo resultar&aacute; en una p&eacute;rdida total de los
40
datos editados hasta el momento por lo que esta caracter&iacute;stica
41
es muy &uacute;til en esos casos.</FONT></P>
42
<P><FONT SIZE=3>Internamente, toda modificaci&oacute;n y adici&oacute;n
43
de geometr&iacute;as implicar&aacute; un crecimiento en el fichero de
44
expansi&oacute;n, de forma que al rato de estar en edici&oacute;n el
45
fichero puede haber crecido mucho. Por otro lado tenemos el fichero
46
de comandos de edici&oacute;n comentado anteriormente que crece con
47
cada acci&oacute;n. Durante una edici&oacute;n muy larga puede ser
48
excesivo el espacio que se est&aacute; ocupando con estas dos
49
estructuras de datos y es por esto que se proporciona un mecanismo de
50
compactaci&oacute;n que reduce estos ficheros al m&iacute;nimo
51
necesario. El problema de realizar una compactaci&oacute;n es que se
52
pierde el hist&oacute;rico de comandos.</FONT></P>
53
<P>Se identifican fuentes de datos editables de dos naturalezas. Al
54
comenzar y terminar la edici&oacute;n, las operaciones a realizar son
55
distintas en funci&oacute;n de dicha naturaleza:</P>
56
<UL>
57
        <LI><P>Los ficheros vectoriales. 
58
        </P>
59
</UL>
60
<P STYLE="margin-left: 1.06cm">Al terminar la edici&oacute;n se
61
deber&aacute; procesar las geometr&iacute;as en orden y escribirlas
62
en el fichero que estuviese en edici&oacute;n, machacando el
63
contenido que hubiese anteriormente.</P>
64
<UL>
65
        <LI><P>Las fuentes de datos remotas con identificador para las
66
        geometr&iacute;as. 
67
        </P>
68
</UL>
69
<P STYLE="margin-left: 1.06cm; margin-bottom: 0cm">Al comenzar la
70
edici&oacute;n, protocolos como WFS permiten realizar un &quot;lock&quot;
71
sobre las geometr&iacute;as que se van a editar, de forma que se
72
puede preguntar al servidor si las geometr&iacute;as que se van a
73
poner en edici&oacute;n est&aacute;n disponibles o no y permitiendo
74
editar el subconjunto de &eacute;stas que no tienen un &quot;lock&quot;.
75
Otros protocolos pueden no permitir la edici&oacute;n si alguien est&aacute;
76
editando, etc.</P>
77
<P STYLE="margin-left: 1.06cm; margin-bottom: 0cm">Al terminar la
78
edici&oacute;n se deber&aacute;n procesar las instrucciones
79
necesarias para modificar s&oacute;lo las geometr&iacute;as
80
afectadas, es decir, eliminar las geometr&iacute;as que hayan sido
81
eliminadas durante la edici&oacute;n, y modificar las geometr&iacute;as
82
que fueron modificadas durante la edici&oacute;n. Esto &uacute;ltimo
83
requiere algo de complejidad ya que una geometr&iacute;a puede ser
84
modificada m&uacute;ltiples veces durante la edici&oacute;n pero s&oacute;lo
85
debe realizarse una instrucci&oacute;n de modificaci&oacute;n en el
86
servidor (esto no es estrictamente necesario pero s&iacute;
87
conveniente para evitar trabajo a un servidor compartido por un
88
n&uacute;mero indefinido de clientes). Por otro lado si se modifica
89
una geometr&iacute;a y luego se deshace la modificaci&oacute;n, &eacute;sta
90
no ha de modificarse en el servidor, ni si quiera para dejarla como
91
est&aacute; ya que ello puede suponer problemas de sincronismo cuando
92
varios clientes est&aacute;n editando simultaneamente los datos.</P>
93
<P><BR><BR><FONT SIZE=5>Operaciones<BR></FONT>&nbsp;&nbsp;&nbsp; Las
94
operaciones que se deben poder realizar sobre un
95
EditableFeatureSource son:</P>
96
<UL>
97
        <LI><P STYLE="margin-bottom: 0cm">Obtenci&oacute;n de la geometr&iacute;a
98
        i-&eacute;sima. Cabe destacar que esta geometr&iacute;a puede ser: 
99
        </P>
100
        <UL>
101
                <LI><P STYLE="margin-bottom: 0cm">Original de la capa 
102
                </P>
103
                <LI><P STYLE="margin-bottom: 0cm">Modificaci&oacute;n de una
104
                geometr&iacute;a original de la capa 
105
                </P>
106
                <LI><P STYLE="margin-bottom: 0cm">Una geometr&iacute;a nueva 
107
                </P>
108
                <LI><P STYLE="margin-bottom: 0cm">Modificaci&oacute;n de una
109
                geometr&iacute;a nueva</P>
110
        </UL>
111
        <LI><P STYLE="margin-bottom: 0cm">Modificaci&oacute;n de una
112
        geometr&iacute;a. Igual que en el caso anterior puede ser:</P>
113
        <UL>
114
                <LI><P STYLE="margin-bottom: 0cm">Original de la capa 
115
                </P>
116
                <LI><P STYLE="margin-bottom: 0cm">Modificaci&oacute;n de una
117
                geometr&iacute;a original de la capa 
118
                </P>
119
                <LI><P STYLE="margin-bottom: 0cm">Una geometr&iacute;a nueva 
120
                </P>
121
                <LI><P STYLE="margin-bottom: 0cm">Modificaci&oacute;n de una
122
                geometr&iacute;a nueva</P>
123
        </UL>
124
        <LI><P STYLE="margin-bottom: 0cm">Eliminaci&oacute;n de una
125
        geometr&iacute;a. 
126
        </P>
127
        <UL>
128
                <LI><P STYLE="margin-bottom: 0cm">Original de la capa 
129
                </P>
130
                <LI><P STYLE="margin-bottom: 0cm">Modificaci&oacute;n de una
131
                geometr&iacute;a original de la capa 
132
                </P>
133
                <LI><P STYLE="margin-bottom: 0cm">Una geometr&iacute;a nueva 
134
                </P>
135
                <LI><P STYLE="margin-bottom: 0cm">Modificaci&oacute;n de una
136
                geometr&iacute;a nueva</P>
137
        </UL>
138
        <LI><P STYLE="margin-bottom: 0cm">Adici&oacute;n de una geometr&iacute;a.
139
                </P>
140
        <LI><P STYLE="margin-bottom: 0cm">Deshacer acci&oacute;n 
141
        </P>
142
        <LI><P>Rehacer acci&oacute;n 
143
        </P>
144
</UL>
145
</BODY>
146
</HTML>