2016-09-13 2 views
0

Я хотел бы взять один Vector Tile, извлеченный из файла MBTiles, и создать его в соответствии с Mapbox Style Specification, в автономном режиме.Как стилизовать единую картографическую плитку Mapbox?

Исследование:

MapBox имеет Static Api, который делает именно то, что я хочу, но, очевидно, требуется доступ в Интернет.

В Mapbox также есть библиотеки и Mapbox-Gl-JS, которые кажутся отличными для создания карт из векторных плит, но я не могу найти способ создания единого статического изображения вместо всей карты. Есть ли способ?

Tessera является сервером плитка, которая способна стиль векторных данных, но работает только с проектом ТМ2 или Mapnik стилей

фона: Использование Telerik Rad Map WPF Control или какой-либо контроль карты для .NET WPF, я бы как использовать vector.mbtiles как автономный источник карты.

Я могу извлечь одну векторную плитку из mbtiles и десериализовать ее в полезную информацию с помощью mapbox-vector-tile-cs и даже смог создать рудиментарное растровое изображение из данных и предоставить его telerik, и он может рисовать простые географические карты, но метки ciy и street требуют более сложного кода, чтобы предотвратить наложение ярлыков друг на друга и правильное наложение.

Что я могу себе сделать:

  • Использование пользовательских Telerik TiledProvider и обычай Telerik TiledMapSource
  • Extract вектор плитка из mbtiles
  • Deserialize вектор плитки в C# класса
  • использования векторных данных для создания растрового изображения данных без меток

Мой вопрос:

Есть ли существующие библиотеки на любом языке, или даже исполняемый файл, который способен стиль один векторный файл эффективно в соответствии с Mapbox Style Specification или любой настраиваемый спецификации стиля?

Любая помощь была бы полезна. Я уже начал использовать порт библиотеки Mapbox-Gl-Native, который был трудным, поскольку он нацелен на мобильные платформы и делает многое, что мне не нужно, и мне трудно понять, как упростить его, чтобы иметь дело только с одной плитой Запросы. Telerik только запрашивает растровое изображение с определенным x/y/zoom, так что это все, что мне нужно выполнить.

ответ

1

Вы можете использовать tilelive-copy или tl для создания растрового изображения из векторных плит. Вы можете использовать стиль TM2 (поддерживаемый прежней версией Mapbox Studio) или таблицу стилей Mapnik XML. TM2style позволяет использовать CartoCSS для определения правил стилизации.

Вы можете затем передать на границе вашей плитки и уровня масштабирования:

./node_modules/tl/bin/tl.js copy -z 13 -Z 13 -b "-77.34027 38.7665218926 -.8420375202 39.1199273249" tmstyle://./stations-style.tm2 file://./tile-export 

Вы должны установить соответствующие tilelive протоколы и tl заранее:

npm i tilelive-tmsource tilelive-tmstyle tilelive-file tl 

"awesome vector tiles" репо содержит список вариантов рендеринга для векторных плит. Может быть, вы найдете это полезным.

Вот еще один полезный ресурс о генерации растровых изображений из векторных источников: https://www.azavea.com/blog/2015/05/29/converting-mapbox-studio-vector-tiles-to-rasters-2/

0

Я также нашел другое решение. NET-Mapnik - это .Net-решение, которое позволяет вам стилизовать векторную плитку в соответствии со стилем mapnik xml. Это лучшее решение WPF, которое я нашел до сих пор. Я могу использовать соединение sqlite для захвата векторной плитки из файла mbtiles, использовать Net-Mapnik для создания стиля и вернуть его в telerik в виде растрового потока.

Смежные вопросы