<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">&lt;<a href="mailto:jjdelcerro.gvsig@gmail.com" target="_blank">jjdelcerro.gvsig@gmail.com</a>&gt;</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">&gt; Hola,<br>
&gt;<br>
&gt; escribo porque tengo una duda en un script que estoy haciendo con el módulo<br>
&gt; de scripting en gvSIG 2.0. Mi idea es centrar la vista en un polígono,<br>
&gt; debería usar getEnvelope() para encontrar las coordenadas máximas y mínimas<br>
&gt; y centrar la vista en esas coordenadas. No se si se puede hacer lo que<br>
&gt; quiero o no, pero no encuentro en la guia de referencia algo que me de una<br>
&gt; pista de cómo hacerlo. Alguien tiene alguna sugerencia?<br>
&gt;<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 &quot;view: &quot;, dir(view)<br>
    print &quot;layer: &quot;, dir(layer)<br>
    print &quot;features: &quot;, dir(layer.features())<br>
    print &quot;first feature: &quot;, dir(iter(layer.features()).next())<br>
    print &quot;Map: &quot;, dir(view.getMap())<br>
    print &quot;View port: &quot;, dir(view.getMap().getViewPort())<br>
<br>
    # Busco la provincia de granada y pillo su geometria<br>
    set = layer.features(&quot;PROVINCIA = &#39;GRANADA&#39;&quot;)<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 &quot;geom&quot;.<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 &quot;dir&quot; nos muestra la lista de metodos o<br>
atributos que tiene un objeto. Por ejemplo:<br>
<br>
    print &quot;view: &quot;, dir(view)<br>
<br>
Nos muestra los metodos que tiene la vista y asi sabemos que podemos<br>
invovar al metodo &quot;getMap&quot; de ella.<br>
<br>
Lo de centrar la vista en una geometria...<br>
pues la vista tiene una cosa que llamamos &quot;MapContext&quot; que se<br>
obtiene con &quot;getMap()&quot; 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 &quot;geom&quot;.<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 &quot;geom&quot;.<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(&quot;PROVINCIA = &#39;GRANADA&#39;&quot;)<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>
&gt; Gracias<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; gvSIG_usuarios mailing list<br>
&gt; <a href="mailto:gvSIG_usuarios@listserv.gva.es">gvSIG_usuarios@listserv.gva.es</a><br>
&gt;<br>
&gt; 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>
&gt;<br>
&gt; <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>