En Obtención de las propiedades del siguiente registro mediante la herramienta de cálculo de campos en ModelBuilder el PO pide sugerencias sobre el cálculo de las distancias entre pares de puntos en una clase de características.
He pensado en una solución alternativa utilizando la calculadora de campo con una lógica muy básica:
- para el primer registro memorizar la geometría del punto del campo Shape en la variable global pG y devuelve la distancia negativa
- para otros registros calcular la distancia entre la forma actual y una en la memoria, asignar pG \= Forma actual, distancia de retorno.
Expresión:
i=0
def FirstOrOthers(shp):
global pG,i
if i==0: i, dist, pG = 1, -1, shp
else: dist, pG=shp.distanceTo(pG),shp
return dist
#------
FirstOrOthers( !Shape! )
Salida mostrada en el campo DISTANCIA:
Cuando cambié ligeramente la expresión, para memorizar el primer punto de la geometría del punto:
i=0
def FirstOrOthers(shp):
global pG,i
if i==0: i, dist, pG = 1, -1, shp.firstPoint
else: dist, pG=shp.distanceTo(pG),shp.firstPoint
return dist
#------
FirstOrOthers( !Shape! )
Funcionó como se esperaba:
Significa que la calculadora de campo se niega a calcular la distancia entre 2 geometrías de puntos, pero lo hace para la geometría de puntos y un punto. Esto es arriesgado, porque el punto no tiene una referencia espacial definida. Por eso en los scripts siempre uso geometrías de 2 puntos para calcular la distancia entre 2 puntos.
¿Alguna idea sobre el comportamiento de la calculadora de campo de impar?
He hecho la prueba con ArcGIS Desktop 10.3.