Клуб API Карт

вывод объектов только на маршруте

Евгений
7 октября 2014, 20:30

Добрый вечер.

Есть огромная база объектов (от нескольких тысяч штук до, возможно, десятков тысяч), например, заправок, по всей РФ.

Посетитель сайта, вводит начальную и конечную точки (это может как "от Москвы до Иркутска", так и "от координаты1 до координаты2"), после чего на карте отображается маршрут посредством маршрутизатора.

Так вот, как отобразить ТОЛЬКО те объекты из нашей БД, которые лежат на данном маршруте (например, в пределах +-100м от маршрута)? (Координаты всех объектов известны заранее.)


Я не то чтобы прошу конкретного решения - это слишком жирно:), а прошу натолкнуть на оптимальные варианты исполнения и вообще на возможность решения данной задачи. Так понимаю, что это издали схоже с "Попадание точек в окружность" (http://api.yandex.ru/maps/jsbox/2.0/placemarks_in_circle), но в нашем случае окружность - это маршрут. И причём нам не надо отображать все объекты базы (одни - одним цветом, а те, которые на маршруте - другим), ведь их ОЧЕНЬ много. Нам надо отображать только те, что на маршруте. Откуда начинать учить?


ПС: Или может как-то формировать базу объектов специфически? Например, указывать помимо всего прочего регионы (субъекты федерации), к которым относятся объекты? Не облегчит ли это вывод только объектов, находящихся на заданном маршруте? Другими словами, можно ли узнать регионы, по которым проходит заданный посетителем маршрут? (Это на тот случай, если нет другой возможности отфильтровать часть ненужных при заданных параметрах объектов. Чтобы не выводить все например 5000 объектов, а вывести только те, которые в регионах, через которые проходит заданный маршрут.)


Благо дарую.

5 комментариев
Подписаться на комментарии к посту

Маршрут представляет собой ломаную, для решения задачи надо:

1. вычислить координаты Buffer-полигона описанного вокруг этой ломанной на определенном расстоянии. 

2. найти точки попадающие в этот полигон.

 

Пункт 2 умеют почти все geospatial расширения всех БД.

Пункт 1, на моей памяти, умеет лишь PostGig, либо какие-нибудь внешние библиотеки типа GEOS

Классно!

ПостГИС работает с СУБД PostgreSQL. Т.е. отпадает. Нужна работа исключительно с MySQL. Т.е. остаётся вариант внешних библиотек для мускула. Да и к тому же наткнулся тут на такие сравнительные цифры (время обработки запросов), что тоже не в пользу постгрескуля:

CONNECTIONSPOSTGISMYSQL

11.8170.220

10010.5170.557

(отсель: http://pento.net/2009/05/18/mysql-and-geospatial-data/)

..

Буду разбираться.

 

бабушка-бэтмен, благодарю за данное мне направление!


А вот ещё в догонку вопрос:

А при использовании кластеризатора API Yandex, к примеру, 3000-10000 точек - это много (в плане нагрузок и времени, конечно)?

Или желательно использовать тайлы? (на примере кащея, к прмиеру: https://github.com/theKashey/quadLoader)

 

Ну и вот, очепятка ("а" - лишняя в названии):

http://api.yandex.ru/maps/jsbox/2.1/cluster_balloon_twoColumns_21

"Макета балуна кластера "Две колонки""

 

А при использовании кластеризатора API Yandex, к примеру, 3000-10000 точек - это много (в плане нагрузок и времени, конечно)?

10000 в данный момент можно кластеризовать и на клиенте.

У нас в 2.1 появились новые модули для этого

http://api.yandex.ru/maps/doc/jsapi/2.1/dg/concepts/many-objects.xml

Спасибо. Пошёл учить.

Спасибо за эту страницу в документации. Для такого можно было бы и отдельный пост-анонс в блоге сделать :)