Scala для векторных плиток mapbox - получение поля 'id' в объектах, написанных для векторных плиток - PullRequest
0 голосов
/ 21 марта 2019

Я пишу векторные листы 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 является частным, поэтомуЯ могу построить его без разветвления проекта.

1 Ответ

0 голосов
/ 27 марта 2019

Закончилось то, что пришлось раскошелиться на geotrellis, жестко закодировать функцию metadata => id в Layer.unfeature() и скомпилировать локально, чтобы включить в мой проект. Не идеально, но работает нормально.

Также открыли выпуск здесь: https://github.com/locationtech/geotrellis/issues/2884

...