[Gvsig_usuarios] Expresiones avanzadas calculadora de campos

HUMBERTO NEL FLOREZ RAMOS hnflorezramos en gmail.com
Mar Abr 5 15:06:16 CEST 2011


Muchas Gracias Enrique. Lo voy a probar, para ver como me va.

Saludos y nuevamente gracias por compartir.

El 5 de abril de 2011 03:34, Enrique Lorenzo
<enrique.lorenzo en geodilab.org>escribió:

> Yo también tenía interés en ver cómo funciona la expresión "Avanzada". Te
> explico mi prueba paso a paso; muchos pasos son obvios pero los indico por
> si otras personas quieren hacer el ejemplo completo:
>
> Tres etapas A,  B y C:
>
> A- Preparar un archivo vectorial: para este ejemplo he preparado un pequeño
> MDT en formato Shape, con cuatro campos:
> X: doble
> Y: doble
> Z: doble
> Tipo: texto, de 20 caracteres
>
> B- Guardar en un archivo clasificaPuntos.py el siguiente código Python (ya
> sabes que es imprescindible respetar sangrados y mayúsculas/minúsculas; las
> comillas simples pueden ser comillas dobles si se prefieren. En este caso es
> puro Python, no se utiliza ningún objeto Java del modelo de objetos de
> gvSIG. el archivo puede contener tantas funciones como quieras, de forma que
> podría constituir una biblioteca propia de funciones):
>
> # Definicion de una funcion que clasifica puntos segun su altitud
> # Licencia GPL v. 3.0
> # CopyLeft enrique.lorenzo en geodilab.org
>
> def clasificaPuntos(zeta):
>     if zeta > 1000:
>         tipoPunto = 'Yo ahi no subo'
>     if zeta <= 1000 and zeta >800:
>         tipoPunto = 'Medio'
>     if zeta <=800:
>         tipoPunto = 'Bajito'
>     return tipoPunto
>
> C- Aplicación de la función:
>
> 1- Cargar la capa vectorial
> 2- Comenzar edición.
> 3- Abrir la tabla de atributos y seleccionar el campo Tipo.
> 4- Menú Campo>Expresión
> 5- Pestaña Avanzada: seleccionar el archivo que contiene la función Python
> ClasificaPuntos.py
> 6- Pestaña General: escribir clasificaPuntos([Z])
> 7- Aplicar
>
> Algunos comentarios:
> - En el paso 6, cuidado con las mayúsculas/minúsculas.
> - Imprescindible respetar los sangrados (cuatro u ocho espacios). No
> mezclar tabuladores con espacios en los sangrados.
> - No escribo tildes en los comentarios porque no he declarado la
> codificación de caracteres del archivo py con una línea al principio (# -*-
> coding: cp1252 -*-); solo se usan caracteres ASCII, para simplificar.
> - También por simplificar no he añadido la primera línea de declaración del
> entorno de ejecución de Python para Linux (#! /usr/bin/env python).
> - La función va leyendo el valor del campo Z, se lo pasa como parámetro a
> la función, la función devuelve el resultado para ese valor de Z, y guarda
> ese resultado en el campo seleccionado en la calculadora. Este tipo de
> código servirá para Linux, Windows y Mac tal como está.
>
> Espero que te sirva. Geosaludos.
>
> Enrique Lorenzo
> www.geodilab.org
>
>
> El 5 de abril de 2011 00:17, HUMBERTO NEL FLOREZ RAMOS <
> hnflorezramos en gmail.com> escribió:
>
> Alejandro Buenas Tarde.
>>
>> Seria mucha molestia si me regalas unas indicaciones de como usaste el
>> código de python en gvsig. He tratado de hacerlo con las indicaciones que te
>> dieron pero no hace nada...y lo peor es que enuncia ningún error o algo que
>> me oriente.
>>
>> Muchas gracias y disculpa...
>>
>> El 2 de marzo de 2011 11:40, Alejandro Lorenzo (Genea Consultores) <
>> algil en geneaconsultores.com> escribió:
>>
>>>
>>> Hola a todos,
>>>
>>> Muchas gracias por el código, me funcionó a la perfección.
>>>
>>>
>>> Un saludo  y muchas gracias
>>>
>>>
>>>
>>>
>>> El 01/02/2011 17:00, "Jose Manuel Vivó Arnal ( Chema )" escribió:
>>>
>>> Hola Alejandro.
>>>
>>>
>>> El 01/02/11 11:07, Alejandro Lorenzo (Genea Consultores) escribió:
>>>
>>> Hola,
>>>
>>> Estoy comenzando con gvSIG, concretamente con la calculadora de campos.
>>>
>>> Me encuentro en que la forma de trabajar con expresiones avanzadas, es en
>>> Phyton, y no conozco este lenguaje.
>>>
>>> Intenté convertir mis expresiones de vb a Phyton. En la página
>>> http://vb2py.sourceforge.net/index.html, existe un convertidor de código
>>> de vb a Phyton y este es el resultado:
>>>
>>> prueba = str()
>>>
>>> if [EMPRESA_CO] == 'XXX' and [Ejecutado] == 'SI':
>>>
>>>  [prueba] = 'Correcto'
>>>
>>> elif  [EMPRESA_CO] == 'XXX' and [Ejecutado] == 'NO':
>>>
>>> [prueba] = 'Inorrecto'
>>>
>>> else:
>>>
>>> prueba = '_'
>>>
>>> Genero el fichero .py, pero no funciona.
>>>
>>> Me da la impresión que lo que te estás equivocando es en la forma de
>>> aplicar la expresión.
>>>
>>> Prueba con esto:
>>>
>>> def miPrueba(EMPRESA_CO,Ejecutado):
>>>   prueba = '_'
>>>   if EMPRESA_CO == 'XXX' and Ejecutado == 'SI':
>>>     prueba = 'Correcto'
>>>   elif EMPRESA_CO == 'XXX' and Ejecutado == 'NO':
>>>     prueba = 'Inorrecto'
>>>   return prueba
>>>
>>> miPrueba([EMPRESA_CO],[Ejecutado])
>>>
>>>
>>> Nota: MUUUCHO OJO con los sangrados, en python (bueno, realmente es
>>> jython ya que es el port de pyhton a java) sirven apara delimitar la
>>> expresiones (no hay "end if" ni llaves "{}")
>>>
>>> Como ves, he definido una función "insitu" que me ha ayudado. También
>>> puedes definir varias funciones y meterlas en un fichero ".py" y cargarlas
>>> desde la pestaña "avanzado" de la calculadora.
>>>
>>> Siempre tienes que tener en cuenta que, la expresión de la calculadora,
>>> espera que el resultado sea un valor.
>>>
>>> Si quieres saber más, mira la documentación de python de la versión de
>>> gvSIG (creo que es la 2.4.2) que la puedes encontrar aquí:
>>>
>>> http://docs.python.org/release/2.4.2/
>>>
>>>
>>>
>>> Lo que me gustaría sería conseguir una expresión condicional que evaluase
>>> dos, o más campos, y en función del valor de los registros, rellenar un
>>> nuevo campo con los valores asignados a cada una de las combinaciones
>>> anteriores.
>>>
>>> Muchas gracias
>>>
>>> Alejandro
>>>
>>>
>>> _______________________________________________
>>> gvSIG_usuarios mailing listgvSIG_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:
>>> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios
>>>
>>>
>>> Espero que te sea de ayuda.
>>>
>>> Un Saludo.
>>> Chema.
>>>
>>> --
>>> Jose Manuel Vivó Arnal
>>> DiSiD Technologies S.L. (http://www.disid.com)
>>>
>>>
>>> _______________________________________________
>>> gvSIG_usuarios mailing listgvSIG_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:
>>> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios
>>>
>>>
>>> --
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> ______________________________________________________________________________________________________________________________________________________________
>>>
>>>
>>>  <http://www.geneaconsultores.com/>
>>> Alejandro Lorenzo Gil
>>> Director de Proyectos
>>> Consultor Forestal
>>>
>>> Genea Consultores
>>> Seguidillas, 9 2ºB. Edf. Volcán de las Arenas
>>> 38107 • Santa Cruz de Tenerife
>>> Lat. 28º 26' 36'' N Long. 16º 18' 48'' O<http://maps.google.es/maps?f=q&source=s_q&hl=es&geocode=&q=Calle+de+las+Seguidillas,+Santa+Cruz+de+Tenerife&sspn=0.00259,%0A0.004823&ie=UTF8&hq=&hnear=Calle+de+las+Seguidillas,+38107+Santa+Cruz+de+Tenerife,+Islas+Canarias&ll=28.444629,-16.312122&spn=0.006122,%0A0.011362&z=17&iwloc=lyrftr:m,2105705247863386081,28.44327,-16.313453>
>>>
>>> Teléfono móvil: 626 990 662
>>> Teléfono fijo: 988 271 118 / 922 620 652
>>>
>>> _______________________________________________
>>> 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:
>>>
>>> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios
>>>
>>>
>>
>>
>> --
>> Humberto Nel Florez Ramos
>> Ing. Catastral y Geodesta
>> Esp en Medio Ambiente y Geoinformatica
>>
>> _______________________________________________
>> 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:
>>
>> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios
>>
>>
>
> _______________________________________________
> 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:
>
> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios
>
>


-- 
Humberto Nel Florez Ramos
Ing. Catastral y Geodesta
Esp en Medio Ambiente y Geoinformatica
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://listserv.gva.es/pipermail/gvsig_usuarios/attachments/20110405/48616da0/attachment.htm 


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