[Gvsig_usuarios] Duda con scripting
José Olivas
jolivas en gvsig.com
Mie Mayo 6 18:27:38 CEST 2020
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 <kronosir en 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 en 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
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listserv.gva.es/pipermail/gvsig_usuarios/attachments/20200506/291b4e7e/attachment.html>
Más información sobre la lista de distribución gvSIG_usuarios