コードをマージしています。v0 に依存するコードは v1 で壊れます。
topojson.v0.min.js と topojson.v1.min.js の間の構文の変更点は何ですか?*
--
疑わしい構文のリスト:
- V0 > V1
- .オブジェクト > .機能
- .geometries > .features (場合によって、または常に?)
- *.coordinates > *.geometry.coordinates
- その他?
1.0.0 メジャー リリース (リリース ノートを参照) では、GeoJSON の互換性を高めるために topojson.object 関数が topojson.feature に置き換えられました。
以前のバージョンの 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 仕様および GeoJSON を扱うライブラリとの互換性が向上します。
コードをアップグレードするには、topojson.object を topojson.feature に置き換えることができます。ただし、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]);
});