Я пишу векторные листы MapBox, используя geotrellis vectorpipe.
см. Здесь для ознакомления с основным потоком: https://geotrellis.github.io/vectorpipe/usage.html
Обычно у объектов GeoJson может быть поле id
, так что Featuresможно свернуть в FeatureCollections.Мне нужно использовать это поле, но vectorpipe не имеет (изначально) такой возможности.
Используется тип Feature
, и вы можете видеть, что в нем есть место только для 1) a Geometry
и 2) объект данных D
(который заполняет properties
в выводе).Там нет места для id
.
https://geotrellis.github.io/scaladocs/latest/index.html#geotrellis.vector.Feature
Вверх по течению есть метод под названием writeFeatureJsonWithID()
, который позволяет вам вводить поле id
в Feature
при записиGeoJson.
https://github.com/locationtech/geotrellis/blob/master/vector/src/main/scala/geotrellis/vector/io/json/FeatureFormats.scala#L41-L49
У меня такой вопрос:
Я работал с кодом VectorPipe (https://github.com/geotrellis/vectorpipe), и яне могу понять, существует ли / когда данные когда-либо как GeoJson, таким образом, что я могу переопределить и вставить id
, возможно, используя writeFeatureJsonWithID()
или что-то, что я пишу явно. Многие преобразования неявны, но это такжеможет никогда явно не сидеть как json.
Есть идеи, как получить поле id
в конечном GeoJson, записанном в векторные тайлы?
EDIT
Прямо сейчас я думаю, что хитрость заключается в том, чтобы найти способ переопределить метод .unfeature()
здесь:
https://github.com/locationtech/geotrellis/blob/master/vectortile/src/main/scala/geotrellis/vectortile/Layer.scala
Проблема в том, что internal.vector_tile.Tile
является частным, поэтомуЯ могу построить его без разветвления проекта.