Leaflet + mapserver

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
mks
Новоприбывший
Сообщения: 8
Зарегистрирован: 28 ноя 2014, 21:38
Репутация: 0

Leaflet + mapserver

Сообщение mks » 29 ноя 2014, 19:38

Добрый день уважаемые.
Подскажите возможно ли в вышеупомянутой связке организовать tile server который подложку будет брать например из OSM и дополнительно накладывать на неё данные из локальной БД или файлов и всё вместе показывать в обозревателе, в leaflet? С картографией столкнулся первый раз в жизни, усиленно читаю документацию, но просветления пока не наступило.
Спасибо.

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

Re: Leaflet + mapserver

Сообщение Denis Rykov » 01 дек 2014, 14:22

Leaflet-у без разницы чьи тайлы отображать. По описанной вами схеме у вас должны быть следующие компоненты:
  1. Рендерер собственных данных (как вариант - Mapnik)
  2. Сервис наложения данных из п.1 на подложку OSM (MapProxy)
  3. Тайловый сервер (MapProxy)
Spatial is now, more than ever, just another column- The Geometry Column.

mks
Новоприбывший
Сообщения: 8
Зарегистрирован: 28 ноя 2014, 21:38
Репутация: 0

Re: Leaflet + mapserver

Сообщение mks » 01 дек 2014, 15:00

Спасибо за отклик.
Подскажите, mapnik это ведь библиотека, консольного приложения mapnik не существует? Я собственно и хотел на начальном этапе избежать встраивания таких библиотек в своё приложение и остановился на mapserver так как его можно вызывать по CGI и просто транслировать его выхлоп пользователю (в leaflet или что топодобное).
Вот тут описан tile mode для mapserver это разве не то что нужно для leflet?

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

Re: Leaflet + mapserver

Сообщение Denis Rykov » 01 дек 2014, 23:44

Извините, но я вас не понял, что значит избежать встраивания библиотек? MapServer CGI - это ни что иное, как приложение, использующее возможности библиотеки libmapserver (не путать с mapscript - баиндинги к этой библиотеке):

Код: Выделить всё

$apt-cache depends cgi-mapserver
cgi-mapserver
  Зависит: libc6
  Зависит: libfcgi0ldbl
  Зависит: libmapserver1
Аналогичную обёртку вы можете сделать используя Mapnik, пример, но чтобы не велосипедить, можно использовать MapProxy, развернув его удобным вам способом, или воспользовавшись serve-develop для тестов. Воспользовавшись MapProxy, вы получаете не просто всевозможные сервисы на выходе (TMS, WMS и пр.), но и полноценную поддержку тайловых кэшев (в стеке MapServer для этого используется отдельное приложение MapCache).
Spatial is now, more than ever, just another column- The Geometry Column.

mks
Новоприбывший
Сообщения: 8
Зарегистрирован: 28 ноя 2014, 21:38
Репутация: 0

Re: Leaflet + mapserver

Сообщение mks » 02 дек 2014, 14:31

Собственно я пишу приложение для рабочего стола на C++ и Qt в котором надо результаты расчётов показывать на карте. Что бы не писать свой виджет отображения карты решил вставить в приложение WebKit браузерный движёк и использовать Leaflet. Так же в приложение встроен http сервер который отдаёт в браузер страничку с картой + данные для отображения поверх карты. Что бы самому не заниматься сборкой всевозможных библиотек для чтения/отображения карт хочу по cgi интерфейсу подключить к своему http серверу mapserver. Поэтому встал вопрос с его настройкой. Надо было сразу изложить суть задачи, извините если ввёл в заблуждение.
Сейчас посидел подумал, пожалуй стоит подложку грузить напряму в leaflet из источника (OSM, Yandex) а на mapserver возложить только отдачу данных для отображения, а объединять слои в leaflet. Данные видимо будут лежать в БД SpatiaLite. Да, показывать мне надо вектора (точки и полигоны) и геопривязаные растровые картинки.
Что скажете про такую связку, она работоспособна? Может я что то упустил или не понял?

trir
Гуру
Сообщения: 5354
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Leaflet + mapserver

Сообщение trir » 02 дек 2014, 20:08

вектор можно и в самом leaflet показать и даже растр вставить...

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: Leaflet + mapserver

Сообщение Ariki » 02 дек 2014, 23:50

