是否有人知道是否可以在多个几何体中对具有给定相同属性的TopoJSON几何进行分组?
例如,给定具有区域高程等值线的TopoJSON,这样就可以对具有相同高程的几何进行分组,从而保持属性。
我在TopoJSON文档中找到了这个: https://github.com/mbostock/topojson/blob/master/bin/topojson-group
我使用不同高程的ID对其进行了测试,但输出并未保留属性(即使使用-p参数)。
答案 0 :(得分:0)
使用topjson.js将topojson转换为geojson功能。然后,您可以根据高程对要素进行分组。您可以使用geojson-groupby根据任何属性进行分组,然后使用mutligeojson将几何图形组合到MultiGeometry。
var features = [f1, f2, ..,fn]
var grouped = GeoJSONGroupBy(features, 'properties.elevation');
// grouped is
// {
// '100': [f1, f3, ..],
// '200': [f5, f8, f6, ..],
// ....
// }
var merged = {}; // final output merged with geometry and other attributes
Object.keys(grouped).reduce(function(merged,groupKey) {
var group = grouped[groupKey];
var reduced = {
geomCollection: []
attributes: {
elevation: group[0].attributes.elevation,
length: 0 // any other that you want to include
}
};
group.reduce(function(reduced, cur) {
reduced.geomCollection.push(cur.geometry);
reduced.attributes.length += length(cur.geometry); //length functon
},reduced);
return {
type: 'Feature',
geometry: multigeojson.implode(reduced.geomCollection),
attributes: reduced.attributes
}
},merged);