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

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
gornak
Активный участник
Сообщения: 134
Зарегистрирован: 30 авг 2015, 16:38
Репутация: 24
Контактная информация:

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

Сообщение gornak » 03 окт 2016, 12:00

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

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

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

Сообщение Denis Rykov » 03 окт 2016, 12:40

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

[ Сообщение с мобильного устройства ]
Spatial is now, more than ever, just another column- The Geometry Column.

gornak
Активный участник
Сообщения: 134
Зарегистрирован: 30 авг 2015, 16:38
Репутация: 24
Контактная информация:

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

Сообщение gornak » 04 окт 2016, 08:02

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

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

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

Сообщение Denis Rykov » 04 окт 2016, 08:13

В демке именно пример создания тайлов «на лету». На сервер (в данном случае NextGIS Web) приходит запрос от клиента с координатами (z, x, y) тайлов, по переданным координатам вычисляется охват, сервер извлекает данные из хранилища (в данном случае PostGIS) на заданную территорию, кодирует данные с помощью библиотеки mapbox-vector-tile в MVT и отдаёт клиенту. Но, конечно, если тайлы нарезать заранее, то это будет ещё быстрее. Что касается NextGIS Web, то пока эта экспериментальная возможность не включена в ядро и живёт в отдельном бранче.
Spatial is now, more than ever, just another column- The Geometry Column.

gornak
Активный участник
Сообщения: 134
Зарегистрирован: 30 авг 2015, 16:38
Репутация: 24
Контактная информация:

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

Сообщение gornak » 14 окт 2016, 16:19

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

freeExec
Гуру
Сообщения: 554
Зарегистрирован: 23 апр 2011, 10:32
Проекты: 1
Репутация: 76
Откуда: Ульяновск

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

Сообщение freeExec » 19 окт 2016, 14:30

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

Vladimir_R
Активный участник
Сообщения: 140
Зарегистрирован: 14 апр 2010, 14:11
Репутация: 44
Откуда: Екатеринбург

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

Сообщение Vladimir_R » 20 окт 2016, 06:11

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

gornak
Активный участник
Сообщения: 134
Зарегистрирован: 30 авг 2015, 16:38
Репутация: 24
Контактная информация:

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

Сообщение gornak » 20 окт 2016, 09:10

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, файлы хоть и разного размера , но графическими редакторами не открываются,я думаю что это не то.. ))

freeExec
Гуру
Сообщения: 554
Зарегистрирован: 23 апр 2011, 10:32
Проекты: 1
Репутация: 76
Откуда: Ульяновск

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

Сообщение freeExec » 20 окт 2016, 09:14

>>я думаю что это не то..
Естественно это не картинки,
Последний раз редактировалось freeExec 20 окт 2016, 16:11, всего редактировалось 1 раз.

gornak
Активный участник
Сообщения: 134
Зарегистрирован: 30 авг 2015, 16:38
Репутация: 24
Контактная информация:

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

Сообщение gornak » 20 окт 2016, 09:35

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

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

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

gornak
Активный участник
Сообщения: 134
Зарегистрирован: 30 авг 2015, 16:38
Репутация: 24
Контактная информация:

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

Сообщение gornak » 20 окт 2016, 09:51

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)

gornak
Активный участник
Сообщения: 134
Зарегистрирован: 30 авг 2015, 16:38
Репутация: 24
Контактная информация:

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

Сообщение gornak » 20 окт 2016, 11:13

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

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

feature.tags.

freeExec
Гуру
Сообщения: 554
Зарегистрирован: 23 апр 2011, 10:32
Проекты: 1
Репутация: 76
Откуда: Ульяновск

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

Сообщение freeExec » 20 окт 2016, 16:10

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

gornak
Активный участник
Сообщения: 134
Зарегистрирован: 30 авг 2015, 16:38
Репутация: 24
Контактная информация:

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

Сообщение gornak » 20 окт 2016, 16:36

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

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

--image_format 
правильно использовать?
Вложения
kv.txt
(5.05 МБ) 37 скачиваний

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

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

Сообщение Denis Rykov » 20 окт 2016, 17:50

Можно через плагин, я выше давал ссылку на демо, там он как раз и используется для Leaflet-а, OpenLayers 3 поддерживает MVT из коробки.
Spatial is now, more than ever, just another column- The Geometry Column.

Ответить

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