2015-02-23 3 views
0

я точка координаты на основе два двойных значений x0,y0 как в этом формате: XX.X (точка как десятичный сепаратор)получить координаты от ближайшей базы данных SQLite

В базе данных у меня есть список строк, которые определены по координатам x1,y1 в качестве начальной точки и x2,y2 в качестве конечной точки. Среди других столбцов (например, толщину линии и так далее) в базе данных имеются следующие столбцы:

id | x1 | y1 | x2 | y2

Что я должен был бы запрос, который возвращает то, что линия имеет либо нейтралью (x1, y1) или конечная точка (x2, y2), ближайшая к моей базовой точке (x0, y0). Итак, линия, которая начинается или заканчивается ближе к моей текущей позиции.

Благодаря

+0

Является ли это декартова система координат? –

+0

Да, это декартова система координат. – sharkyenergy

+0

Вам нужно 1. вычислить расстояние между двумя точками, 2. получить меньший из двух расстояний и 3. получить строку с маленькими такими расстояниями. С какими из этих трех шагов у вас есть проблема? –

ответ

1

SQLite не имеет квадратный корень функции, но для сравнения расстояний, мы можем точно также использовать квадрат расстояния:

SELECT * 
FROM MyTable 
ORDER BY min((x1-x0)*(x1-x0) + (y1-y0)*(y1-y0), 
      (x2-x0)*(x2-x0) + (y2-y0)*(y2-y0)) 
LIMIT 1 
+0

спасибо! order by min (distance1, distance2), что произойдет, если расстояние 2 будет самым маленьким? – sharkyenergy

+0

Посмотрите документацию [min()] (http://www.sqlite.org/lang_corefunc.html#minoreunc). –