[Gvsig_usuarios] scripting gvSIG 2.0, centrar vista en un polígono

Laia Linares Ortells lalinort en gmail.com
Lun Dic 2 19:50:59 CET 2013


Muchas gracias, era lo que  necesitaba. La explicación ha sido perfecta.
Me ha sido muy útil también la función dir() para sacar los métodos sin
tener que ir a la consola para buscarlos.
Un saludo,
Laia


2013/12/2 Joaquin del Cerro <jjdelcerro.gvsig en gmail.com>

> El 01/12/13 20:52, Laia Linares Ortells escribió:
> > Hola,
> >
> > escribo porque tengo una duda en un script que estoy haciendo con el
> módulo
> > de scripting en gvSIG 2.0. Mi idea es centrar la vista en un polígono,
> > debería usar getEnvelope() para encontrar las coordenadas máximas y
> mínimas
> > y centrar la vista en esas coordenadas. No se si se puede hacer lo que
> > quiero o no, pero no encuentro en la guia de referencia algo que me de
> una
> > pista de cómo hacerlo. Alguien tiene alguna sugerencia?
> >
>
> Holas,
> a ver si te sirve algo de esto...
> He cargado una capa con las provincias de andalucia
> (
> http://downloads.gvsig.org/download/geodata/vector/SHP2D/provincias_andalucia.zip
> )
> y he dejado la capa y la vista activas.
>
> El script lo que hace es pillar la geometria de la provincia de granada
> y centrar la vista en ella.
> Si ya tienes la geometria no te hace falta mas que la ultima linea,
> que es la que centra la vista en una geometria.
>
>
> from gvsig import *
>
> def main():
>
>     layer = currentLayer()
>     view = currentView()
>
>     print "view: ", dir(view)
>     print "layer: ", dir(layer)
>     print "features: ", dir(layer.features())
>     print "first feature: ", dir(iter(layer.features()).next())
>     print "Map: ", dir(view.getMap())
>     print "View port: ", dir(view.getMap().getViewPort())
>
>     # Busco la provincia de granada y pillo su geometria
>     set = layer.features("PROVINCIA = 'GRANADA'")
>     first = iter(set).next()
>
>     print first.PROVINCIA, first.GEOMETRY
>     geom = first.GEOMETRY
>
>     # Esta es la linea que centra la vista en la geometria "geom".
>     view.getMap().getViewPort().setEnvelope(geom.getEnvelope())
>
>
> Las lineas de prints, son solo para ayudarme ha encontrar los metodos
> de un objeto. La funcion "dir" nos muestra la lista de metodos o
> atributos que tiene un objeto. Por ejemplo:
>
>     print "view: ", dir(view)
>
> Nos muestra los metodos que tiene la vista y asi sabemos que podemos
> invovar al metodo "getMap" de ella.
>
> Lo de centrar la vista en una geometria...
> pues la vista tiene una cosa que llamamos "MapContext" que se
> obtiene con "getMap()" y representa el mapa que se visualiza en
> la vista. Este tiene un ViewPort que representa el area geografica
> que se esta viendo en ese mapa, y lo que hacemos es pillar el
> ViewPort y decirle que el area que se esta viendo es el envelope
> de la geometria que define el area que queremos ver.
>
> Tal vez lo importante sea quedarse a modo de receta que con:
>
>     # Esta es la linea que centra la vista en la geometria "geom".
>     view.getMap().getViewPort().setEnvelope(geom.getEnvelope())
>
> Con lo que podemos cambiar el area que se esta viendo en la vista a la de
> la geometria que indiquemos con "geom".
>
> Tambien podriamos hacernos una funcioncita con esto y simplente
> llamarla donde la necesitemos. Quitando los prints podria quedar
> algo como:
>
> from gvsig import *
>
> def centrarVista(view, geom):
>     view.getMap().getViewPort().setEnvelope(geom.getEnvelope())
>
> def main():
>     layer = currentLayer()
>     view = currentView()
>
>     # Buscamos la geometria de la provincia de granada
>     set = layer.features("PROVINCIA = 'GRANADA'")
>     first = iter(set).next()
>
>     # Ahora centramos la vista en esa geometria
>     centrarVista(view, first.GEOMETRY)
>
>
> Bueno, espero que te sirva de algo.
>
> Un saludo
> Joaquin
>
>
> > Gracias
> >
> >
> >
> >
> > _______________________________________________
> > gvSIG_usuarios mailing list
> > gvSIG_usuarios en listserv.gva.es
> >
> > Para ver histórico de mensajes, editar sus preferencias de usuario o
> darse de baja en esta lista, acuda a la siguiente dirección:
> >
> > http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios
>
>
> --
> --------------------------------------
> Joaquin Jose del Cerro
> Development and software arquitecture manager.
> jjdelcerro en gvsig.com
> gvSIG Association
> www.gvsig.com
> www.gvsig.org
> _______________________________________________
> gvSIG_usuarios mailing list
> gvSIG_usuarios en listserv.gva.es
>
> Para ver histórico de mensajes, editar sus preferencias de usuario o darse
> de baja en esta lista, acuda a la siguiente dirección:
>
> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://listserv.gva.es/pipermail/gvsig_usuarios/attachments/20131202/9348e3e9/attachment.htm 


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