Страница 1 из 2

Leaflet загрузка векторных данных по частям

Добавлено: 03 окт 2016, 12:00
gornak
Подскажите, пожалуйста:
имеется локальный векторный файл(полигональный,формат не важен -допустим geojson) достаточного большого размера(до 100 МБ)
существует ли какой-либо способ разбить его на части наподобие тайлового растрового слоя,
чтобы загружались данные только в текущем охвате карты(вариант с разворачиванием геосервера не подходит)
в плагинах упоминаются форматы вроде vector tile и пр.,но самостоятельно разобраться пока не могу

Re: Leaflet загрузка векторных данных по частям

Добавлено: 03 окт 2016, 12:40
Denis Rykov
Векторные тайлы. Существуют разные форматы, но стандартом на сегодняшний день является MVT. Тут всё как и с растровыми тайлами - либо вы нарезаете их заранее, либо по запросу, вот небольшая демка http://drnextgis.github.io/dday_mvt/

[ Сообщение с мобильного устройства ]

Re: Leaflet загрузка векторных данных по частям

Добавлено: 04 окт 2016, 08:02
gornak
Denis Rykov писал(а):либо вы нарезаете их заранее, либо по запросу
Спасибо то, что надо!
весь инструментарий нашел здесь https://github.com/mapbox/awesome-vector-tiles, но пока не выбрал, чем нарезать стандартный формат(...geojson,SHP) в ос win7.
насколько понимаю в демо нарезаны заранее и это более быстрый способ?
а как действует нарезка по запросу?Js скрипт обращается к какой-то программе и она выдает необходимые тайлы,или весь файл грузится в JS, а потом рендерится по тайлам?

Re: Leaflet загрузка векторных данных по частям

Добавлено: 04 окт 2016, 08:13
Denis Rykov
В демке именно пример создания тайлов «на лету». На сервер (в данном случае NextGIS Web) приходит запрос от клиента с координатами (z, x, y) тайлов, по переданным координатам вычисляется охват, сервер извлекает данные из хранилища (в данном случае PostGIS) на заданную территорию, кодирует данные с помощью библиотеки mapbox-vector-tile в MVT и отдаёт клиенту. Но, конечно, если тайлы нарезать заранее, то это будет ещё быстрее. Что касается NextGIS Web, то пока эта экспериментальная возможность не включена в ядро и живёт в отдельном бранче.

Re: Leaflet загрузка векторных данных по частям

Добавлено: 14 окт 2016, 16:19
gornak
Пока удалось сгенерировать MBTiles с помощью https://github.com/mapbox/tippecanoe ,процесс не описываю, т.к. не понятно что с этим делать, пока получается только загрузить на учетку в Mapbox, а как использовать локально и в Leaflete, непонятно...

Re: Leaflet загрузка векторных данных по частям

Добавлено: 19 окт 2016, 14:30
freeExec
Никак, т.к. по сути это база данных с тайлами внутри, нужен внешний инструмент для их извлечения и раздачи.
Вам нужен другой инструмент для генерации каждого тайлика отдельно, ищите на https://github.com/mapbox/awesome-vector-tiles
Например https://github.com/systemed/tilemaker

Re: Leaflet загрузка векторных данных по частям

Добавлено: 20 окт 2016, 06:11
Vladimir_R
Для подключения MBTiles в Leaflet нужно поднимать сервер, который умеет читать этот формат https://github.com/mapbox/awesome-vector-tiles#servers. Как альтернатива распокавать MBTiles в файлы z/x/y используя https://github.com/mapbox/mbutil и получать тайлы по запросу.

Re: Leaflet загрузка векторных данных по частям

Добавлено: 20 окт 2016, 09:10
gornak
Vladimir_R писал(а):Как альтернатива распокавать MBTiles в файлы z/x/y используя
mbutil работает насколько я понимаю с растровыми данными в MBTiles

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

Options:
--image_format=FORMAT
                        The format of the image tiles, either png, jpg, webp
                        or pbf
