gvSIG bugs #2794
Cambio en los tipos de geometría que introduce una incompatibilidad con versiones previas
Status: | Closed | % Done: | 0% | |
---|---|---|---|---|
Priority: | Normal | Spent time: | - | |
Assignee: | ||||
Category: | - | |||
Target version: | 2.1.0-2246-testing | |||
Severity: | Major | Add-on version: | ||
gvSIG version: | 2.1.0 | Add-on build: | ||
gvSIG build: | 2245 | Add-on resolve version: | ||
Operative System: | Add-on resolve build: | |||
Keywords: | Proyecto: | |||
Has patch: | Hito: | |||
Add-on name: | Unknown |
Description
Recientemente se ha introducido un cambio en los tipos de geometría (org.gvsig.fmap.geom.Geometry.TYPES), a los que se ha añadido 2 nuevos tipos:
public final static int LINE = 11;
public final static int POLYGON = 12;
Este cambio introduce una incompatibilidad con versiones previas de la librería, ya que los códigos 11 y 12 estaban anteriormente reservados para CIRCLE y ARC, respectivamente.
Cualquier plugin que utilize Geometry.TYPES (con códigos superiores al 10) funcionará incorrectamente hasta que se actualice la dependencia en el pom.xml del plugin a la última versión de org.gvsig.desktop y se recompile dicho plugin.
Un ejemplo de dicho funcionamiento incorrecto es la herramienta de creación de círculos en el documento Mapa (Layout), que no funciona en los últimos builds. Es posible que haya errores en otros plugins por el mismo motivo.
Un solución sería restablecer los códigos originales, y añadir LINE y POLYGON usando códigos no utilizados anteriormente (por ejemplo 18 y 19).
Otra solución es actualizar la dependencia de todos los plugins a la última versión de org.gvsig.desktop y recompilarlos, pero es difícil a priori detectar qué plugins están afectados.
Related issues
Associated revisions
Cambiados los valores para las constantes de LINE y POLYGON en la clase Geometry para mantener compatibiliad binaria con los tipos que habian antes ( refs #2794)
History
#1
Updated by Álvaro Anguix about 10 years ago
Si es correcta y no tiene implicaciones la de añadir nuevos códigos, es preferible. Deberíamos intentar evitar incompatibilidades salvo en casos necesarios. Más aún si la otra opción va a hacer que herramientas no controladas dejen de funcionar.
#2
Updated by Álvaro Anguix about 10 years ago
- Target version set to 2.1.0-2259-rc3
#3
Updated by Antonio Falciano about 10 years ago
Another example of incompatibility introduced by the recent geometry types changes could be #2776.
#4
Updated by Cesar Martinez Izquierdo about 10 years ago
A ver qué opina Joaquín, ya que él hizo estos cambios.
Lo de usar códigos más altos será similar a lo que hay ahora (ya que igualmente se añadieron 2 códigos) pero sin alterar los códigos anteriores.
En cualquier caso creo que hay que repensar el cambio un poco más a fondo, ya que me da la impresión de que los nuevos tipos LINE y POLYGON son equivalentes a los ya existentes CURVE y SURFACE, y por tanto redundantes:
/**
* A straight or curved geometric element that is generated by a moving
* point and that has extension only along the path of the point.
*/
public final static int CURVE = 2;
/**
* A closed plane figure bounded by straight lines.
*/
public final static int SURFACE = 3;
#5
Updated by Álvaro Anguix about 10 years ago
- Related to gvSIG bugs #2776: "Select by circle" draws a square and returns weird selections added
#6
Updated by Joaquín del Cerro Murciano almost 10 years ago
- Severity changed from Minor to Major
- Assignee set to Joaquín del Cerro Murciano
- Status changed from New to Fixed
No me di cuenta de las repercusiones del cambio.
De momento voy a poner los codigos 18 y 19 (como sugieres) a los nuevos tipos para minimizar los problemas.
Respecto a si son redundantes o no los nuevos tipos...
Ahora mismo tal como esta si, lo son.
En algun momento cuando se abordo el API de geometrias se nos fue la olla a alguno
y se asumio que un Polygon es un Surface y que una Line es una Curve, y no es asi.
De hecho, en la implementacion eso habia causado errores importantes, y algunos
de ellos aun persisten.
Curve deberia ser un tipo de geometria no instanciable del que deriban Line o Arc,
y con Surface pasaria algo similar.
#7
Updated by Joaquín del Cerro Murciano almost 10 years ago
- Target version changed from 2.1.0-2259-rc3 to 2.1.0-2246-testing
#8
Updated by Álvaro Anguix almost 10 years ago
- Status changed from Fixed to Closed
#9
Updated by Joaquín del Cerro Murciano almost 10 years ago
- Related to gvSIG bugs #2812: No carga WFS added