Отображение большого количества объектов на карте

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Alex_mk
Интересующийся
Сообщения: 44
Зарегистрирован: 19 май 2014, 10:44
Репутация: 2

Отображение большого количества объектов на карте

Сообщение Alex_mk » 12 фев 2015, 11:37

Добрый день.
Мне необходимо отобразить на веб-карте большое количество объектов (около 500 000).
Понравился Leaflet, но такое количество объектов при использовании кластеризации он не потянул (использовал модуль для Qgis - gis2leaf).
Желательна интерактивность карты или хотя бы присутствие подписей объектов не ней. Она будет использоваться во внутренней сети компании.
Посоветуйте решение данной задачи.

VolandF
Интересующийся
Сообщения: 23
Зарегистрирован: 02 окт 2011, 16:58
Репутация: 1

Re: Отображение большого количества объектов на карте

Сообщение VolandF » 12 фев 2015, 11:48

Добрый день, Alex_mk
Для отображения данных в векторном виде можно использовать Openlayers 3 с webgl-рендерингом:
http://dev.camptocamp.com/files/ol3/web ... oints.html
Иначе нужен WMS сервис, отдающий уже готовую картинку.

Alex_mk
Интересующийся
Сообщения: 44
Зарегистрирован: 19 май 2014, 10:44
Репутация: 2

Re: Отображение большого количества объектов на карте

Сообщение Alex_mk » 12 фев 2015, 11:58

VolandF, а можно еще использовать geoserver или geomixer? или они не потянут такого количества объектов?

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

Re: Отображение большого количества объектов на карте

Сообщение trir » 12 фев 2015, 12:06

Alex_mk писал(а):VolandF, а можно еще использовать geoserver или geomixer? или они не потянут такого количества объектов?
Иначе нужен WMS сервис

Аватара пользователя
SergeyRyzhkov
Гуру
Сообщения: 909
Зарегистрирован: 02 июл 2014, 19:13
Репутация: 203
Ваше звание: GP-экотеррористы
Откуда: Санкт-Петербург
Контактная информация:

Re: Отображение большого количества объектов на карте

Сообщение SergeyRyzhkov » 12 фев 2015, 12:06

Alex_mk писал(а):VolandF, а можно еще использовать geoserver или geomixer? или они не потянут такого количества объектов?
А причем тут серверная часть?
Если я Вас правильно понял, то у Вас большое количество векторных данных, которые отдаются клиенту для рендеринга. Задача сервера всего лишь отдать порцию данных по запросу.
То есть тормоза - это клиент.
Способы:
- смотрите в сторону Vector Tiles (серверная часть + клиентская)
- уменьшайте объем передаваемых данных, используя предварительное "упрощение" геометрий для различных масштабов (это серверная часть)
- уменьшайте объем передаваемых данных, используя TopoJSON вместо GeoJSON (серверная часть + клиентская)
- смотрите в сторону d3 с Leaflet (чтобы уменьшить тормоза)
- ждите релиз leaflet, скоро ребята разродятся. Идет активная работа

VolandF
Интересующийся
Сообщения: 23
Зарегистрирован: 02 окт 2011, 16:58
Репутация: 1

Re: Отображение большого количества объектов на карте

Сообщение VolandF » 12 фев 2015, 13:16

Alex_mk, Т.к отрисовка векторного слоя происходит в браузере то при таком количестве объектов векторный способ затруднителен, лучше отображать сформированный на сервере растр, не обязательно тайлы, обычный WMS для ваших нужд вполне сгодиться, у вас же не публичный сервис с тысячами посещений. Можно использовать Mapserver, он пошустрее или GeoServer, у него попроще интерфейс.
При этом данные лучше хранить в пространственной базе данных(например Postgres+Postgis+shp2pgsql), используя индексирование, упрощение геометрии, выборки только в текущем охвате и прочие полезности.

Аватара пользователя
SergeyRyzhkov
Гуру
Сообщения: 909
Зарегистрирован: 02 июл 2014, 19:13
Репутация: 203
Ваше звание: GP-экотеррористы
Откуда: Санкт-Петербург
Контактная информация:

Re: Отображение большого количества объектов на карте

Сообщение SergeyRyzhkov » 12 фев 2015, 13:30

VolandF, Вы все правильно говорите, но если требования отображать именно вектор (по той или иной причине), то можно последовать советам выше (моим). У меня в текущем проекте 1.347.000 (!!!) узлов водоканала в базе "отдыхают" рендерим посредством vector tiles и счастье всем. И на клиенте нормальный вектор (для последующей работы) и тянется только то что нужно из базы.

