Hola

Muchas gracias Javier, por la detallada explicación.

Efectivamente ese era el problema, usar paréntesis en lugar de corchetes, sí que me estreno bien con un script...

Así que resuelto, muchas gracias de nuevo

Saludos

Carlos

El 6/5/20 a las 18:27, José Olivas escribió:
Saludos;

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;

>>x=12
>>print x()

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.

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;

>>lista=[1,2,3,4]

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].

Revisa utilizar corchetes y no paréntesis para acceder a los elementos cuando utilizas las listas views y layers.

Espero haberte sido de ayuda.


José Olivas Carriquí.

On Fri, May 1, 2020 at 1:37 PM Carlos <krono...@gmail.com <mailto:krono...@gmail.com>> wrote:

        Hola

        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.

        Me he basado en la Documentación de scripting de gvsig 2.4,
    aunque lo estoy haciendo con la 2.5.1 build 3015.

        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"

        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.

        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

    # encoding: utf-8
    from gvsig import *

    def main(*args):
    # Datos del proyecto
      project = currentProject()
      name = project.getName()
      prjcode = project.getProjectionCode()

      print "Project Name: ", name
      print "Projection Code: ", prjcode, type(prjcode)

      views = project().getViews()             #obtener las vistas del
    proyecto

      for i in range(0, len(views)):                  #iterar sobre
    las vistas
        print "Vista:", i, views[i].getName()          #imprime el
    nombre de cada capa
    *    layers = views(i).getLayers()                  #**obtener las
    capas de la vista - aquí es donde da error*
        for j in range(0, len(layers)):                   #iterar
    sobre las capas
          print "Capa: ", j, layers(j).getName(),
          print "Tipo: ", layers(j).getTypeVectorLayer().getFullName()

        Gracias de antemano

        Carlos

    _______________________________________________
    gvSIG_usuarios mailing list
    gvSIG_usuarios@listserv.gva.es <mailto:gvSIG_usuarios@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:

    https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios


_______________________________________________
gvSIG_usuarios mailing list
gvSIG_usuarios@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:

https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios
_______________________________________________
gvSIG_usuarios mailing list
gvSIG_usuarios@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:

https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios

Responder a