Страница 1 из 2
					
				Отображение большого количества объектов на карте
				Добавлено: 12 фев 2015, 11:37
				 Alex_mk
				Добрый день.
Мне необходимо отобразить на веб-карте большое количество объектов (около 500 000).
Понравился Leaflet, но такое количество объектов при использовании кластеризации он не потянул (использовал модуль для Qgis - gis2leaf).
Желательна интерактивность карты или хотя бы присутствие подписей объектов не ней. Она будет использоваться во внутренней сети компании.
Посоветуйте решение данной задачи.
			 
			
					
				Re: Отображение большого количества объектов на карте
				Добавлено: 12 фев 2015, 11:48
				 VolandF
				Добрый день, Alex_mk
Для отображения данных в векторном виде можно использовать Openlayers 3 с webgl-рендерингом:
http://dev.camptocamp.com/files/ol3/web ... oints.html
Иначе нужен WMS сервис, отдающий уже готовую картинку.
 
			
					
				Re: Отображение большого количества объектов на карте
				Добавлено: 12 фев 2015, 11:58
				 Alex_mk
				VolandF, а можно еще использовать geoserver или geomixer? или они не потянут такого количества объектов?
			 
			
					
				Re: Отображение большого количества объектов на карте
				Добавлено: 12 фев 2015, 12:06
				 trir
				Alex_mk писал(а):VolandF, а можно еще использовать geoserver или geomixer? или они не потянут такого количества объектов?
Иначе нужен WMS сервис
 
			
					
				Re: Отображение большого количества объектов на карте
				Добавлено: 12 фев 2015, 12:06
				 SergeyRyzhkov
				Alex_mk писал(а):VolandF, а можно еще использовать geoserver или geomixer? или они не потянут такого количества объектов?
А причем тут серверная часть? 
Если я Вас правильно понял, то у Вас большое количество векторных данных, которые отдаются клиенту для рендеринга. Задача сервера всего лишь отдать порцию данных по запросу.
То есть тормоза - это клиент.
Способы:
- смотрите в сторону 
Vector Tiles (серверная часть + клиентская)
- уменьшайте объем передаваемых данных, используя предварительное 
"упрощение" геометрий для различных масштабов (это серверная часть)
- уменьшайте объем передаваемых данных, используя 
TopoJSON вместо GeoJSON (серверная часть + клиентская)
- смотрите в сторону 
d3 с Leaflet (чтобы уменьшить тормоза) 
- ждите релиз leaflet, скоро ребята разродятся. Идет активная работа
 
			
					
				Re: Отображение большого количества объектов на карте
				Добавлено: 12 фев 2015, 13:16
				 VolandF
				Alex_mk, Т.к отрисовка векторного слоя происходит в браузере то при таком количестве объектов векторный способ затруднителен, лучше отображать сформированный на сервере растр, не обязательно тайлы, обычный WMS для ваших нужд вполне сгодиться, у вас же не публичный сервис с тысячами посещений. Можно использовать Mapserver, он пошустрее или GeoServer, у него попроще интерфейс.
При этом данные лучше хранить в пространственной базе данных(например Postgres+Postgis+shp2pgsql), используя индексирование, упрощение геометрии, выборки только в текущем охвате и прочие полезности.
			 
			
					
				Re: Отображение большого количества объектов на карте
				Добавлено: 12 фев 2015, 13:30
				 SergeyRyzhkov
				VolandF, Вы все правильно говорите, но если требования отображать именно вектор (по той или иной причине), то можно последовать советам выше (моим). У меня в текущем проекте 1.347.000 (!!!) узлов водоканала в базе "отдыхают" рендерим посредством vector tiles и счастье всем. И на клиенте нормальный вектор (для последующей работы) и тянется только то что нужно из базы. 
