[Gvsig_desarrolladores] RV: Filtrar y editar entidades mediante scripting

Francisco Puga fpuga en icarto.es
Lun Mar 2 18:30:36 CET 2015


Hola,

El principal error que tenías era en la forma de hacer el filtro. Al
.features se le pasa un filtro de aspecto sql, es decir que la
igualdad se mide con un sólo signo "=", y el segundo punto es que
cuando el valor del filtro es un texto, ese texto debe ir entre
comillas simples es decir que quedaría algo así como:

filtro = "jerarquia = '" + orden + "'"

El segundo error estaba en la forma en que calculabas "valor", lo que
buscas se expresa como:

valor = int(orden) * 1000


El script quedaría:

from gvsig import *
from commonsdialog import *


def main(*args):
    capa = currentLayer()
    orden = str(inputbox("Introduzca el orden de jerarquia de los
caminos a filtrar","ORDEN",1))
    filtro = "jerarquia = '"+orden + "'"
    entidades = capa.features(expresion=filtro,sortBy='jerarquia',asc=False)

    valor = int(orden) * 1000


    for entidad in entidades:
        valor = valor + 1
        entidad.edit()
        entidad.set("mtop_id",valor)
        capa.update(entidad)
    capa.commit()

El día 2 de marzo de 2015, 18:04, CARLOS COLOMBANA
<carlos.colombana en mtop.gub.uy> escribió:
> Hola.
>
> Recientemente he comenzado a incursionar en el mundo del scripting, como
> consecuencia del MOOC "Introducción a Scripting en gvSIG 2.1".
>
> Escribo para pedir auxilio ya que me encuentro empantanado, estoy tratando
> de automatizar algunas tareas en mi trabajo.
>
> La tabla asociada al shapefile (adjunto) de caminos, tiene tres campos;
> "length" (largo), "jerarquia" y "mtop_id".
>
> Estoy intentando mediante script (adjunto); seleccionar aquellas entidades
> (caminos) cuyo valor en el campo "jerarquia" sea igual a 5 (ingresado
> mediante inputbox), listarlas según el campo "length" en orden descendente,
> y para cada una asignarle un valor secuencial al campo "mtop_id" (50001,
> 50002, 50003, etc.).
>
> Desde ya les agradezco toda la ayuda que puedan llegar a brindarme.
>
> Saludos cordiales desde Montevideo, Uruguay.
>
>
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores 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:
> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>



-- 
Francisco Puga
iCarto | Innovación, Cooperación, Cartografía y Territorio S.L.
http://www.icarto.es/

c/ Rafael Alberti nº 13 – 1º D
15008 A Coruña
Galicia (Spain)
+34 881927808

Este correo electrónico contiene información estrictamente
confidencial y es de uso exclusivo del destinatario, quedando
prohibida a cualquier otra persona su revelación, copia, distribución,
o el ejercicio de cualquier acción relativa a su contenido. Si ha
recibido este mensaje por error, por favor conteste a su remitente
mediante correo electrónico y proceda a borrarlo de su sistema.

Sus datos personales serán tratados de forma confidencial y no serán
cedidos a terceros ajenos a ICARTO. En cualquier caso, podrá ejercer
los derecho de oposición, acceso, rectificación y cancelación de
acuerdo con lo establecido en la Ley Orgánica 15/99, de 13 de
diciembre, de Protección de Datos de Carácter Personal dirigiéndose a
Innovación, Cooperación, Cartografía e Territorio, SL. (ICARTO) en la
dirección postal a C/ Rafael Alberti, nº 13, 1ºD, 15.008 – (A Coruña).


Más información sobre la lista de distribución gvSIG_desarrolladores