Leaflet загрузка векторных данных по частям
-
- Активный участник
- Сообщения: 146
- Зарегистрирован: 30 авг 2015, 16:38
- Репутация: 25
- Контактная информация:
Leaflet загрузка векторных данных по частям
Подскажите, пожалуйста:
имеется локальный векторный файл(полигональный,формат не важен -допустим geojson) достаточного большого размера(до 100 МБ)
существует ли какой-либо способ разбить его на части наподобие тайлового растрового слоя,
чтобы загружались данные только в текущем охвате карты(вариант с разворачиванием геосервера не подходит)
в плагинах упоминаются форматы вроде vector tile и пр.,но самостоятельно разобраться пока не могу
имеется локальный векторный файл(полигональный,формат не важен -допустим geojson) достаточного большого размера(до 100 МБ)
существует ли какой-либо способ разбить его на части наподобие тайлового растрового слоя,
чтобы загружались данные только в текущем охвате карты(вариант с разворачиванием геосервера не подходит)
в плагинах упоминаются форматы вроде vector tile и пр.,но самостоятельно разобраться пока не могу
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Leaflet загрузка векторных данных по частям
Векторные тайлы. Существуют разные форматы, но стандартом на сегодняшний день является MVT. Тут всё как и с растровыми тайлами - либо вы нарезаете их заранее, либо по запросу, вот небольшая демка http://drnextgis.github.io/dday_mvt/
[ Сообщение с мобильного устройства ]
[ Сообщение с мобильного устройства ]
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Активный участник
- Сообщения: 146
- Зарегистрирован: 30 авг 2015, 16:38
- Репутация: 25
- Контактная информация:
Re: Leaflet загрузка векторных данных по частям
Спасибо то, что надо!Denis Rykov писал(а):либо вы нарезаете их заранее, либо по запросу
весь инструментарий нашел здесь https://github.com/mapbox/awesome-vector-tiles, но пока не выбрал, чем нарезать стандартный формат(...geojson,SHP) в ос win7.
насколько понимаю в демо нарезаны заранее и это более быстрый способ?
а как действует нарезка по запросу?Js скрипт обращается к какой-то программе и она выдает необходимые тайлы,или весь файл грузится в JS, а потом рендерится по тайлам?
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Leaflet загрузка векторных данных по частям
В демке именно пример создания тайлов «на лету». На сервер (в данном случае NextGIS Web) приходит запрос от клиента с координатами (z, x, y) тайлов, по переданным координатам вычисляется охват, сервер извлекает данные из хранилища (в данном случае PostGIS) на заданную территорию, кодирует данные с помощью библиотеки mapbox-vector-tile в MVT и отдаёт клиенту. Но, конечно, если тайлы нарезать заранее, то это будет ещё быстрее. Что касается NextGIS Web, то пока эта экспериментальная возможность не включена в ядро и живёт в отдельном бранче.
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Активный участник
- Сообщения: 146
- Зарегистрирован: 30 авг 2015, 16:38
- Репутация: 25
- Контактная информация:
Re: Leaflet загрузка векторных данных по частям
Пока удалось сгенерировать MBTiles с помощью https://github.com/mapbox/tippecanoe ,процесс не описываю, т.к. не понятно что с этим делать, пока получается только загрузить на учетку в Mapbox, а как использовать локально и в Leaflete, непонятно...
-
- Гуру
- Сообщения: 1195
- Зарегистрирован: 23 апр 2011, 10:32
- Репутация: 205
- Откуда: Ульяновск
Re: Leaflet загрузка векторных данных по частям
Никак, т.к. по сути это база данных с тайлами внутри, нужен внешний инструмент для их извлечения и раздачи.
Вам нужен другой инструмент для генерации каждого тайлика отдельно, ищите на https://github.com/mapbox/awesome-vector-tiles
Например https://github.com/systemed/tilemaker
Вам нужен другой инструмент для генерации каждого тайлика отдельно, ищите на https://github.com/mapbox/awesome-vector-tiles
Например https://github.com/systemed/tilemaker
-
- Активный участник
- Сообщения: 145
- Зарегистрирован: 14 апр 2010, 14:11
- Репутация: 44
- Откуда: Екатеринбург
Re: Leaflet загрузка векторных данных по частям
Для подключения MBTiles в Leaflet нужно поднимать сервер, который умеет читать этот формат https://github.com/mapbox/awesome-vector-tiles#servers. Как альтернатива распокавать MBTiles в файлы z/x/y используя https://github.com/mapbox/mbutil и получать тайлы по запросу.
-
- Активный участник
- Сообщения: 146
- Зарегистрирован: 30 авг 2015, 16:38
- Репутация: 25
- Контактная информация:
Re: Leaflet загрузка векторных данных по частям
mbutil работает насколько я понимаю с растровыми данными в MBTilesVladimir_R писал(а):Как альтернатива распокавать MBTiles в файлы z/x/y используя
Код: Выделить всё
Options:
--image_format=FORMAT
The format of the image tiles, either png, jpg, webp
or pbf
((хотя утилита отрабатывает - создает директорию с png, файлы хоть и разного размера , но графическими редакторами не открываются,я думаю что это не то.. ))
-
- Гуру
- Сообщения: 1195
- Зарегистрирован: 23 апр 2011, 10:32
- Репутация: 205
- Откуда: Ульяновск
Re: Leaflet загрузка векторных данных по частям
>>я думаю что это не то..
Естественно это не картинки,
Естественно это не картинки,
Код: Выделить всё
or pbf
Последний раз редактировалось freeExec 20 окт 2016, 16:11, всего редактировалось 1 раз.
-
- Активный участник
- Сообщения: 146
- Зарегистрирован: 30 авг 2015, 16:38
- Репутация: 25
- Контактная информация:
Re: Leaflet загрузка векторных данных по частям
причем картинки по-видимому "не правильные", ведь утилита не делает рендеринг!?freeExec писал(а):Естественно это картинки,
freeExec писал(а):or pbf
Код: Выделить всё
-util: error: option --image_format: invalid choice: 'pbf' (choose from 'png',
jpg')
Последний раз редактировалось gornak 20 окт 2016, 11:14, всего редактировалось 1 раз.
-
- Активный участник
- Сообщения: 146
- Зарегистрирован: 30 авг 2015, 16:38
- Репутация: 25
- Контактная информация:
Re: Leaflet загрузка векторных данных по частям
насчет Tilemaker:freeExec писал(а):Например https://github.com/systemed/tilemaker
1)остановило
Код: Выделить всё
On Ubuntu, start with
The chief dependencies are:
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)
-
- Активный участник
- Сообщения: 146
- Зарегистрирован: 30 авг 2015, 16:38
- Репутация: 25
- Контактная информация:
Re: Leaflet загрузка векторных данных по частям
еще попробовал https://github.com/mapbox/geojson-vt по схеме http://bl.ocks.org/sumbera/c67e5551b21c68dc8299 на локальном компьютере
не сказать, что понимаю, как все это работает, но работает быстро и здорово, но
1)насколько понимаю если файл geoJson с данными будет расположен на сервере , то все равно он в полном объеме будет грузиться сначала клиенту
2)виртуальные тайлы в данной реализации отрисовываются в leaflet-е на canvas, т.е. получается некий аналог клиентского WMTS сервера
а есть ли другой способ, чтобы были атрибуты и геометрия?
не сказать, что понимаю, как все это работает, но работает быстро и здорово, но
1)насколько понимаю если файл geoJson с данными будет расположен на сервере , то все равно он в полном объеме будет грузиться сначала клиенту
2)виртуальные тайлы в данной реализации отрисовываются в leaflet-е на canvas, т.е. получается некий аналог клиентского WMTS сервера
а есть ли другой способ, чтобы были атрибуты и геометрия?
Код: Выделить всё
feature.tags.
-
- Гуру
- Сообщения: 1195
- Зарегистрирован: 23 апр 2011, 10:32
- Репутация: 205
- Откуда: Ульяновск
Re: Leaflet загрузка векторных данных по частям
Воспользовался mbutil, да он их назвал png, но это gzip в котором vectortile. Впрочем на указание --image_format=pbf никак не ругается, а создаёт с этим разрешением.
-
- Активный участник
- Сообщения: 146
- Зарегистрирован: 30 авг 2015, 16:38
- Репутация: 25
- Контактная информация:
Re: Leaflet загрузка векторных данных по частям
1)
2)
3)в итоге какой параметр правильно использовать?
то есть Вы хотите сказать, что это pbf или mvt, и их можно загружать через плагин https://github.com/SpatialServer/Leafle ... VectorTile стоит только поменять расширение?freeExec писал(а):но это gzip в котором vectortile
2)
почему ругается у меня?(файл в приложении, расширение надо поменять на .mbtiles иначе не грузиться на форум)freeExec писал(а): на указание --image_format=pbf никак не ругается,
3)в итоге какой параметр
Код: Выделить всё
--image_format
- Вложения
-
- kv.txt
- (5.05 МБ) 653 скачивания
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Leaflet загрузка векторных данных по частям
Можно через плагин, я выше давал ссылку на демо, там он как раз и используется для Leaflet-а, OpenLayers 3 поддерживает MVT из коробки.
Spatial is now, more than ever, just another column- The Geometry Column.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 20 гостей