Python Scripting for Students of Remote Sensing

Python Scripting for Students of Remote Sensing es un manual de python orientado a la teledetección. Si no sabes nada de python es mejor empezar por otro manual y luego saltar directamente al capítulo 5, “Plottin”. La parte de python en sí es muy básica y no está muy bien explicada. Del capítulo 5 al 10 se muestran algunas librerías interesantes de python para mostrar gráficos (matplotlib), para estadística y calculos científicos (numpy), para procesado de raster (gdal), o ejemplos sencillos de trabajo con datos lidar en ficheros ascii. La información que dan es bastante escueta, pero si ya conoces python en un par de horas puedes leerlo para hacerte una idea de que posibilidades hay en estos campos.

En la misma página se pueden encontrar otros manuales interesantes sobre teledetección.

Descubrí el curso gracias al comentario de José Guerrero.

 

 

 

Um curso objetivo de programação em Python

Gracias al blog de Anderson Medeiros encuentro un interesante tutorial de python escrito en Portugués pero muy facilito de seguir.

Es un tutorial de introducción, rápido de leer y que me ha ayudado a recordar algunos de esos conceptos que por estar más habituado a otros lenguajes tipo Java no empleas a menudo.

Algunas cosillas que he recordado, aprendido o me han gustado.

Listas, tupas y strings

Explica bien que son listas, tuplas, diccionarios y strings. A listas y tuplas se las llama en ocasiones secuencias puesto que sus propiedades son muy parecidas. Una tupla es en realidad una lista inmutable.

Conviene tener en la cabeza lo fácil que es hacer slices (subconjuntos de secuencias) y substrings en python, incluso empleando índices negativos para empezar a contar por el final. LLega con escribir:

>>> lista = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> lista[2:5]
['c', 'd', 'e']
>>>  lista[2:]
['c', 'd', 'e', 'f', 'g']
>>> lista[:5]
['a', 'b', 'c', 'd', 'e']
>>> lista[:-2]
['a', 'b', 'c', 'd', 'e']
>>> lista[-2:]
['f', 'g']

Los operadores * y + se pueden usar sobre listas, tuplas y strings. * replica n veces el elemento y + concatena.

Ejemplo para strings:

>>> a = "exato"
>>> print a * 2
exatoexato
>>> print "quase " + a
quase exato

Ejemplo para listas:

>>> a = [-1, 0]
>>> b = [1, 2, 3]
>>> print b * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
>>> print a + b
[-1, 0, 1, 2, 3]

Para chequear si un elemento está contenido en una secuencia o diccionario se usa el operador in

>>> "x" in "cha"
False
>>> 1 in [1,2,3]
True

Combinar de forma implícita operaciones lógicas

Además de los operadores lógicos not, or, and python permite combinar ciertas operaciones lógicas de forma implícita:

Por ejemplo podemos comprobar un número está en un determinado rango de esta forma:

a = 5
if 3 < a < 9:
     print "Entre 3 y 9"

a = 3; b = 3; c = 2;
if a == b <= c:
     print "a igual a b y b menor o igual que c"

Clausula else en bloques for y while

En los for y los while se puede emplear una claúsula else que se ejecutará cuando se salga del bloque de iteración por haber acabado la secuencia (en lugar de salir por un break)

valores = [2, 4, 5, 2, -1]
for i in valores:
        if i < 0:
                print "Negativo encontrado: %d" %i
                break
else:
        print "Nenhum negativo encontrado"

Valores booleanos

No está de más recordar que en python se considera falso a:

  • el booleano False
  • el valor 0 (zero)
  • una lista, diccionario, tupla o string vacios (de tamaño cero)
  • el valor especial None

Así por ejemplo para comprobar si una lista no está vacía mejor que emplear

lista = ['a']
if (len(lista)) != 0:
      print "forma poco apropiada de comprobar si una lista no está vacia"

usaremos directamente

if lista:
      print "Lista no vacia"

Argumentos de funciones

Existen dos formas de pasar un número variable de argumentos a una función:

def desculpa(alvo, *motivos):
        d = "Desculpas %s, mas estou doente" % alvo
        for motivo in motivos:
            d = d + " e %s" % motivo
        return d + "."

    >>> desculpa("senhor", "meu gato fugiu",
    ...          "minha tia veio visitar")

o bien

 def equipe(diretor, produtor, **atores):
        for personagem in atores.keys():
            print "%s: %s" % (personagem, atores[personagem])
        print "-" * 20
        print "Diretor:  %s" % diretor
        print "Produtor: %s" % produtor

    >>> equipe(diretor="Paul Anderson",
    ...        produtor="Paul Anderson",
    ...        Frank="Tom Cruise", Edmund="Pat Healy",
    ...        Linda="Julianne Moore")

    Frank: Tom Cruise
    Edmund: Pat Healy
    Linda: Julianne Moore
    --------------------
    Diretor: Paul Anderson
    Produtor: Paul Anderson

Si tienes algún tutoirial de python que te haya gustado o algún truquillo que quieres compartir deja un comentario.

Traducir automáticamente ficheros .po

Ultimamente estoy dedicando parte de mi tiempo libre a algunos trabajos relacionados con la traducción. En concreto he portado a windows la última versión del software de traducción gtranslator y estoy participando en un proyecto para traducir de forma colaborativa al gallego el libro Producing Open Source Software.

Uno de los aspectos interesantes del proyecto poss-gl es que estamos usando una metodología propia de la traducción de software para un libro, con bastante buen resultado. Cada capítulo del libro se ha convertido en un fichero .po, que son los ficheros estándar de traducción en Software Libre. De este modo en lugar de ir traduciendo cada línea con un procesador de texto podemos emplear una herramienta avanzada como gtranslator para ello. Una de las características de gtranslator es que se puede visualizar además del texto original el contenido de otro fichero .po que contenga por ejemplo la traducción a un tercer idioma que nos sirva para comparar como han hecho otros traductores.

Basándome en esa posibilidad acabo de escribir un programita que permite traducir automaticamente un fichero po haciendo consultas a un servicio de traducción web. Las traducciones automáticas, a no ser que sean entre lenguas similares como castellano y gallego, son bastante malas pero, cargándolas como idioma alternativo en gtranslator pueden sernos de ayuda en nuestra propia traducción.

El programa se trata de un script programado en python y liberado con licencia GPL v3 que podeis descargar directamente desde mi repositorio de software. Para que funcione es necesario instalar también los módulos de python polib y BeautifulSoup.

Para ejecutarlo escribiremos en una consola de linux:

python translatePO.py -d [dirección] -i [fichero.po]

La dirección indica de que idioma a que idioma queremos traducirlo, por ejemplo en-es para traducir de inglés a castellano o gl-fr para hacerlo de gallego a francés.