а мне же нужны векторные тайлы(т.е. доступ к геометрии и аттрибутам, возможные форматы mvt,pbf,geojson..?)
((хотя утилита отрабатывает - создает директорию с png, файлы хоть и разного размера , но графическими редакторами не открываются,я думаю что это не то.. ))

Re: Leaflet загрузка векторных данных по частям

Добавлено: 20 окт 2016, 09:14
freeExec
>>я думаю что это не то..
Естественно это не картинки,

Re: Leaflet загрузка векторных данных по частям

Добавлено: 20 окт 2016, 09:35
gornak
freeExec писал(а):Естественно это картинки,
причем картинки по-видимому "не правильные", ведь утилита не делает рендеринг!?
freeExec писал(а):or pbf

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

-util: error: option --image_format: invalid choice: 'pbf' (choose from 'png',
jpg')
видимо pbf здесь используется как формат хранения в MBTiles при импорте из файлов директории(т.е. обратный процесс-упаковка растровых тайлов в базу)

Re: Leaflet загрузка векторных данных по частям

Добавлено: 20 окт 2016, 09:51
gornak
freeExec писал(а):Например https://github.com/systemed/tilemaker
насчет Tilemaker:
1)остановило

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

On Ubuntu, start with
The chief dependencies are:
на данный момент нет "чистой" GNU для установки
2)

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

Tilemaker creates vector tiles (in Mapbox Vector Tile format) from an .osm.pbf planet extract
You can output them to individual files, or to a SQLite (.mbtiles) database.

судя по описанию программа позволяет нарезать вектор в отдельные файлы(или упаковать в тот же MBTiles)
но на входе использует pbf, если бы я работал с данными OSM это был бы выход, но у меня другие данные в формате geojson(shp,..) и как получить из них pbf???
3)вот здесь http://gdunlop.github.io/Vector-tiles-remixed/ вроде хотели написать, что можно использовать shp на входе, но на "Prepare OS data" руководство заканчивается и так и не понятно есть эта возможность в tilemaker или нет(в репозитории tilemaker речь только о pbf)

Re: Leaflet загрузка векторных данных по частям

Добавлено: 20 окт 2016, 11:13
gornak
еще попробовал https://github.com/mapbox/geojson-vt по схеме http://bl.ocks.org/sumbera/c67e5551b21c68dc8299 на локальном компьютере
не сказать, что понимаю, как все это работает, но работает быстро и здорово, но
1)насколько понимаю если файл geoJson с данными будет расположен на сервере , то все равно он в полном объеме будет грузиться сначала клиенту
2)виртуальные тайлы в данной реализации отрисовываются в leaflet-е на canvas, т.е. получается некий аналог клиентского WMTS сервера
а есть ли другой способ, чтобы были атрибуты и геометрия?

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

feature.tags.

Re: Leaflet загрузка векторных данных по частям

Добавлено: 20 окт 2016, 16:10
freeExec
Воспользовался mbutil, да он их назвал png, но это gzip в котором vectortile. Впрочем на указание --image_format=pbf никак не ругается, а создаёт с этим разрешением.

Re: Leaflet загрузка векторных данных по частям

Добавлено: 20 окт 2016, 16:36
gornak
1)
freeExec писал(а):но это gzip в котором vectortile
то есть Вы хотите сказать, что это pbf или mvt, и их можно загружать через плагин https://github.com/SpatialServer/Leafle ... VectorTile стоит только поменять расширение?
2)
freeExec писал(а): на указание --image_format=pbf никак не ругается,
почему ругается у меня?(файл в приложении, расширение надо поменять на .mbtiles иначе не грузиться на форум)
3)в итоге какой параметр

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

--image_format 
правильно использовать?

Re: Leaflet загрузка векторных данных по частям

Добавлено: 20 окт 2016, 17:50
Denis Rykov
Можно через плагин, я выше давал ссылку на демо, там он как раз и используется для Leaflet-а, OpenLayers 3 поддерживает MVT из коробки.