[Gvsig_desarrolladores] gvSIG 1.0 y el soporte postgis

marcos boullón magán marcosboullon en gmail.com
Vie Ago 11 19:15:25 CEST 2006


Hola a todos,

Acabo de encontrarme con un comportamiento bastante extraño de gvSIG
sobre mi base de datos PostGIS, y quería saber si alguien tiene alguna
idea de qué lo provoca; vamos, si es que he hecho yo algo mal o si es
un bug del software (de cualquiera, no sólo de gvSIG).

Software. gvSIG 1.0-alpha (811) sobre Java 1.4.2_11 en una Debian,
PostgreSQL 7.4.7, PostGIS 1.1.0, GEOS 2.1.1, PROJ 4.4.9 ... ¿Se me
olvida algo?

Descripción. Creo desde el interfaz de línea de comando de Postgres
una tabla con capacidades geométricas...

create table espazos (
  id_espazo integer not null primary key,
  nome varchar(64),
);
select addgeometrycolumn ('espazos', 'xeometria', -1, 'GEOMETRY', 2);

... introduzco algunos valores...

insert into espazos...
select id_espazo,nome,astext(xeometria) from espazos;

 id_espazo |        nome         |                    astext
-----------+---------------------+----------------------------------------------
         1 | salon de actos      | POLYGON((0 30,50 30,50 100,0 100,0 30))
         2 | aula 16             | POLYGON((50 30,50 100,70 100,70 30,50 30))
         3 | aula 15             | POLYGON((70 30,70 100,100 100,100 30,70 30))
         4 | pasillo central     | POLYGON((2 20,2 30,100 30,100 20,2 20))
         5 | cafeteria           | POLYGON((20 0,100 0,100 20,20 20,20 0))
         6 | lavabo              | POLYGON((7.5 0,7.5 20,20 20,20 0,7.5 0))
         7 | retrete 1 masculino | POLYGON((5 20,7.5 20,7.5 15,5 15,5 20))
         8 | retrete 2 masculino | POLYGON((5 10,5 15,7.5 15,7.5 10,5 10))
         9 | vestiario feminino  | POLYGON((5 0,5 10,7.5 10,7.5 0,5 0))
        10 | despacho nº 20     | POLYGON((0 0,0 20,5 20,5 0,0 0))
        11 | escaleiras          | POLYGON((0 20,2 20,2 30,0 30,0 20))
(11 filas)

... cargo esta tabla en gvSIG desde mi base de datos PostGIS, y
aparece correctamente representada. Puedo visualizar sus atributos y
modificar su geometría. Así que, simplemente muevo un vértice de uno
de los polígonos (no recuerdo cuál, pero he probado con varios y
siempre me sucede lo mismo): para ello dentro del menú de "Capa"
selecciono el comando "comenzar edición", dentro de la barra de
herramientas de edición selecciono el icono de "Desplazamiento", a
continuación pulso sobre el vértice y luego sobre la nueva posición
del vértice ("punto de desplazmiento", dice él); y lo que consigo es
desplazar todos los polígonos que comparten ese vértice. Luego, voy de
nuevo al menú de "Capa", comando "Guardar capa en PostGIS", le damos
un nombre a la nueva tabla, mismos parámetros de conexión que antes,
él dice que importa la capa, y que si quiero crear índice espacial...
Digo sí. Luego menú de "Capa", comando "terminar edición".

No ha dado ningún error. Sin embargo, otra vez en la línea de comando
de Postgres veo que la nueva tabla no es exactamente cómo me la
imaginaba:

ampliacion=# select id_espazo,nome,astext(the_geom) from proba5;
 id_espazo |        nome         |  astext
-----------+---------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
         1 | salon de actos      | GEOMETRYCOLLECTION EMPTY
         2 | aula 16             | MULTIPOLYGON(((50 30,50 100,70
100,70 30,50 30,50 30)))
         4 | pasillo central     | MULTIPOLYGON(((94.1852487135506
30.5145797598628,94.1852487135506 100.514579759863,124.185248713551
100.514579759863,124.185248713551 30.5145797598628,94.1852487135506
30.5145797598628,94.1852487135506 30.5145797598628)))
         4 | pasillo central     | MULTIPOLYGON(((26.1852487135506
20.5145797598628,26.1852487135506 30.5145797598628,124.185248713551
30.5145797598628,124.185248713551 20.5145797598628,26.1852487135506
20.5145797598628,26.1852487135506 20.5145797598628)))
         5 | cafeteria           | GEOMETRYCOLLECTION EMPTY
         6 | lavabo              | MULTIPOLYGON(((7.5 0,7.5 20,20
20,20 0,7.5 0,7.5 0)))
         7 | retrete 1 masculino | MULTIPOLYGON(((5 20,7.5 20,7.5 15,5
15,5 20,5 20)))
         8 | retrete 2 masculino | MULTIPOLYGON(((5 10,5 15,7.5 15,7.5
10,5 10,5 10)))
         9 | vestiario feminino  | MULTIPOLYGON(((5 0,5 10,7.5 10,7.5
0,5 0,5 0)))
        10 | despacho nº 20     | MULTIPOLYGON(((0 0,0 20,5 20,5 0,0 0,0 0)))
        11 | escaleiras          | GEOMETRYCOLLECTION EMPTY
(11 filas)


Tiene 11 filas otra vez, pero convierte polígonos en multipolígonos,
destroza tres habitaciones asignando "geometrycollection empty",
duplica el último punto de la definición de las geometrías (cuando ya
mis polígonos eran cerrados desde el principio), me elimina el antiguo
espacio "aula 15" (id_espazo=3), me duplica el antiguo espacio
"pasillo central" (id_espazo=4)...

Es decir, un montón de errores en sólo 11 registros.

¿He hecho algo mal? ¿Está involucrado algún bug de software reconocido
(y parcheado)? ¿Un problema de codificación de cadenas de texto (por
lo de "despacho nº 20")? ¿Porqué salen multipolígonos en vez de
polígonos?

Me gustaría que alguien probara a hacer una prueba similar y me
comentara si le pasa lo mismo. O si a le funciona perfectamente.

Gracias  a todos,

M.

-- 
-- marcos boullón magán



Más información sobre la lista de distribución gvSIG_desarrolladores