Select to view content in your preferred language

Arcade expression

270
1
07-26-2023 06:34 AM
julien1984
New Contributor

Je souhaite créer des identifiants uniques pour le recensement des fossés dans une même table attributaire avec :
• Un Identifiant Réseau ID_RESEAU (exemple : R00001)
• Un Identifiant unique pour chaque tronçon composant le réseau ID_TRONCON. (Exemple : R0001TR0001)

Lors de la saisie, je souhaiterais qu'il continue la numérotation des tronçons en fonction du réseau sélectionné.
ID_RESEAU = R00001 / ID_TRONCON = R0001TR0001, puis R0001TR0002
ID_RESEAU = R00002 / ID_TRONCON = R0002TR0001, puis R0000TR0002

Mes tests sont peu concluants…😅
Est-il possible de réaliser cela avec arcade pour faciliter la saisie sur le terrain via une géodatabase mobile ?
Merci pour l'aide

Tags (1)
1 Reply
RhettZufelt
MVP Notable Contributor

I use code similar to this post, but for text based identifiers.

Since you want to append next sequence to text field, and, only apply to data matching a query (selected network), I use something like this:

if(isempty($feature.ID) && $feature.SYMBOL_TYPE == "3SL-C (LEFT) STRAIGHT TRAFFIC ARROW"){

    var vals = FeatureSetByName($datastore,"StripingPoints",['ID'],false)
    var STLCvals = Filter(vals, "ID LIKE 'STLC%'")
    var numarray = []

    for (var n in STLCvals){
    //  console(n)
        var nn = Number(Replace(n.ID, 'STLC',''))
        Push(numarray, nn)
    }
    var maxnum = Max(numarray)
    var maxtext = Concatenate('STLC',(Text(maxnum + 1, '00000')))

    return maxtext
}

Which separates the text part from the number so it can find the highest existing number, then concatenates that back to text string with formatting.

You will have to adjust for you fields, etc. but might get you along the right path.

R_

0 Kudos