【发布时间】:2023-05-08 06:56:01
【问题描述】:
我正在尝试创建一个自定义世界地图,其中国家被合并到区域中,而不是单独的国家。不幸的是,由于某种原因,整个过程中的缠绕顺序似乎有些混乱。
作为基础数据,我使用的是自然地球10m_admin_0_countries 可用的形状文件here。作为合并国家/地区的标准,我有一个如下所示的查找地图:
const countryGroups = {
"EUR": ["ALA", "AUT", "BEL"...],
"AFR": ["AGO", "BDI", "BEN"...],
...
}
合并我正在使用的形状topojson-client。由于我希望获得比 CLI 命令提供的更高级别的控制,因此我编写了一个脚本。它遍历查找图并挑选出属于一个组的所有 topojson 特征并将它们合并为一个形状,并将生成的合并特征放入一个 geojson 框架中:
const topojsonClient = require("topojson-client");
const topojsonServer = require("topojson-server");
const worldTopo = topojsonServer.topology({
countries: JSON.parse(fs.readFileSync("./world.geojson", "utf-8")),
});
const geoJson = {
type: "FeatureCollection",
features: Object.entries(countryGroups).map(([region, ids]) => {
const relevantCountries = worldTopo.objects.countries.geometries.filter(
(country, i) =>
ids.indexOf(country.properties.ISO_A3) >= 0
);
return {
type: "Feature",
properties: { region, countries: ids },
geometry: topojsonClient.merge(worldTopo, relevantCountries),
};
}),
};
到目前为止,一切都运行良好(据称)。当我尝试使用github gist(或任何其他可视化工具,如 vega lite)来可视化地图时,形状似乎都一团糟。我怀疑我在合并功能期间做错了什么,但我无法弄清楚它是什么。
当我尝试使用 CLI 执行相同操作时,它似乎工作正常。但由于我需要对合并进行更多控制,因此仅使用 CLI 并不是一个真正的选择。
【问题讨论】:
标签: geojson shapefile topojson vega-lite vega