2 votos

Expresión Arcade para encontrar el valor mínimo que no es cero

Estoy tratando de crear una expresión Arcade para calcular un campo en ArcGIS Pro. En mi característica de las calles hay 4 campos numéricos para evaluar. Puedo utilizar fácilmente el Min() para hacerlo. El problema que tengo es que a veces hay un 0 en uno o más campos. Necesito el número más bajo que no sea un 0. En python tenía este script que funcionaba bien:

min([x for x in ( !L_F_ADD!, !L_T_ADD!, !R_F_ADD!, !R_T_ADD!) if x is not 0])

He tratado de rehacer esto en Arcade pero no puedo resolverlo. ¿Alguna idea?

2voto

John Kramlich Puntos 286

Estás utilizando un método de codificación llamado comprensión de listas que es algo que el lenguaje Python entiende. Hasta donde yo sé, esta técnica no existe en Arcade, por lo que tienes que abordar el problema de una manera diferente.

A continuación hay un código que he elaborado y que devuelve el primer valor distinto de cero de una matriz ordenada.

f1 a f4 serían sus campos.

var inArray = [$feature.f1,$feature.f2,$feature.f3,$feature.f4];
var sortedArray;
sortedArray = sort(inArray);
for(var i in sortedArray)
{
if (sortedArray[i] > 0) break;        
}
return sortedArray[i];

Como Arcacde es un nuevo lenguaje de scripting he encontrado esto página de prueba muy útil cuando se trata de averiguar lo que se quiere, especialmente si se está portando desde Python.

1voto

También hice esta pregunta en GeoNet de Esri foro y quería compartir la solución que se le ocurrió a xander_bakker:

var minv = 99999; 
var arr = [$feature.FromAddr_L, $feature.ToAddr_L, $feature.FromAddr_R, $feature.ToAddr_R];
    for (var i in arr) {
    var v = arr[i];
    if (v!=0 && !IsEmpty(v)) {
        if (v < minv) {
            minv = v;
        }
    } }

if (minv == 99999) {
    return null;     } else {
    return minv; }

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