Веб-разработка / Yandex maps или как правильно сделать поиск объектов без spatial индексов

В общем столкнулся с такой ситуацией в Yandex Картах.
Имеется база с объектам (~450 000 точек) координаты разбиты на поля X(lat) и Y(lon). Возникла задача в поиске этих точек в выбранной области. Область получаем следующим образом:

map.fnGetBounds = function () {
 var B = map.getBounds();
 var bnd = {y1:B.getTop(), x1:B.getLeft(), y2:B.getBottom(), x2:B.getRight()};
 return bnd;
};
b = map.fnGetBounds();


Получаем {x1:b.x1, x2:b.x2, y1:b.y1, y2:b.y2}

далее делаем запрос WHERE WHERE corX>=$x1 AND corY>=$y2 AND corX<=$x2 AND corY<=$y1

Результат — находит точки только той части которую мы видим на экране.


При уменьшенном масштабе видим что точки найдены только по координатом видимой области (рис 1)

 

Комментарии (7)

RSS свернуть / развернуть
+
0
avatar Claus
  • 22 / февраля / 2012 15:18
WHERE (x>=$x1 and x<=$x2) and (y>=$y1 and y<=$y2)
Так?
+
0
avatar drushka
  • 22 / февраля / 2012 15:55
Почитай тут
Может пригодится.
+
0
avatar mkw
  • 23 / февраля / 2012 11:15
Нет это не то. Как опредить функциями JS вхождение я знаю, как правильно выбрать из базы все что входит в область.
+
0
avatar random_linux_user
  • 23 / февраля / 2012 11:41
Чувак, а ты в школе учился?

Как можно додуматься до такого:
(x<=$x2 and x>=$x2)

Ты сам-то понимаешь, что условие никогда не выполнится? :)

Если по теме, то Mr_recovery тебе уже написал как надо правильно. Это школьная программа геометрии за 6 класс.
+
0
avatar mkw
  • 23 / февраля / 2012 12:59
Вообще я писал тот вариант как пример а не точное условие. Правильный вариант уже опубликовал.
+
0
avatar Claus
  • 24 / февраля / 2012 14:53
Ну так ты мой вариант и написал. Спасибо хотя бы сказал )
И да, такой запрос не решение проблем с тормозными запросами к базе. Попробуйте провести нагрузочное тестирование и удивитесь результату.
+
0
avatar mkw
  • 28 / февраля / 2012 23:47
Ну вообще то когда уже сделал только потом коммент увидел. Что касается нагрузки то это я знаю. Просто проект еще сырой тут пилить и пилить да и он не для общественности с ним будет работать 1 компания. Под завершение буду изучать spatial индексы.

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.