Клуб API Карт

О слоях активных областей

Aybulat-Iskhakov
14 марта 2011, 09:12

Напишите пожалуйста, в каком направлении двигаться.

Задача такая: требуется из очень большого массива (мегабайта 2-3) координат (в географической проекции, не относительной) создать карту, похожую на Народные карты. Все координаты принадлежат полигонам довольно большой площади. Думаеться эту задачу нужно решать при помощи программы, объединяющей скрипт Twirl'a и программу подготовки слоя тайлов. Ни одна из них по-отдельности не годится, нужно переделывать. Посмотрел в сторону ImageMagick, думаю как бы его так использовать. Подскажите, я правильно думаю что программа должна работать так:

1-Создается большой *.png из координат (тут я вижу проблему)

2-Нарезается по тайлам

3-Создаются js (hotspots) и все раскидывается по папкам (тут я вижу вторую проблему) в соответствии с увеличением и координатами

4-Генерируется основой html

Может, следует как-то иначе это сделать? Если да, то как? Может уже есть такая программа у кого-нибудь?)))

Помогите советом!

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

проще сделать немного не так:

1. Создаются структуры данных по которым легко создать js хотспоты и совешать выборки данных.

Будем считатать что это будет mysql таблица где будет храниться MBR полигона в пиксельных(на 22 зуме, для получения меньшего - делите на два) координатах и сами данные полигона.

2. "Как-то" опеределяется пирамида рендеринга, тоесть какие тайлы требуется создать.

3. Далее запускается скрипт который генерить каждую отдельную ячейку. Так как он работает на основе БД таких воркеров можно запускать десятками.

4. По этим же данным одновременно генерим js файлы. Или не генерим, а создаем и отдает по запросу.

5. В принципе можно результаты всех щагов класть обратно в бд - иногда работа с файлами сохраненными в БД даже малек(а если файлов очень много то уже не малек) быстрее чем с обычной ФС. Остальное проблемы mod_rewrite

Вопросы:

1. Если структуры данных - это большие файлы YamapsML, то скрипт, получается, можно пускать по ним? (Перевод координат в XML уже реализован, только виснет их отрисовка, поэтому активные области)

2. Извиняюсь за глупый вопрос, но как географические координаты преобразовать в пиксельные?

3. И еще, сервак поднимать неохота, я думаю не скрипт а экзешник сделать, а то опыта нету((( Что если базу уже сгенерированных тайлов держать на сайте и грузить их уже готовые, то есть вся работа ложится на скрипты страницы?

Сервак кто-нибудь да поднимет и сайт еще в проекте, мне бы тайлы сделать))) Или лучше сразу все делать? Как быстрее будет - на лету или готовые тайлы брать?

 

Вот это
renderer:{url:'http:\/\/wvec.maps.yandex.net
 на Народных картах, как мне кажется, делает то, что мне нужно? Как можно его использовать (код или там src со ссылкой на него)

Скрипт твирла можно пускать на YML и только на этот формат. Вот только в данном случае вас каждый раз будет ожидать полная генерация ВСЕГО. Если же из базы данных выбрать только тот сегмент где произошли изменения можно только его обернуть в YML и отправить в hstiler. Хоть немного будет легче.

2. На js - это YMaps.Converter, на php - ищите магическое слово mercator в hstiler

3. Вы можете это делать на своей домашней машине, получать конечные файлы, а потом делать rsync\F5

Быстрее конечно же работать с готовыми. Вот только конечному пользователю иногда без разницы за сколько он получил данные - за 1мсек, или за 50 - глазу всеравно не заметно

Хм, а что такое тайл? Он же может перекрывать другие тайлы, располагаться в произвольном месте карты, грузиться только при определенном уровне масштабирования? Если это так, то, действительно, зачем его нарезать из огромного png...

Но как проверяется условие нахождения тайла в текущем окне?

Нужно ли сначала закинуть в клиентское окно всю эту кучу js? Или  YMaps.Hotspots.Loader сам разберется? Как он работает?

Вообще, в скрипте оставлена возможность сделать поддержку ломаных и многоугольников. Если есть желание и знание PHP - можете дописать.

Иначе Вам нужно писать полностью свой рендер, который нарежет Ваши данные на тайлы. Программа подготовки слоя тайлов Вам поможет вряд ли.

Задача выглядит примерно так: для всех масштабов с 0 до 18 пройти по всем тайлам, определить, какие фигуры в тайл попадают, и сформировать пару файлов - png с картинкой

и js с геометрией.

Добрый день! Не подскажите в какую сторону копать, чтобы сделать поддержку полигонов? Очень нужно:)