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.