Простейшая карта для сайта

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
M@ster :-)
Новоприбывший
Сообщения: 3
Зарегистрирован: 27 окт 2010, 10:10
Репутация: 0

Простейшая карта для сайта

Сообщение M@ster :-) » 27 окт 2010, 10:30

Здравствуйте, уважаемые форумчане. У меня следующая проблема: Заказчик хочет на сайт выложить карту города с возможностью переходить от общего вида города к выбранному району.
Требования:
1. На карту должны быть нанесены наши "водяные знаки": название сайта и логотип компании
2. Сделать так, чтобы карту нельзя было скачать.
Доп. требования:
3. Возможность добавлять свои пометки на карте зарегистрированным пользователям.
Имеется: 300мб карт и сайт на Друпале.
Вопросы:
1. Существует ли готовое бесплатное решение, реализующее хотя бы базовые требования на уровне: "загрузил карты и живешь спокойно"
2. Если волшебной таблетки из в.1. не существует, то какое решение наиболее простое?

Аватара пользователя
nadiopt
Гуру
Сообщения: 4744
Зарегистрирован: 29 янв 2009, 13:27
Репутация: 495
Ваше звание: хрюкало
Откуда: Санкт-Петербург
Контактная информация:

Re: Простейшая карта для сайта

Сообщение nadiopt » 27 окт 2010, 10:57

во-первых, в чем и как сделана исходная карта?
если например в ArcGis - можно экспортнуть в svg и запихать как картинку. Знак и лого - пхнуть на карту прямо в Арке
в кугисе есть такой плагин ImageMap, делает растр+хтмл
но вот как спасти от скачивания - мне неведомо:(
ин гроссен фамилен нихт клювен клац клац

M@ster :-)
Новоприбывший
Сообщения: 3
Зарегистрирован: 27 окт 2010, 10:10
Репутация: 0

Re: Простейшая карта для сайта

Сообщение M@ster :-) » 27 окт 2010, 11:31

nadiopt писал(а):во-первых, в чем и как сделана исходная карта?
если например в ArcGis - можно экспортнуть в svg и запихать как картинку. Знак и лого - пхнуть на карту прямо в Арке
в кугисе есть такой плагин ImageMap, делает растр+хтмл
но вот как спасти от скачивания - мне неведомо:(
Карты в растре (jpg). Простая картинка не пойдет, скачивается за 2 клика да и по 30-40 мб на район - не есть айс.

Из решений пробовал ставить MapServer хотя бы на уровне примеров, однако защиты от сохранения там не нашел, да и сложный он, без пол-литра не разберешься.
Сейчас вижу пока 3 решения:
1. Ковырять MapServer или аналог (много доп.плюшек, но трудно, долго и необходимо знать мат.часть)
2. Попробовать запихать карту во Флеш (Точно не скачают, но трудно, долго и необходимо знать мат.часть)
3. Защитить картинку от скачивания(защита на уровне 90% не смогут скачать, но могут попросить те 10%, которые могут)

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Простейшая карта для сайта

Сообщение Denis Rykov » 27 окт 2010, 12:03

nadiopt писал(а):2. Попробовать запихать карту во Флеш (Точно не скачают, но трудно, долго и необходимо знать мат.часть)
Попробуйте OpenScales - никогда до этого не работая во флеше, основываясь только на примерах, буквально за 10 минут получил такую штуку. Не знаю как OpenScales работает с растрами напрямую, но в любом случае можно поднять WMS на том же MapServer (на сайте есть подробная инструкция) и подключить в OpenScales WMS слой.
Spatial is now, more than ever, just another column- The Geometry Column.

bim2010
Гуру
Сообщения: 977
Зарегистрирован: 27 янв 2009, 22:57
Репутация: 258

Re: Простейшая карта для сайта

Сообщение bim2010 » 27 окт 2010, 21:42

1. На карту должны быть нанесены наши "водяные знаки": название сайта и логотип компании
И так, карта у Вас в jpg.
Делаем прозрачный PNG с водяными знаками, растиражированный в размер карты. http://community.livejournal.com/ru_php/1424646.html
С помощью Global mapper например, склеиваем jpg + png в один растр.
2. Сделать так, чтобы карту нельзя было скачать.
От программиста защиты нет… Но от некоторой части пользователей можно.
1. Прозрачный Div над контентом.
2. <body onContextmenu="return false" onselectstart="return false">
3. BIS Development Kit
4. jpg файлов должно быть много, несколько сот тысяч.
Нарезать ваш растр можно с помощью инструмента MapTiler
Отобразить затем с помощью OpenLayers.Layer.TMS протокола, который вам поможет создать maptiler.
Скорость отображения вашей карты будет при таком исполнении максимальной.
Защищено ли такое решение? Нет. Впрочем, как не защищены карты Google maps, имеющие миллионы тайлов.
Впрочем, как не защищает вашу карту ни MapServer, ни flex.
Флеш (Точно не скачают, но трудно, долго и необходимо знать мат.часть)
Копию экрана еще никто не отменял, и написать обработку, соединяющую копирование экрана и перемещение на заданный диапазон …. по экрану…
Т.е. как бы Вы не хранили на сервере Ваши данные, даже если тайлы будут спрятаны в SQL, все равно на клиентской стороне вы их представите уже в виде удобном для восприятия, а значит и для скачивания.
Вывод - данные должны быть искажены на клиентской стороне.
Возьмем в руки бумажный атлас города, состоящий из нескольких десятков страниц.
Разошьем его и попробуем приложить страницы так, как будто мы хотим их склеить в одно полотно. В результате наших экспериментов мы увидим, что некоторые из страниц очень сильно расходятся. На листе A4 расхождение может составлять 15 мм.
Что -то подобное необходимо сделать с растром на стороне клиента.
Уточняю, что это надо сделать не с тайлом, и не с общим растром, а c тем изображением, которое отправляется клиенту по запросу (группа тайлов).
Что это будет “Гиперболический параболоид
http://www.pm298.ru/2pov4.php
или Лист Мёбиуса
http://www.mathnet.ru/php/getFT.phtml?j ... n_lang=rus
или из прямоугольника сделаете трапецию или ромб это уже дело вкуса и математической практики.
3. Возможность добавлять свои пометки на карте зарегистрированным пользователям.
Имеется: 300мб карт и сайт на Друпале.
Под Drupal интересное бесплатное решение:
Mapping kit: using OpenLayers and MapServer
http://aardbodem.nl/node/8
Название темы только поменяйте или возьмите в кавычки -
Простейшая карта для сайта
Вложения
openscale.jpg
openscale.jpg (215.48 КБ) 9801 просмотр

M@ster :-)
Новоприбывший
Сообщения: 3
Зарегистрирован: 27 окт 2010, 10:10
Репутация: 0

