4 votos

¿Cómo crear una columna alfanumérica consecutiva en una tabla de atributos de QGIS?

Estoy tratando de crear una columna en la tabla de atributos de manera que cada etiqueta de celda sea un prefijo (M) seguido de un número único, es decir, M1, M2,.. etc

7voto

Mat Puntos 196

Siguiendo la respuesta de Joseph, puede resultarte más útil generar un campo de texto sortable.

Dado que se trata de un campo de texto, cualquier intento de ordenar M1,M2..M10,M11,M12 saldrá como

M1, M10, M11, M12, M2, M3 ... M9

Si utilizas M0001, M0002, M0003 .. .M0012 entonces tienes la unicidad y también puedes ordenar.

Solo modifica la sugerencia de Joseph a

'M' || lpad($rownum,4,'0')

donde 4 es la cantidad de dígitos que deseas en el número. Eso agregará ceros a la izquierda al número.

Necesitas saber el número máximo de dígitos que es probable que tengas, por lo que si no lo sabes de antemano - o si los datos probablemente crecerán con el tiempo - puede que no sea adecuado.

0 votos

+1, ¡excelente solución! ¡Mucho mejor que lo que publiqué! @Chris - ¡Yo recomendaría aceptar esta respuesta :)

6voto

Mue Puntos 2469

Puedes usar la siguiente expresión (nota que tu columna debe ser de tipo String):

'M' || $rownum

Imagen de ejemplo

3 votos

Buena sugerencia. También se podría hacer que la columna sea ordenable utilizando un formato como M00001, M00002... usando 'M' || lpad($rownum,5,'0')

0 votos

@StevenKay - Ese es un punto muy válido ya que el formato que mencionaste parece bastante común. ¡Considera publicarlo como una respuesta y yo votaré arriba :)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X