#scala #vector-tiles #geotrellis
#scala #векторные плитки #geotrellis
Вопрос:
Я пишу векторные плитки MapBox, используя geotrellis vectorpipe.
смотрите здесь для основного потока:https://geotrellis.github.io/vectorpipe/usage.html
Обычно объекты GeoJSON могут иметь id
поле, так что объекты могут быть объединены в FeatureCollections. Мне нужно использовать это поле, но vectorpipe не имеет (изначально) такой возможности.
Это используемый Feature
тип, и вы можете видеть, что в нем есть место только для 1) объекта данных Geometry
и 2) объекта данных D
(который в конечном итоге заполняется properties
в выходных данных). Для id
нет места.
https://geotrellis.github.io/scaladocs/latest/index.html#geotrellis.vector.Функция
Выше по потоку есть метод с именем writeFeatureJsonWithID()
, который позволяет вводить id
поле в Feature
при написании GeoJSON.
Мой вопрос заключается в следующем:
Я проработал код vectorpipe (https://github.com/geotrellis/vectorpipe ), и я не могу выяснить, существуют ли данные когда-либо в виде GeoJSON таким образом, чтобы я мог переопределить и внедрить id
, возможно, используя writeFeatureJsonWithID()
или что-то, что я пишу явно. Многие преобразования являются неявными, но они также могут никогда явно не отображаться как json.
Есть идеи о том, как получить id
поле в окончательном GeoJSON, записанном в векторные плитки?
Редактировать
Прямо сейчас я думаю, что хитрость заключается в том, чтобы найти способ переопределить .unfeature()
метод здесь:
Проблема в том, что internal.vector_tile.Tile
является частным, поэтому я могу создать его без разветвления проекта.
Ответ №1:
В итоге пришлось раскошелиться на geotrellis, жестко запрограммировать metadata => id
функцию в Layer.unfeature()
и скомпилировать локально для включения в мой проект. Не идеально, но работает нормально.
Здесь также возникла проблема:https://github.com/locationtech/geotrellis/issues/2884