Re: Простейшая карта для сайта

Сообщение M@ster :-) » 03 ноя 2010, 13:24

bim2010 писал(а):
1. На карту должны быть нанесены наши "водяные знаки": название сайта и логотип компании
И так, карта у Вас в jpg
....
Спасибо за столь подробный ответ, это - лучший ответ на те вопросы, которые я когда-либо задавал на форумах.

Немного расскажу, как у меня получилось решить проблему:
1. Нарезаем растр с помощью MapTiler. Получаем несколько уровней отображения карты и тучу png. файлов размером 256х256 пикселей. Также подготовим файл с водяным знаком соответствующих размеров.
2. На всю эту кучу файлов накладываем водяные знаки с помощью ImageMagick:
composite -watermark 15 -gravity South "watermark.png" result.png
-watermark 15 означает, что наложенный водяной знак будет видимым на 15%. Подробнее

Находим все файлы:
find /path/to/folder/with/tiles -name "*.png" > /path/to/filelist/files.list
и запускаем скриптик чтобы не переименовывать все вручную:
Спойлер
#!/bin/bash
MYFILES=/home/master/center/files.list
for name in $(awk 'BEGIN{FS=":"}{print $1}' < "$MYFILES" )
do
composite -watermark 15 -gravity South "/path/to/watermarkImage/watermark.png" $name $name
done
exit 0
3. Если вы работаете под Windows, то можно воспользоваться программой Watermark Master (скачать). Демоверсия доступна на 20 дней, поддерживает пакетное наложение водяных знаков.

Что имеется теперь: У нас есть нарезанная карта с водяными знаками в каждом тайле, OpenLayers для отображения. При попытке сохранения на маленьком масштабе теряется качество, при попытке сохранения в большем масштабе появляется необходимость сохранять кучу файлов и соединять их.
Кроме того, водяной знак затрудняет все это дело, особенно в печати
Что осталось: Требуется интегрировать карту с сайтом с помощью MappingKit, это просто не успел ещё попробовать.

Ещё раз большое спасибо bim2010!

Аватара пользователя
PbIXTOP
Новоприбывший
Сообщения: 3
Зарегистрирован: 09 дек 2010, 19:27
Репутация: 0

Re: Простейшая карта для сайта

Сообщение PbIXTOP » 09 дек 2010, 19:33

Из вариантов нанесения WaterMark
Запросы к тайлам прогонять не напрямую, а через дополнительный скрипт, который будет уже запрашивать кусок карты, накладывая на него watermark, и по возможности реализовывать защиту.
Соответственно для такой связки нужен прокси, который бы помог снизить нагрузку на скрипт, кешируя готовые изображения.

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Простейшая карта для сайта

Сообщение Mavka » 09 дек 2010, 20:12

MapProxy умеет брать стопочку тайлов, печатать на них watermark и отдавать клиентам.
лангольеры под окном жрали время ом-ном-ном

Ответить

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей