1 votos

La regla de atributos funciona en Pro 2.9.2, pero no en Pro 2.6.8

Tengo una regla de atributo de cálculo que funciona en Pro 2.9.2 (en una FGDB 2.9.2). Actualiza los valores M de la geometría de la polilínea:

function pythagoras(x1, y1, x2, y2) {
    return sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));
}

var geom = Dictionary(Text(Geometry($feature)));
var paths = geom['paths'];
var oldX = paths[0][0][0];
var oldY = paths[0][0][1];
var line_length = 0;

for (var path_idx in paths) {
    for (var point_idx in paths[path_idx]) {
        var newX = paths[path_idx][point_idx][0];
        var newY = paths[path_idx][point_idx][1];
        if (point_idx != 0) {
            line_length += pythagoras(oldX, oldY, newX, newY);
        }
        paths[path_idx][point_idx][-1] = line_length;
        oldX = newX;
        oldY = newY;
    }
}
return Polyline(geom);

Sin embargo, si creo esa regla de atributo en Pro 2.6.8 (en un FGDB 2.6.8 independiente), no funciona como se esperaba. Se ejecuta sin errores, e incluso densifica curvas verdaderas (lo que me indica que el código es en marcha), pero no actualiza correctamente los valores M de los vértices (establece los valores M en Nan).

¿Hay algo en ese script que no sea compatible con versiones anteriores de Arcade?

Creo que las funciones Dictionary(), Text() y Geometry() funcionan correctamente (ya que el script devuelve con éxito una geometría densificada). Así que creo que debe ser otra cosa.

Lamentablemente, no puedo actualizar Pro ahora mismo, ya que nuestra versión del gestor de licencias no es compatible con versiones posteriores de Pro.

1voto

user62572 Puntos 587

El siguiente script de prueba funciona en Pro 2.6.8. Ajusta las coordenadas Y, en lugar de las coordenadas M.

var geom = Dictionary(Text(Geometry($feature)));
var paths = geom['paths'];

for (var path_idx in paths) {
    for (var point_idx in paths[path_idx]) {
        paths[path_idx][point_idx][1] += 10
    }
}
return Polyline(geom);

enter image description here


Sin embargo, si cambio el script para que actualice las coordenadas M, en lugar de las coordenadas Y, entonces no funciona. No obtengo ningún error, pero los valores M simplemente se actualizan a Nan que no es lo que quiero.

var geom = Dictionary(Text(Geometry($feature)));
var paths = geom['paths'];

for (var path_idx in paths) {
    for (var point_idx in paths[path_idx]) {
        paths[path_idx][point_idx][2] += 10
    }
}
return Polyline(geom);

enter image description here

Eso me dice que hay un error en Pro 2.6.8. No es capaz de actualizar correctamente los valores M de la geometría.

(Y por si sirve de algo, he probado a utilizar la función Geometry() en lugar de la función Polyline() para devolver el valor a la geometría. Del mismo modo, que trabajó para las coordenadas Y, pero no las coordenadas M).


No tengo ese problema en Pro 2.9.2. El script puede actualizar los valores M sin problemas:

enter image description here

Así que creo que el problema sólo existe en versiones anteriores como la 2.6.8.

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