给定一个data.tsv文件,例如:
id code name 1 AL Alabama 2 AK Alaska 4 AZ Arizona 5 AR Arkansas 6 CA California ... ... ...
给定一个topojson.json文件,例如:( 结构正确,数字值是随机的)
{ "type":"Topology", "transform": { "scale": [0.0015484881821515486,0.0010301030103010299], "translate":[-5.491666666666662,41.008333333333354] }, "objects": { "states": { "type":"GeometryCollection", "geometries": [ {"type":"Polygon","arcs":[[0]],"properties":{"code_2":"AL"}}, {"type":"Polygon","arcs":[[1]],"properties":{"code_2":"AK"}} ] } }, "arcs": [ [[2466,9916],[-25,-5],[3,-13]], [[2357,9852],[1,-2],[1,-2]] ] }
如何使用公共字段(1)将其他字段(2)的值注入json文件?
1]:data.txt#code和topojson.txt.objects.states.geometries.properties.code_2
data.txt#code
topojson.txt.objects.states.geometries.properties.code_2
2]: data.txt#name
data.txt#name
最终结果应包含:
{"type":"Polygon","arcs":[[0]],"properties":{"code_2":"AL", "name":"Alabama" }}, {"type":"Polygon","arcs":[[1]],"properties":{"code_2":"AK", "name":"Alaska" }},
编辑:接受的答案:
topojson -o final.json -e data.tsv --id-property=code_2,code -p code_2,state=name -- topojson.json
尝试使用此:
哪个应该输出:
{ "type": "Topology", "transform": { "scale": [ 0.000016880209206372492, 0.000007005401010148724 ], "translate": [ -1.8418800213354616, 51.15278777877789 ] }, "objects": { "states": { "type": "GeometryCollection", "geometries": [ { "type": "Polygon", "arcs": [ [ 0 ] ], "id": "AK", "properties": { "code_2": "AK", "state": "Alaska" } } ] } }, "arcs": [ [ [ 0, 588 ], [ 92, -294 ], [ 91, -294 ], [ -183, 588 ] ] ] }
从命令行参考维基:
--id- 要升级为几何ID的要素 属性的 名称
通过将该code_2属性与该选项一起使用,可以将其提升为功能ID。
code_2
在输入属性名称的前面加一个 + ,以将其值强制为数字。
加:
如果 --id-property 引用 的属性 为null或未定义,则将其从输出几何对象中 省略 。因此,如果输入要素不具有指定名称的属性,则生成的对象可能没有定义的ID。
因此,当您使用+codeand时+code_2,它们可能是undefined,因为您无法将AK字符串值转换为数字。
+code
+code_2
undefined
AK
在此,输入属性“ FIPS”被强制为数字并用作功能标识符;同样,名为“ FIPS”的列也用作CSV文件中的标识符。(如果CSV文件使用其他列名称作为功能标识符,则可以指定多个id属性,例如--id- property=+FIPS,+id。)
--id- property=+FIPS,+id
这就是为什么您必须code在--id-property=code_2,code选项中添加。这是映射如何制备(在code_2从 topojson.json 和code从塔 data.tsv )。
code
--id-property=code_2,code
然后,从定义输入属性“ rate”的外部数据文件“ employee.tsv”中生成输出属性“ unemployment”。
在我们的例子中,-p code_2,state=name指定我们将保留code_2属性并将name属性重命名为state。前述文档Wiki中的“ 属性” 和“ 外部属性” 部分对这一问题提供了丰富的信息。
-p code_2,state=name
name
state