Если уж совсем тяжко, то можно попробовать utfGrid, иначе только растр (
			 
			
					
				Re: Отображение большого количества объектов на карте
				Добавлено: 12 фев 2015, 13:36
				 Alex_mk
				SergeyRyzhkov писал(а):
А причем тут серверная часть? 
Если я Вас правильно понял, то у Вас большое количество векторных данных, которые отдаются клиенту для рендеринга. Задача сервера всего лишь отдать порцию данных по запросу.
То есть тормоза - это клиент.
Сервер предполагал использовать для порционной отдачи данных клиенту, но не знаю как и на чем можно это реализовать. Может есть примеры с очень большим количеством объектов на карте? Я пока таких не нашел. Если отображать сформированный растр, то пропадет интерактивность (нельзя будет кликнуть на точку и получить информацию по ней, например), чего бы не хотелось. Какой инструментарий серверной и клиентской части оптимально подойдет для выполнения требуемых задач?
 
			
					
				Re: Отображение большого количества объектов на карте
				Добавлено: 12 фев 2015, 13:43
				 Alex_mk
				SergeyRyzhkov писал(а):VolandF, У меня в текущем проекте 1.347.000 (!!!) узлов водоканала в базе "отдыхают" рендерим посредством vector tiles и счастье всем. 
можно это посмотреть где-то?
 
			
					
				Re: Отображение большого количества объектов на карте
				Добавлено: 12 фев 2015, 13:50
				 SergeyRyzhkov
				Если про систему - нет. Она специально для Заказчика делается. 
Про спецификацию и ее реализацию погуглите. Основная тема, что вы тянете с сервера также как и с растровыми тайлами, только то что нужно на текущий вид карты и возможно часть кэшируете.
Причем реализовать Вы можете как душе угодно, сам смысл важен
Дам пару ссылок
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
 
			
					
				Re: Отображение большого количества объектов на карте
				Добавлено: 12 фев 2015, 13:53
				 VolandF
				Alex_mk писал(а):нельзя будет кликнуть на точку и получить информацию по ней, например
Можно, запрос getfeatureinfo реализован в большенстве клиентов, правда это уже грозит погружением в изучение OGC стандартов 

.
 
			
					
				Re: Отображение большого количества объектов на карте
				Добавлено: 12 фев 2015, 13:57
				 Andrey Zhukov
				1. Тянуть на клиента кучу геометрии - моветон.
2. Кластеризацию можно делать на сервере.
3. Векторные тайлы - перекладывание всего функционала с сервера на клиента, разработчикам будет адская развлекуха.
			 
			
					
				Re: Отображение большого количества объектов на карте
				Добавлено: 12 фев 2015, 14:48
				 VolandF
				Alex_mk, я бы посоветовал такую схему:
1) Mapserver 6.4.1 как WMS сервер
2) PostgreSQL 9.3 для хранения пространственных данных, расширение PostGis 2.1 для их анализа, 
там же есть полезная штука shp2pgsql для загрузки шейп-файлов,
а так же магические операторы <-> и <#>, с помощью которых можно избежать использования getfeatureinfo.
К тому же при надлежащей оптимизации базы данных вопрос о производительности может и не возникнуть.
3) клиент OpenLayers или Leflet, что больше нравиться + javascript примочки типа Jquery и прочее.
Это вполне хватит чтобы отобразить вашу карту в браузере, получить информацию об объекте по клику, а так же реализовать поиск по атрибутам если понадобится.
			 
			
					
				Re: Отображение большого количества объектов на карте
				Добавлено: 12 фев 2015, 15:00
				 SergeyRyzhkov
				Коллеги, вот Вы все правильно говорите, советуете, но у меня есть предложение (на будущие ответы)
В общем вопросы бывают двух типов: 
1. есть проблема в общем  - как ее решить более оптимально (такие-то критерии)
2. есть конкретная задача - как ее решить более оптимально (такие-то критерии)
Давайте все в кучу не сваливать, а отвечать согласно вопросу.
Давайте думать о тех, кто придет на форум и будет читать тему, пытаясь найти подобное решение.  
В данном вопросе есть конкретика (не совсем, но улавливается) - интерактивное отображение большого количества объектов. Если я правильно понял - это вектор. Клиент "тонкий", например leaflet. В локальной сети. Приложение просто посмотреть, без всяких наворотов
Вот зачем городить ГИС-серваки и т.д, кто за ними следить, даже если они бесплатные или покупать GeoMixer. Зачем тайлы, WMS и т.д. Если можно обойтись малой кровью.
Много конечно возникает вопросов для окончательного вердикта..
Alex_mk, если желаете напишите мне на почту, пообщаемся, может найдем приемлемый вариант. А потом Вы огласите здесь свое заключение (чтобы уважать форум)
			 
			
					
				Re: Отображение большого количества объектов на карте
				Добавлено: 12 фев 2015, 15:05
				 Andrey Zhukov
				SergeyRyzhkov, вы очень активно пытаетесь продать на этом форуме свои услуги.