<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Hola</p>
<p>Muchas gracias Javier, por la detallada explicación.</p>
<p>Efectivamente ese era el problema, usar paréntesis en lugar de
corchetes, sí que me estreno bien con un script...<br>
</p>
<p>Así que resuelto, muchas gracias de nuevo<br>
</p>
<p>Saludos</p>
<p>Carlos<br>
</p>
<div class="moz-cite-prefix">El 6/5/20 a las 18:27, José Olivas
escribió:<br>
</div>
<blockquote type="cite"
cite="mid:CAGpkb=MgcuQ0NNZMfLUYZVo=BzSsVhhqmqns-KO9oMEw7J0uHQ@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="ltr">Saludos;
<div><br>
</div>
<div>El error " object is not callable in <script> at line
number..." de debe a que estas haciendo una llamada a un
elemento que no lo permite. Solo las funciones o clases pueden
ser llamadas. Un ejemplo de lo anterior sería el siguiente;</div>
<div><br>
</div>
<div>>>x=12</div>
<div>>>print x()</div>
<div><br>
</div>
<div>Estas dos líneas de código devuelven el mismo error;
TypeError: 'int'
object is not callable in <script> at line number... ya
que se está haciendo la llamada a un entero, lo cual no es
posible.</div>
<div><br>
</div>
<div>El error localizado en la línea 16 se debe a la forma con
la que tratas los elementos de la lista views. Las listas son
una estructura de datos que nos permiten almacenar información
sea del tipo que sea, y acceder a esta mediante la utilización
de índices. Un ejemplo de lista sería el siguiente;</div>
<div><br>
</div>
<div>>>lista=[1,2,3,4]</div>
<div><br>
</div>
<div>La variable lista almacena una lista de 4 enteros, de modo
que la lista presenta 4 índices que van desde el 0 hasta el 3.
La forma correcta de utilizar esos índices en la llamada a
elementos de una lista se realiza utilizando lo corchetes
([...]). De modo que si queremos conseguir el valor del
primer elemento de la lista lo obtendremos con la siguiente
expresión a=lista[0]. Si queremos obtener el tercer valor, es
decir el número 3, lo obtendremos con la siguiente expresión
b=lista[2]. Si queremos obtener el último valor lo
conseguiremos con la expresión c=lista[3] o c=lista[-1].</div>
<div><br>
</div>
<div>Revisa utilizar corchetes y no paréntesis para acceder a
los elementos cuando utilizas las listas views y layers.</div>
<div><br>
</div>
<div>Espero haberte sido de ayuda.</div>
<div><br>
</div>
<div><br>
</div>
<div>José Olivas Carriquí.</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Fri, May 1, 2020 at 1:37 PM
Carlos <<a href="mailto:kronosir@gmail.com"
moz-do-not-send="true">kronosir@gmail.com</a>> wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div>
<p> Hola</p>
<p> Estoy haciendo un pequeño script que saque como
resultado la estructura de un proyecto, con las vistas que
existen y las capas que hay en cada vista. Me estoy
iniciando en el scripting, así que he buscado algo
sencillo. El objetivo es tener el título del proyecto y a
continuación el nombre de cada vista con las capas que
contiene.<br>
</p>
<p> Me he basado en la Documentación de scripting de
gvsig 2.4, aunque lo estoy haciendo con la 2.5.1 build
3015.</p>
<p> La cosa es que me da un error al tratar de extraer
las capas de las vistas, el error es "object is not
callable in <script> at line number 16"</p>
<p> Creo entender que es por el método con el que he
intentado extraer las capas. como he almacenado en views
el listado de vistas, he tratado de acceder a las capas de
cada vista con views(i).getLayers() pero entiendo por el
error que no es la forma adecuada.<br>
</p>
<p> Pego el código por si alguien puede ver como lo
podría solucionar. He incluido comentarios para facilitar
y he marcado en negrita la línea que da error<br>
</p>
<p># encoding: utf-8<br>
from gvsig import *<br>
<br>
def main(*args):<br>
# Datos del proyecto<br>
project = currentProject()<br>
name = project.getName()<br>
prjcode = project.getProjectionCode()<br>
<br>
print "Project Name: ", name<br>
print "Projection Code: ", prjcode, type(prjcode)<br>
<br>
views = project().getViews()
#obtener las vistas del proyecto<br>
</p>
<p> for i in range(0, len(views)):
#iterar sobre las vistas<br>
print "Vista:", i, views[i].getName()
#imprime el nombre de cada capa<br>
<b> layers = views(i).getLayers()
#</b><b>obtener las capas de la vista -
aquí es donde da error</b><br>
for j in range(0, len(layers)):
#iterar sobre las capas<br>
print "Capa: ", j, layers(j).getName(),<br>
print "Tipo: ",
layers(j).getTypeVectorLayer().getFullName()</p>
<p> Gracias de antemano</p>
<p> Carlos<br>
</p>
</div>
_______________________________________________<br>
gvSIG_usuarios mailing list<br>
<a href="mailto:gvSIG_usuarios@listserv.gva.es"
target="_blank" moz-do-not-send="true">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="https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios"
rel="noreferrer" target="_blank" moz-do-not-send="true">https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios</a><br>
</blockquote>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
gvSIG_usuarios mailing list
<a class="moz-txt-link-abbreviated" href="mailto:gvSIG_usuarios@listserv.gva.es">gvSIG_usuarios@listserv.gva.es</a>
Para ver histórico de mensajes, editar sus preferencias de usuario o darse de baja en esta lista, acuda a la siguiente dirección:
<a class="moz-txt-link-freetext" href="https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios">https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios</a>
</pre>
</blockquote>
</body>
</html>