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