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 <[email protected]> > 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 > > [email protected] > > > > 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. > [email protected] > gvSIG Association > www.gvsig.com > www.gvsig.org > _______________________________________________ > gvSIG_usuarios mailing list > [email protected] > > 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 >
_______________________________________________ gvSIG_usuarios mailing list [email protected] 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
