Sim*_*mon 5 javascript esri geospatial geojson d3.js
我有一些地理边界,我有一个GeoJSON端点.
我还有一些变量存储在一个单独的GeoJSON端点上,该端点没有坐标,但确实有一个变量,我想稍后在主题上为地图设置样式,稍后再使用D3.这是每周更新.
我在尝试加入的两个响应中都有一个名为lga_name(本地政府区域名称)的公共ID.似乎有很多关于如何将GeoJSON与CSV连接的示例,而不是GeoJSON与GeoJSON的连接.
我试图整理一个应用程序,但仍然在努力加入.
// 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];
});
Run Code Online (Sandbox Code Playgroud)
谁能给我一些帮助让我感动的指示?只是想了解更多关于D3和Javascript的信息.
您存在数据质量问题,这会导致一些麻烦:
您可以通过不同的方式实现您的目标(使用第二个 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;
});
Run Code Online (Sandbox Code Playgroud)
现在您有了一个 geojson,它具有一个 json 的属性和另一个 json 的坐标。
由于您的标识符未标准化,因此我创建了一个函数来标准化两个文件之间的名称以使数据正常工作。我还添加了一项检查以确保给定功能存在属性。看到这个块。
使用一种 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);
})
Run Code Online (Sandbox Code Playgroud)
同样,由于您的标识符没有标准化,我创建了一个函数来标准化两个文件之间的名称。如上所述,还检查非地理 json 中是否存在某个功能(以及用于样式设置的属性)。看到这个块。
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |