<div dir="ltr"><div>Buenos días. No es exactamente un lenguaje de programación, es una expresión de QGIS. La documentación no la encuentro en castellano, pero en inglés está en: <a href="https://docs.qgis.org/3.28/en/docs/user_manual/expressions/expression.html">https://docs.qgis.org/3.28/en/docs/user_manual/expressions/expression.html</a>.</div><div><br></div><div> Para muchas cosas es bueno tener un campo identificador único. Tal es así que GDAL guarda, aunque no lo tengas, un identificador único para cada objeto, al cual se puede acceder con la expresión $id. Si tuvieras un campo identificador, mejor reemplazas $id por "nombre_del_campo_identificador" en la siguiente expresión:</div><div><br></div><div><span style="font-family:monospace">"ID_POL_ESP" || <br></span></div><div><span style="font-family:monospace">'PI' || <br></span></div><div><span style="font-family:monospace">lpad(</span></div><div><span style="font-family:monospace"> array_find(</span></div><div><span style="font-family:monospace"> array_agg( $id, "ID_POL_ESP"),</span></div><div><span style="font-family:monospace"> $id), <br></span></div><div><span style="font-family:monospace"> 5, 0) </span></div><div><br></div><div> Lo único que estoy modificando es el primer argumento de lpad: en vez de enviarle el @row_number + 60, le estoy pidiendo que encuentre en una lista de identificadores agrupados por ID_POL_ESP, el identificador del objeto actual, y devuelva su ubicación en esa lista (llamada array por QGIS). <br></div><div> Eso hace que para cada grupo de ID_POL_ESP, cada identificador asuma una posición desde el 0 en adelante, y sobre esa posición (llamada índice) se hace el lpad llenando con ceros a la izquierda hasta cinco lugares.</div><div><br></div><div>Atte, <br></div><div>Gabriel<br></div><div> <br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">El jue, 9 mar 2023 a la(s) 10:22, Sig nos (<a href="mailto:signos.anc@gmail.com">signos.anc@gmail.com</a>) escribió:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span lang="ES">Buenos días compañeros, soy nueva y bastante inexperta, sin embargo,
tengo una labor apoteósica que emprender, necesito generar más de 14000 códigos
para entidades vectoriales en la capa de atributos, yo empecé manual, pero alguien
me ayudo a construir un código para usar en Qgis "ID_POL_ESP" || 'PI' || lpad ( @row_number+60,5,0) , este código
me permite tomar de la columna de polígonos específicos los códigos de dichas
entidades, concatenar una sigla de texto y luego concatenar una formula que me
permite generar un incremento desde cualquier valor inicial rellenando con
ceros a la izquierda el número hasta completar una cifra de cinco caracteres,
sin embargo, necesito que cada vez que el código de polígono especifico cambie,
el incremento vuelva a reiniciar desde 0, compañeros de verdad cualquier idea
para mi es muy importante, soy terrible en programación ni siquiera sé que lenguaje
es ese, intente replicar esta sentencia en arcmap y no encontré ni el lpad ni
el (@row_number), también intente hacerlo en exell con marcos, pero jajaja me
quede hasta las tres de la mañana y ni siquiera logre que pusiera los números a
la izquierda, hasta entonces seguiré manual, pero si alguien me salva la patria
le amaría.</span></p></div>
_______________________________________________<br>
QGIS-es mailing list<br>
<a href="mailto:QGIS-es@lists.osgeo.org" target="_blank">QGIS-es@lists.osgeo.org</a><br>
<a href="https://lists.osgeo.org/mailman/listinfo/qgis-es" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/qgis-es</a><br>
</blockquote></div>