Topojson:v0和v1之间的差异列表?

时间:2013-07-01 12:12:51

标签: json map gis topojson

我正在合并代码,依赖v1的代码在v1上中断。

topojson.v0.min.js和topojson.v1.min.js之间的语法更改是什么?*

-

可疑语法列表:

  • V0> V1
  • .object> .feature
  • .geometries> .features(在某些情况下或总是?)
  • *。coordinates> * .geometry.coordinates
  • 其他人?

1 个答案:

答案 0 :(得分:9)

1.0.0主要版本(请参阅release notes)将topojson.object函数替换为topojson.feature以获得更好的GeoJSON兼容性。

在早期版本的TopoJSON中,topojson.object返回了一个几何对象(可能是几何集合),与几何对象在TopoJSON Topology中的表示方式一致。但是,与GeoJSON几何体不同,TopoJSON几何体更像是特征,并且可以具有id和属性;同样,null几何被表示为null类型。

从版本1.0.0开始,topojson.feature替换topojson.object,返回Feature或FeatureCollection,与转换为TopoJSON之前几何体最初在GeoJSON中的表示方式一致。 (与在GeoJSON中一样,null几何被表示为具有null几何对象的要素。)正如#37中所讨论的,这提供了与GeoJSON specification和处理GeoJSON的库的更好兼容性。

要升级代码,可以使用topojson.feature替换topojson.object。但是,必须更改假设topojson.object返回几何的代码,以处理topojson.feature现在返回的要素(或要素集合)。例如,在1.0之前,如果你说:

svg.selectAll("path")
    .data(topojson.object(topology, topology.objects.states).geometries)
  .enter().append("path")
    .attr("d", path);

在1.0及更高版本中,相应的代码为:

svg.selectAll("path")
    .data(topojson.feature(topology, topology.objects.states).features)
  .enter().append("path")
    .attr("d", path);

同样,如果你在1.0之前迭代一个点几何数组,你可能会说:

topojson.object(topology, topology.objects.points).geometries.forEach(function(point) {
  console.log("x, y", point.coordinates[0], point.coordinates[1]);
});

在1.0及更高版本中,相应的代码为:

topojson.feature(topology, topology.objects.points).features.forEach(function(point) {
  console.log("x, y", point.geometry.coordinates[0], point.geometry.coordinates[1]);
});