2010-11-04 3 views

ответ

2

Это просто сумма разницы между парами координат:

|x2 - x1| + |y2 - y1| 

Это вряд ли гарантирует хранимую процедуру.

1

Это очень просто. Manhattan Расстояние только сумма расстояний в каждом измерении, так:

SELECT ABS(x2 - x1) + ABS(y2 - y1) AS manhattan_distance FROM your_table 
2

Как насчет

CREATE OR REPLACE FUNCTION MANHATTAN_DISTANCE(X1 NUMBER, 
               Y1 NUMBER, 
               X2 NUMBER, 
               Y2 NUMBER) 
    RETURN NUMBER IS 
BEGIN 
    RETURN ABS(X1 - X2) + ABS(Y1 - Y2); 
END MANHATTAN_DISTANCE; 

Делите и наслаждайтесь.

Смежные вопросы