Если уж совсем тяжко, то можно попробовать utfGrid, иначе только растр (

Alex_mk
Интересующийся
Сообщения: 44
Зарегистрирован: 19 май 2014, 10:44
Репутация: 2

Re: Отображение большого количества объектов на карте

Сообщение Alex_mk » 12 фев 2015, 13:36

SergeyRyzhkov писал(а): А причем тут серверная часть?
Если я Вас правильно понял, то у Вас большое количество векторных данных, которые отдаются клиенту для рендеринга. Задача сервера всего лишь отдать порцию данных по запросу.
То есть тормоза - это клиент.
Сервер предполагал использовать для порционной отдачи данных клиенту, но не знаю как и на чем можно это реализовать. Может есть примеры с очень большим количеством объектов на карте? Я пока таких не нашел. Если отображать сформированный растр, то пропадет интерактивность (нельзя будет кликнуть на точку и получить информацию по ней, например), чего бы не хотелось. Какой инструментарий серверной и клиентской части оптимально подойдет для выполнения требуемых задач?

Alex_mk
Интересующийся
Сообщения: 44
Зарегистрирован: 19 май 2014, 10:44
Репутация: 2

Re: Отображение большого количества объектов на карте

Сообщение Alex_mk » 12 фев 2015, 13:43

SergeyRyzhkov писал(а):VolandF, У меня в текущем проекте 1.347.000 (!!!) узлов водоканала в базе "отдыхают" рендерим посредством vector tiles и счастье всем.
можно это посмотреть где-то?

Аватара пользователя
SergeyRyzhkov
Гуру
Сообщения: 909
Зарегистрирован: 02 июл 2014, 19:13
Репутация: 203
Ваше звание: GP-экотеррористы
Откуда: Санкт-Петербург
Контактная информация:

Re: Отображение большого количества объектов на карте

Сообщение SergeyRyzhkov » 12 фев 2015, 13:50

Если про систему - нет. Она специально для Заказчика делается.
Про спецификацию и ее реализацию погуглите. Основная тема, что вы тянете с сервера также как и с растровыми тайлами, только то что нужно на текущий вид карты и возможно часть кэшируете.
Причем реализовать Вы можете как душе угодно, сам смысл важен

Дам пару ссылок
https://www.mapbox.com/developers/vector-tiles - общее
http://wiki.openstreetmap.org/wiki/Vector_tiles - общее
https://github.com/SpatialServer/Leafle ... VectorTile - плагин
https://github.com/mapbox/geojson-vt - еще
https://nelsonslog.wordpress.com/2013/0 ... tor-tiles/ - тут обратите внимание на релизацию отрисовки на d3 (TileLayer.d3_geoJSON.js). Но в новой версии leaflet есть подвижки с Canvas

VolandF
Интересующийся
Сообщения: 23
Зарегистрирован: 02 окт 2011, 16:58
Репутация: 1

Re: Отображение большого количества объектов на карте

Сообщение VolandF » 12 фев 2015, 13:53

Alex_mk писал(а):нельзя будет кликнуть на точку и получить информацию по ней, например
Можно, запрос getfeatureinfo реализован в большенстве клиентов, правда это уже грозит погружением в изучение OGC стандартов :shock:.

Andrey Zhukov
Гуру
Сообщения: 838
Зарегистрирован: 10 дек 2009, 23:24
Репутация: 169
Ваше звание: старик-гисовик
Откуда: Москва
Контактная информация:

Re: Отображение большого количества объектов на карте

Сообщение Andrey Zhukov » 12 фев 2015, 13:57

1. Тянуть на клиента кучу геометрии - моветон.
2. Кластеризацию можно делать на сервере.
3. Векторные тайлы - перекладывание всего функционала с сервера на клиента, разработчикам будет адская развлекуха.

VolandF
Интересующийся
Сообщения: 23
Зарегистрирован: 02 окт 2011, 16:58
Репутация: 1

Re: Отображение большого количества объектов на карте

Сообщение VolandF » 12 фев 2015, 14:48

Alex_mk, я бы посоветовал такую схему:

1) Mapserver 6.4.1 как WMS сервер
2) PostgreSQL 9.3 для хранения пространственных данных, расширение PostGis 2.1 для их анализа,
там же есть полезная штука shp2pgsql для загрузки шейп-файлов,
а так же магические операторы <-> и <#>, с помощью которых можно избежать использования getfeatureinfo.
К тому же при надлежащей оптимизации базы данных вопрос о производительности может и не возникнуть.
3) клиент OpenLayers или Leflet, что больше нравиться + javascript примочки типа Jquery и прочее.

Это вполне хватит чтобы отобразить вашу карту в браузере, получить информацию об объекте по клику, а так же реализовать поиск по атрибутам если понадобится.

Аватара пользователя
SergeyRyzhkov
Гуру
Сообщения: 909
Зарегистрирован: 02 июл 2014, 19:13
Репутация: 203
Ваше звание: GP-экотеррористы
Откуда: Санкт-Петербург
Контактная информация:

Re: Отображение большого количества объектов на карте

Сообщение SergeyRyzhkov » 12 фев 2015, 15:00

Коллеги, вот Вы все правильно говорите, советуете, но у меня есть предложение (на будущие ответы)
В общем вопросы бывают двух типов:
1. есть проблема в общем - как ее решить более оптимально (такие-то критерии)
2. есть конкретная задача - как ее решить более оптимально (такие-то критерии)
Давайте все в кучу не сваливать, а отвечать согласно вопросу.
Давайте думать о тех, кто придет на форум и будет читать тему, пытаясь найти подобное решение.

В данном вопросе есть конкретика (не совсем, но улавливается) - интерактивное отображение большого количества объектов. Если я правильно понял - это вектор. Клиент "тонкий", например leaflet. В локальной сети. Приложение просто посмотреть, без всяких наворотов
Вот зачем городить ГИС-серваки и т.д, кто за ними следить, даже если они бесплатные или покупать GeoMixer. Зачем тайлы, WMS и т.д. Если можно обойтись малой кровью.

Много конечно возникает вопросов для окончательного вердикта..
Alex_mk, если желаете напишите мне на почту, пообщаемся, может найдем приемлемый вариант. А потом Вы огласите здесь свое заключение (чтобы уважать форум)

Andrey Zhukov
Гуру
Сообщения: 838
Зарегистрирован: 10 дек 2009, 23:24
Репутация: 169
Ваше звание: старик-гисовик
Откуда: Москва
Контактная информация:

Re: Отображение большого количества объектов на карте

Сообщение Andrey Zhukov » 12 фев 2015, 15:05

SergeyRyzhkov, вы очень активно пытаетесь продать на этом форуме свои услуги.

Ответить

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

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

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