Scala для векторных плиток mapbox - получение поля 'id' в объектах, написанных для векторных плиток
Я пишу векторные плитки 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
Вверх по течению есть метод под названием writeFeatureJsonWithID()
это позволяет вам вводить id
поле в Feature
при написании GeoJson.
У меня вопрос такой:
Я работал с кодом vectorpipe ( https://github.com/geotrellis/vectorpipe) и не могу понять, существуют ли когда-нибудь данные в виде GeoJson, чтобы я мог переопределить и внедрить id
может быть, используя writeFeatureJsonWithID()
или что-то я пишу явно. Многие преобразования неявные, но они также никогда не могут явно указывать на json.
Любые идеи о том, как получить id
поле в финальном GeoJson записано на векторные плитки?
РЕДАКТИРОВАТЬ
Прямо сейчас я думаю, что уловка будет находить способ переопределить .unfeature()
метод здесь:
Проблема в том, что internal.vector_tile.Tile
является частным, так что я могу построить его, не разветвляя проект.
1 ответ
Закончилось тем, что пришлось раскошелиться на жёсткий код metadata => id
функция в Layer.unfeature()
и скомпилировать локально, чтобы включить в мой проект. Не идеально, но работает нормально.
Также открыли вопрос здесь: https://github.com/locationtech/geotrellis/issues/2884