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.lore...@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.lore...@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 < > hnflorezra...@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) < >> al...@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_usuar...@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_usuar...@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@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@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@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@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