Подтвердить что ты не робот

Как добавить свойства в файл topojson?

Учитывая файл 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

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
4b9b3361

Ответ 1

Попробуйте использовать это:

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-property имя свойства функции для продвижения к идентификатору геометрии

Используя свойство code_2 с этим параметром, вы рекламируете его как идентификатор функции.

Подготовьте + перед именем свойства ввода, чтобы привязать его значение к числу.

Плюс:

Если свойства, на которые ссылается - id-property, имеют значение null или undefinedони опущены из объекта геометрии вывода. Таким образом, сгенерированный объекты могут не иметь определенного идентификатора, если у входных функций не было свойство с указанным именем.

Итак, когда вы используете +code и +code_2, они, вероятно, undefined, так как вы не можете преобразовать строковое значение AK в число.

Здесь входное свойство "FIPS" принудительно применяется к числу и используется как идентификатор функции; Аналогично, столбец с именем "FIPS" используется как идентификатор в файле CSV. (Если ваш CSV файл использует другой столбец имя для идентификатора функции, вы можете указать несколько идентификаторов свойства, такие как --id-property=+FIPS,+id.)

Вот почему вам нужно добавить параметр code в --id-property=code_2,code. Так производится сопоставление (code_2 из topojson.json и столбца code из data.tsv).

Затем свойство вывода "безработица" генерируется из внешний файл данных, безработица .tsv, который определяет входное свойство "Курс"

В нашем случае -p code_2,state=name указывает, что мы сохраним свойство code_2, и мы переименуем свойство name в state. Свойства и Внешние свойства разделы в вышеупомянутой документации wiki довольно информативны по этому вопросу.