我的CSV文件包含4个字段:
地址,经度,纬度,几何体
1,2,3,4 -5,6,7,8-
我想创建一个只选择“几何”字段的列表。
这会给我们整个清单吗?
d3.csv("file.csv", function(collection) {
..
var mydata=collection.geometry;
..
});
答案 0 :(得分:3)
要从对象列表中提取单个属性,可以使用map
方法,如下所示:
var temp = "Address,longitude,latitude,geometry\n"+
"1,2,3,4\n5,6,7,8\n2,3,4,5\n6,7,8,9";
var t = d3.csv.parse(temp);
console.log(t.map(function(d){return d.geometry;}));
答案 1 :(得分:1)
假设您有一个http服务器为包含以下两个文件的目录提供服务:
您可以定义自定义函数来解析行的字段。基准对象包含行中相应字段的所有值。只需访问数据的字段名称,即可返回其属性映射到行内值的对象。
所以你可以按如下方式定义你的功能
示例CSV:
field1,field2,field3
value1,value2,value3
value4,value5,value6
您可以传递的匿名函数:
function(datum,index)
{
var collectionObject = {};
collectionObject.someFieldName = datum.field2,
collectionObject.anotherFieldName = datum.field3
return collectionObject;
}
在您的情况下,您将执行以下操作:
<强> test.csv 强>
address,longitude,latitude,geometry
"This","is","an","example"
"This","is","an","example"
"This","is","an","example"
"This","is","an","example"
"This","is","an","example"
"This","is","an","example"
"This","is","an","example"
<强>的index.html 强>
<!DOCTYPE html>
<meta charset="utf-8">
<head>
</head>
<body>
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
<script>
var csv = d3.csv("test.csv", function(d)
{
return {geometry : d.geometry};
},
function(error, rows)
{
console.log(rows);
});
console.log(csv);
</script>
</body>
</html>
答案 2 :(得分:0)
如果几何图形是csv文件中的一列,则不能直接从d3.csv
函数的结果中选择它。 d3表读取函数创建的数据对象是表示 csv文件的每行的对象的数组。
所以对于csv文件 地址,经度,纬度,几何 123 Main St,90,50,几何字符串A. 22百老汇,92,51,几何字符串B
输出
[
{ "Address":"123 Main St",
"longitude":"90",
"latitude":"50",
"geometry":"geometry string A"},
{ "Address":"22 Broadway",
"longitude":"92",
"latitude":"51",
"geometry":"geometry string B"}
]
要获取仅包含几何字符串的单个数组,可以使用array mapping function。
d3.csv("file.csv", function(collection) {
...
var mydata=collection.map( function(d){return d.geometry;} );
...
});
现在mydata
是一个字符串数组,仅代表csv文件的“几何”列。
P.S。我刚看到@ arete的回答。除了映射是在读取文件的同时完成,并且只有一列传递给回调函数之外,它的工作方式大致相同。 (虽然注意它仍然作为一个对象数组返回,而不是一个字符串数组。)
如果您没有使用文件中的任何其他数据,对于大型数据集可能会稍微快一些。但是,对于此版本,如果您需要将其用于程序的其他部分,则仍可以访问完整的数据集。