[Gvsig_desarrolladores] gvSIG 1.0 y el soporte postgis

Francisco José fpenarru en iver.es
Mie Ago 16 13:45:40 CEST 2006


Hola Marcos.

Buf, cuantos errores en tan pocos registros.....

1.- Sí es un fallo conocido de la versión 811.
Tiene que ver con comprobar que un polígono tiene la orientación 
adecuada (counter clock wise). Debe estar solucionado en la siguiente 
revisión, en la que hemos incluido lo que llamamos "Reglas". Con ellas, 
antes de añadir un registro, se comprueban una serie de reglas (unas 
automáticas, por ejemplo la de comprobar la orientación y otras que 
puede definir el usuario). Las capas de polígonos llevarán esta regla, 
que comprueba que de verdad lo que se añade es un polígono "correcto", y 
en el futuro se podrán añadir reglas del tipo "con el campo X rellenado 
correctamente", o cualquier otra que se le ocurra a un hipotético 
desarrollador. Esto permitirá chequear topología, o que los datos 
alfanuméricos estén correctos, si se decide meter a la vez una geometría 
con sus datos, por ejemplo.

2.- Siempre escribimos MULTIPOLYGON y MULTISTRING. También lo hace así 
el cargador de ficheros .shp que viene con postgis, si te fijas. Quizá 
tiene que ver con casos en los que puedes modificar una línea y dejarla 
en multilínea (cortar un tramo de carretera porque hay un tunel, pero 
continua siendo la misma entidad). El caso es que se ha implementado 
así, pero si nos planteas algún problema que surja debido a hacerlo así 
y nos convences, intentaremos cambiarlo.

Para terminar, lo de seleccionar un punto y mover todos los polígonos 
que están tocando ese punto es por comodidad, porque consideramos que es 
lo normal que quiere el usuario. Si se desea mover solo uno de ellos, se 
puede seleccionar primero el polígono y luego coger el punto en cuestión 
y moverlo. Solo se modificará el polígono previamente seleccionado.

Nada más, gracias por tu tiempo probando esta versión inestable, y 
esperamos que en breve podamos sacar una versión con todo esto ya 
corregido, ya sin el calificativo de "inestable".

Salu2.


marcos boullón magán escribió:
> 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.
>


-- 
Francisco José Peñarrubia
Equipo gvSIG

IVER T.I. S.A.
c/Salamanca 50
46005 Valencia
Spain




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