当前位置: 首页 > 面试题库 >

如何添加属性到topojson文件?

钱雅逸
2023-03-14
问题内容

给定一个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#codetopojson.txt.objects.states.geometries.properties.code_2

2]: 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

问题答案:

尝试使用此:

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。

在输入属性名称的前面加一个 + ,以将其值强制为数字。

加:

如果 --id-property 引用 的属性 为null或未定义,则将其从输出几何对象中 省略
。因此,如果输入要素不具有指定名称的属性,则生成的对象可能没有定义的ID。

因此,当您使用+codeand时+code_2,它们可能是undefined,因为您无法将AK字符串值转换为数字。

在此,输入属性“ FIPS”被强制为数字并用作功能标识符;同样,名为“
FIPS”的列也用作CSV文件中的标识符。(如果CSV文件使用其他列名称作为功能标识符,则可以指定多个id属性,例如--id- property=+FIPS,+id。)

这就是为什么您必须code--id-property=code_2,code选项中添加。这是映射如何制备(在code_2
topojson.jsoncode从塔 data.tsv )。

然后,从定义输入属性“ rate”的外部数据文件“ employee.tsv”中生成输出属性“ unemployment”。

在我们的例子中,-p code_2,state=name指定我们将保留code_2属性并将name属性重命名为state。前述文档Wiki中的“ 属性”
和“ 外部属性” 部分对这一问题提供了丰富的信息。



 类似资料:
  • 问题内容: 如何添加到特定内容?不起作用。 问题答案: jQuery <1.9 jQuery 1.9以上

  • 我如何添加一些自定义属性? 到目前为止,我使用了以下语法 ...但是它不能读取文件,因为它不能识别“changetype”属性。 如何添加该属性?

  • 我已经从.shap文件转换了GeoJson文件。每个对象都有弧、点和一些其他特性。现在,当我试图用这个在线应用程序将这个GeoJson文件转换为TopoJson文件时http://shancarter.github.io/distillery/ 转换后的TopoJson与D3.js配合使用,但对象只有类型:多边形和圆弧属性。所有其他属性,如id、GEOFIP等都消失了。我需要这些属性,但至少需要2

  • 我目前正在尝试添加属性组件与位置设置到我的属性文件中使用属性占位符在我的项目: 但是addComponent()函数期望的是Component类型参数,而不期望的是Property tiesComponent,即使属性组件扩展了DefaultComponent类。我已经将此依赖项添加到pom.xml使用它: 并且还添加了资源标签: 我得到的错误看起来像这样: Java:不兼容类型:org.apac

  • 我想在我的< code >上添加属性 似乎路线路径确实与问号混淆了。如果我把它换成其他东西,比如一个符号戳,它就会“起作用”。然而,这不是我想要的格式。我想要常规的<代码> 我找不到关于如何使这样的东西工作的文档。我看到了一些关于url的部分的东西,但我不太理解它。 谢谢你的所有帮助

  • 问题内容: 我正在使用“运行”->“运行”菜单从IntelliJ IDE运行一个简单的Java程序。它工作正常。现在,我想添加log4j日志记录。 我在项目根目录下添加了一个资源文件夹。我在该文件夹中添加了一个log4j.properties文件。我更改了代码以记录某些内容。 告诉IntelliJ在类路径中包含资源文件夹以便可以看到属性文件的正确方法是什么? 使用IntelliJ 8,我可以像喝醉