miércoles, julio 22, 2009

Proyectando...

Hoy he resuelto un bug curioso en los bindings de SEXTANTE con gvSIG. Resulta que he sacado una ruta del GPS y la he metido en gvSIG, y después me apetecía analizarla con las herramientas de SEXTANTE. Al hacer algo que generara otra capa, esta capa resultante no salia donde debía, y gvSIG parecía olvidarse de reproyectarla (la vista estaba en EPSG23030 y tanto la ruta original como los resultados estaban en EPSG 4326). En principio que todo lo que se hace con la capa parecía estar bien, y mantenía su CRS distinto al de la vista, pero aún así no acababa de pintarse bien. He buceado un poco en el gargantuesco código de gvSIG (hacía mucho tiempo que no lo hacía, y me ha costado situarme, la verdad) y al final he dado con la siguiente solucion: al añadir la capa a la vista, hacer esto:

layer.setProjection(layer.getProjection());

No es nada lógico, pero eso dispara el mecanismo de la reproyección a la hora de pintar. Seguro que hay una forma más limpia de hacerlo. A ver si algún gurú de gvSIG nos saca de dudas ;-)

Ya que estaba con el tema de las proyecciones y similares, he añadido un aviso en la consola de SEXTANTE cuando las entradas de un algoritmo con varias entradas no coinciden en su CRS, ya que SEXTANTE no gestiona tema de cambios de sistemas de coordenadas y asume que ya deben estar todas las capas de entrada en uno único que permita operar de forma coherente.

1 comentario:

Antonio Falciano dijo...

Victor,
if I have understood well... if you want simply to refresh the view, I write something like this (Jython code):

from gvsiglib import *
view = gvSIG.getActiveDocument()
mapContext = view.getModel().getMapContext()
# do some tasks...
# ...and finally refresh the view
mapContext.invalidate()


Best regards,
Antonio