А большой ли объём данных? Если нет, может оказаться намного проще, коли уж у вас встроен HTTP-сервер в приложение, безо всякого MapServer прямо в вашем приложении генерировать и отдавать растровые тайлы по схеме TMS или совместимой с OSM и Google Maps, а векторные данные - в GeoJSON. Все эти форматы настолько просты, что их обычно проще генерировать самостоятельно, чем полагаться на сторонние приложения и библиотеки. За исключением случая, если вы собрались рендерить в растр собственную картографию с условными знаками, подписями и т. п. - тогда вам нужен Mapnik. MapServer требуется, когда нужно кэширование или следование стандартам OGC. В вашем настольном приложении всё это ни к чему.
Повозиться придётся только в том случае, если векторных данных много и их приходится отдавать частями по географическому охвату. Единого стандарта на такие сервисы нет (кроме сравнительно сложного WFS), но есть несколько реализаций, которые можно взять за образец, и плагины для Leaflet, позволяющие с ними работать. Посмотрите примеры здесь.

ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: Leaflet + mapserver

Сообщение ericsson » 03 дек 2014, 02:09

Да, может никакой сервер вообще и не нужен, просто написать один скрипт для растеризации (или конвертирования в вектор, пригодный для web) и последующей нарезки, а потом дергать его по расписанию или по признаку обновления данных какому-то. И просто хранить все это в файловой системе веб-сервера.

mks
Новоприбывший
Сообщения: 8
Зарегистрирован: 28 ноя 2014, 21:38
Репутация: 0

Re: Leaflet + mapserver

Сообщение mks » 03 дек 2014, 10:18

Всем спасибо за отклики, возьму перерыв на размышления...

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: Leaflet + mapserver

Сообщение Ariki » 03 дек 2014, 11:57

Ну если по-честному, в настольном приложении веб-сервер вообще выглядит костылём. Если лицензия приложения позволяет использовать GPL-код, можно воспользоваться QGIS Libraries или выдернуть что-нибудь отсюда; если нет - реализовать отрисовку тайликов и геометрий на Qt самому не сложнее, чем встроить в приложение веб-сервер и морду к нему, тем более при использовании SpatiaLite, на который можно возложить и перепроецирование, и пространственные выборки.

mks
Новоприбывший
Сообщения: 8
Зарегистрирован: 28 ноя 2014, 21:38
Репутация: 0

Re: Leaflet + mapserver

Сообщение mks » 03 дек 2014, 14:04

Ariki писал(а):А большой ли объём данных?
Вообще да, картинка может запросто весить 1 Гб или около того.
Ariki писал(а):Ну если по-честному, в настольном приложении веб-сервер вообще выглядит костылём.
В будущем думаем делать web клиент с урезанным функционалом поэтому пока предварительно выбрали такую архитектуру. К тому же приложение всё равно должно содержать в себе некий сервер для общения с удалённым узлом.
Ariki писал(а):... при использовании SpatiaLite, на который можно возложить и перепроецирование, и пространственные выборки.
На самом деле я пока не очень понимаю какие функции на что можно возложить и как это лучше сделать.

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: Leaflet + mapserver

Сообщение Ariki » 03 дек 2014, 17:45

mks писал(а):Вообще да, картинка может запросто весить 1 Гб или около того.
Размер растровых данных не имеет значения, они всё равно режутся на тайлы для веб-приложений, а для настольных строятся пирамиды (чтобы при мелких масштабах отображения отрисовывать не исходный растр, а его вариант в низком разрешении). Я не знаю специфику вашего приложения, можно ли у вас генерировать данные на лету для некоторого "окна" в определённом масштабе, или же сначала выполняется расчёт на всю территорию, картинка сохраняется и затем уже её надо оптимизировать для отображения.
В случае векторных данных, на СУБД можно возложить их выборку по пространственному охвату (окну отображения) и другим критериям, перепроецирование в картографическую проекцию и даже генерацию GeoJSON для отдачи по HTTP.

Аватара пользователя
jerry-maori
Гуру
Сообщения: 585
Зарегистрирован: 22 авг 2012, 17:02
Репутация: 143
Откуда: Нижний Новгород

Re: Leaflet + mapserver

Сообщение jerry-maori » 03 дек 2014, 20:12

1. Что представляют из себя результаты рассчётов? Именно в исходном виде.. Если это тупо сразу растр - одна история, если же это вектор, который загоняется в растр в угоду каким-либо причинам - совсем другая...
2. Приложение stand-alone или таки может щемится в интернет?
Если может - то все кульбиты с подложкой можно слать лесом... Опять же, leaflet вроде как может вывести на подложку почти любой каприз...

От этого зело многое зависит...

mks
Новоприбывший
Сообщения: 8
Зарегистрирован: 28 ноя 2014, 21:38
Репутация: 0

Re: Leaflet + mapserver

Сообщение mks » 04 дек 2014, 12:18

  • Результат расчётов изначально растровый (матрица напряжённости электромагнитного поля).
  • Обращаться в интернет можно.

Ответить

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

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

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