При использовании Leaflet для визуализации большого набора данных (GeoJSON с 10 000 точечными объектами) неудивительно, что браузер падает или зависает. Подвыборка из 1000 объектов из того же набора данных работает безупречно. К сожалению, я не могу поделиться набором данных для других, чтобы попробовать.
У кого-нибудь есть лучшие решения для визуализации таких больших наборов данных? (конечная цель состоит в том, чтобы расширить это до 2 миллионов функций) Я даже готов рассмотреть автономные платформы визуализации в случае, если альтернативы на основе браузера, такие как Polymaps или d3.js и т. д., будут признаны недееспособными.
Редактировать: забыл упомянуть, пользователь должен иметь возможность фильтровать набор данных по атрибутам. Таким образом, из N объектов, только соответствующие n <= N объектов могут нуждаться в динамическом рендеринге.
Ответы:
Я автор Leaflet. Для этого есть отличный плагин кластеризации, Leaflet.markercluster . Он очень быстрый и эффективный (взгляните на пример с 50 тыс. Маркеров), выглядит и работает очень плавно, с красивой анимацией, и имеет множество вариантов, соответствующих вашим потребностям.
источник
PruneCluster
выглядит многообещающе.Вы можете использовать TileMill и визуализировать точки как растровые изображения с быстрой интерактивностью из UTFGrid . Он масштабируется до миллионов точек и полигонов, как эта карта переписи , поскольку он интеллектуально отправляет только данные, необходимые для конкретных областей, именно тогда, когда это необходимо.
Насколько я знаю, нет других быстрых способов сделать это, кроме очень быстрого WFS-сервера, который довольно сложно поддерживать / масштабировать для многих зрителей.
Раскрытие: работа для MapBox , написал совсем немного кода. Но TileMill является бесплатным / открытым исходным кодом и т. Д.
источник
Вы смотрели в кластер листовок? Сообщение в блоге автора описывает это здесь
Другим вариантом, заслуживающим внимания, может быть использование листовки в сочетании с ГИС-облаком . Взгляните на эту демонстрацию, чтобы увидеть, как она справляется со многими геометриями очень быстро. Очень впечатляюще. Я никоим образом не связан с GISCloud.
источник
Вы никогда не должны отображать миллионы точек на карте. Не только из-за серьезных проблем с производительностью, но и с точки зрения пользователя, потому что для них, безусловно, будет трудно интерпретировать эти данные. Используйте некоторые средства агрегации данных (кластеризация, агрегирование по областям многоугольника и т. Д.) В сочетании с различными типами отображения на разных уровнях масштабирования (например, показывайте «необработанные» точечные данные только при очень высоких уровнях масштабирования и используйте агрегированные данные повсюду). Примером может служить сайт по недвижимости, такой как zillow.com .
источник
Я предлагаю вам уменьшить количество визуализированных точечных объектов: человеческий глаз не сможет увидеть 10 000 точек, не говоря уже о 2 000 000.
То, что вы можете попробовать, это динамический запрос набора данных с пользовательского сервера (который вам нужно будет настроить), например
Ваш сервер будет затем рассчитывать, какие точки вернуть, в зависимости от того, что пользователь хочет увидеть прямо сейчас. В зависимости от коэффициента масштабирования и отсечения, вам нужно будет только вернуть очень маленький процент точек без ухудшения пользовательского опыта.
Недостатки: настройка сервера (вы должны найти библиотеки для фильтрации географических точек) и медленный рендеринг (после каждого масштабирования или перетаскивания необходимо выполнить запрос к серверу)
источник
У меня были решения для отображения от 50 до 100 миллионов записей, вам нужно использовать серверные решения для построения сетки и динамики. Вы не можете отвечать на API веб-карты (Google или другие), чтобы выполнить рендеринг на стороне клиента ....
[http://96.231.36.9:8080/rbgis/google_map.html][1] попробуйте вышеуказанные ссылки и посмотрите, как
источник