mapbox矢量图块的scala-将“ id”字段放入写入矢量图块的要素中

时间:2019-03-21 00:23:33

标签: scala vector-tiles geotrellis

我正在使用geotrellis vectorpipe编写MapBox矢量图块。

有关基本流程,请参见此处:https://geotrellis.github.io/vectorpipe/usage.html

通常,GeoJson要素可以具有一个id字段,以便可以将要素汇总到FeatureCollections中。我需要利用此字段,但是vectorpipe(天然)不具有此功能。

这是使用的Feature类型,您可以看到它仅具有以下空间:1)Geometry和2)数据对象D(最终填充{{1 }}中。 properties没有位置。

https://geotrellis.github.io/scaladocs/latest/index.html#geotrellis.vector.Feature

上游有一种名为id的方法,可让您在编写GeoJson时将writeFeatureJsonWithID()字段注入到id中。

https://github.com/locationtech/geotrellis/blob/master/vector/src/main/scala/geotrellis/vector/io/json/FeatureFormats.scala#L41-L49

我的问题是这个

我已经完成了矢量管道代码(https://github.com/geotrellis/vectorpipe)的工作,但无法确定数据是否以GeoJson的形式存在/存在,而我可以覆盖并注入Feature,也许使用id或我明确写的东西。许多转换是隐式的,但也可能永远不会显式地作为json。

关于如何在最终的GeoJson中将writeFeatureJsonWithID()字段写入矢量图块的任何想法?

编辑

现在,我认为诀窍将是在这里找到一种方法来覆盖id方法:

https://github.com/locationtech/geotrellis/blob/master/vectortile/src/main/scala/geotrellis/vectortile/Layer.scala

问题在于.unfeature()是私有的,因此我可以在不分叉项目的情况下构造它。

1 个答案:

答案 0 :(得分:0)

最终不得不分叉地理网格,在metadata => id中硬编码一个Layer.unfeature()函数,然后在本地编译以包含在我的项目中。不太理想,但是效果很好。

也在这里打开了一个问题:https://github.com/locationtech/geotrellis/issues/2884