Mysql, Как найти вмешательство прямоугольных границ - PullRequest
1 голос
/ 08 февраля 2012

Я сохранил границы в своей таблице базы данных из карт Google.Теперь я должен показать эти записи на основе соответствия границ.

Например, у меня есть таблица для записей панели инструментов, которые основаны на местоположениях / границах.Я сохраняю границы для каждой записи панели инструментов, возвращаемой картами Google.Теперь, если пользователь хотел видеть сообщения на панели инструментов, связанные с его городом / страной, я должен сопоставить границы города / страны пользователя с границами записей на панели управления.Таким образом, для этого пользователя появятся все записи панели инструментов, границы которых перекрываются с границами города / страны пользователя.

Прямо сейчас я пытаюсь использовать MySql OVERLAPS.Но я не могу получить правильный результат: (

Дамп таблицы с некоторыми тестовыми записями:

INSERT INTO dashboard_entries 
  (id, category_id, entry_title, entry_description, customer_id, entry_date, latitude, longitude, bounds_ne_lat, bounds_ne_lng, bounds_sw_lat, bounds_sw_lng)
VALUES (150, 10, 'Blog Post for China Trip', 'Test Description', 43, '2012-02-08 15:17:46', '48.229147', '16.346052', 39.9084350, 78.6526391, 32.5301142, 116.3918633), (151, 16, 'Trip Post for Lahore Pakistan', 'Trip Post for Lahore Pakistan', 43, '2012-02-08 15:19:14', '48.229147', '16.346052', 34.0160320, 66.6578507, 24.7482340, 75.3818660); 

Вот запрос, который я использую:

select * 
from dashboard_entries 
where Overlaps(GeomFromText('Polygon((34.0160320 66.6578507,34.0160320 75.3818660,24.7482340 75.3818660,24.7482340 66.6578507,34.0160320 66.6578507))'), GeomFromText('Polygon((bounds_ne_lat bounds_ne_lng,bounds_ne_lat bounds_sw_lng,bounds_sw_lat bounds_sw_lng,bounds_sw_lat bounds_ne_lng,bounds_ne_lat bounds_ne_lng))'))

1 Ответ

1 голос
/ 16 мая 2012

Я использовал функцию INTERSECT в mysql, чтобы найти пересечение по двум прямоугольникам. Я считаю, что функция перекрытия еще не реализована. Он принимает два прямоугольных параметра, как показано ниже. Второй параметр также является многоугольником, который сохраняется в базе данных.

SELECT * 
FROM dashboard_entries 
WHERE intersects(GeomFromText('Polygon((34.0160320 66.6578507,34.0160320 75.3818660,24.7482340 75.3818660,24.7482340 66.6578507,34.0160320 66.6578507))'), location_bounds)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...