Esta pregunta se basa en una pregunta anterior que encontré en gis.stackexchange: ¿Cómo editar fácilmente los datos de los atributos mediante expresiones regulares?
¿Quizás alguien pueda indicarme la dirección correcta?
Tengo un shapefile vectorial de curvas de nivel. En la tabla de atributos ya he convertido un campo llamado FEET que consiste en datos enteros que contienen valores de elevación a un campo de cadena llamado Label. Además, he añadido con éxito un ' al final de la cadena para que cuando los datos se etiqueten se lean como pies.
Lo siguiente que estoy intentando hacer es insertar una coma entre los dos primeros valores de la cadena sólo si la longitud de la cadena es mayor que 4, o sea que sólo aparecerá una coma entre los dígitos de miles y centenas en el campo Etiqueta. La longitud tiene que ser mayor que 4 porque también estoy contando los '
Mi código hasta ahora es:
case when length( "Label") >4 then regexp_replace( "Label", '^([0-9])+([0-9]{3}\')$','$1 , $2') else "Label" end
sin embargo la función regexp_replace no parece aceptar las variables de grupo $1 $ 2 en el tercer parámetro de la función.
He mirado http://docs.python.org/2/library/re.html ya que el regex de la calculadora de campos se basa, según tengo entendido, en el uso de regex de python, pero no he podido averiguarlo. Tal vez lo que estoy tratando de hacer no es posible todavía con esta función en la calculadora de campo en QGIS 1.8 en mac OSX. O más bien mi sintaxis es incorrecta ya que soy un programador novato y algo nuevo en las expresiones regulares.
0 votos
¿Tiene que ser codificado - no sería una manera simple de (en Excel, o similar) crear una nueva columna que tenía la etiqueta en ella formados como usted quería - todo lo que tendría que utilizar es un comando de concatenación pocos.
0 votos
Sí, esa sería una forma de resolver el problema, sin embargo estoy tratando de resolverlo desde dentro de QGIS o con python.
0 votos
@chrishenrick - ¿te ha resuelto mi respuesta?
0 votos
@Stev_k aún no he tenido tiempo de probarlo, lo haré pronto y te lo haré saber. ¡Gracias por tu ayuda!