gpt4 book ai didi

javascript - 将 GeoJSON 加入另一个 GeoJSON

转载 作者:搜寻专家 更新时间:2023-11-01 04:22:29 28 4
gpt4 key购买 nike

我有一些地理边界 have a GeoJSON endpoint for .

我还有一些变量存储在单独的 GeoJSON endpoint 中它没有坐标,但确实有我想稍后使用 D3 对 map 进行主题样式设置的变量。这是每周更新的。

两个响应中都有一个公共(public) ID,称为 lga_name(地方政府区域名称),我正在尝试加入该 ID。似乎有很多关于如何将 GeoJSON 与 CSV 结合的示例,但没有 GeoJSON 与 GeoJSON 的结合。

我尝试过 put together an app , 但仍在为加入而苦苦挣扎。

// Load LGAs from ArcGIS Online (The GeoJSON with geoms)
d3.json("the url to the Geoms", function(error, data) {

// Load Crash Stats from ArcGIS Online (the total persons involved, summarised down to LGA names)
d3.json("the url to the table", function(error, data2) {

var lga = data.features;
var crashStats = data2.features;

// Not working
var joined = lga.forEach(function(item) {
item.properties.LGA_NAME = crashStats[item.properties.lga_name];
});

任何人都可以给我一些建议来帮助我前进吗?只是想从总体上了解更多关于 D3 和 Javascript 的知识。

最佳答案

你有数据质量问题会引起一些麻烦:

  1. 要素的名称 (lga_name) 在一个 json 中全部大写,而在另一个 json 中不大写
  2. 特征名称在一个 json 中包含字符/短语,例如“(”或“-”或“Greater”,但在另一个 json 中不包含。
  3. 有些要素具有坐标但在其他 json 中没有条目(Unincorporated Vic)
  4. 在持有非地理属性的 json 中似乎有重复值(你已经声明你想要加入,而不是对任何数据求和,我的解决方案只使用属性 json 中的一个条目(没有坐标的那个))<

您可以通过不同的方式实现您的目标(使用第二个 json 获取“我想稍后为 map 设置主题样式的变量”),我将在这里使用两种不同的方法:

  1. 创建一个包含所有特征和属性的有效 geojson
  2. 从坐标 json 创建要素,并使用名称作为公共(public)标识符,根据属性 json 设置它们的样式。

创建一个包含所有特征和属性的有效 geojson

使用 d3.map() 我们可以轻松地添加非地理 json 的属性:

var lookup = d3.map(data.features, function(d) { return d.properties.lga_name; });

geographic.features.forEach(function(d) {
d.properties = lookup.get(d.properties.LGA_NAME).properties;
});

现在您有一个 geojson,它具有一个 json 的属性和另一个的坐标。

由于您的标识符未标准化,我创建了一个函数来标准化两个文件之间的名称以使数据正常工作。我还添加了一个检查以确保给定功能的属性存在。看这个block .

使用一个 JSON 创建特征并基于另一个 JSON 创建样式

虽然您不需要实际加入数据来实现样式。使用 d3.map(),您可以在设置样式时查看每个要素的属性。例如,您可以使用以下样式填充:

var lookup = d3.map(data.features, function(d) { return d.properties.lga_name; });

regions.attr("fill",function(d) {
return color(lookup.get(d.properties.LGA_NAME).properties.total_pers);
})

同样,由于您的标识符未标准化,我创建了一个函数来标准化两个文件之间的名称。如上所述,还有一个检查以查看非地理 json 中是否有特征(以及用于样式的属性)。看这个block .

关于javascript - 将 GeoJSON 加入另一个 GeoJSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45658451/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com