topojson - объединить данные округа CSV в файл shp для штата

Я пытаюсь объединить CSV-файл данных округа с SHP-файлом штата Нью-Йорк, который я получил из сайт переписи населения США.

Я скачал шейп-файлы. Допустим, для Нью-Йорка это будет файл CSV:

countyid    countyname
1   Albany County
3   Allegany County
5   Bronx County

Я попробовал эту команду с помощью CLI, но безрезультатно: topojson -e nycounty.csv --id-property=id -o final.json -- tl_2010_25_state10.shp

Это создало только топожсон файла SHP, но пропустило id из данных csv для каждого объекта.

например, я ищу что-то вроде этого:

{
    "type": "Topology",
    "objects": {
        "towns": {
            "type": "GeometryCollection",
            "bbox": [33869.68649540044, 777514.5705503832, 330846.2264954001, 959743.1205503875],
            "geometries": [{
                    "type": "Polygon",
                    "id": 19,
                    "arcs": [
                        [0, 1, 2, 3]
                    ]
                }, {
                    "type": "MultiPolygon",
                    "id": 20,
                    "arcs": [
                        [
                            [4, 5, 6, 7, 8]
                        ]
                    ]
                }
            }
        }
    }

Превратившись в головную боль для меня. Спасибо за любую информацию.


person gregdevs    schedule 09.09.2016    source источник


Ответы (1)


Я пишу много кода на R, поэтому все в пространственном мире кажется мне гвоздем. Вот один из подходов:

Я загрузил все шейп-файлы из переписи населения США, а затем прочитал и записал geojson с использованием rgdal и с использованием базы R для подмножества только штата Нью-Йорк. Это дает «идентификатор» в geojson, и перед записью файла вы можете прочитать и объединить любые данные, которые вас интересуют.

library(rgdal)

country <- readOGR("tl_2016_us_county/tl_2016_us_county.shp", layer= "tl_2016_us_county")
ny <- subset(country, STATEFP == 36)

writeOGR(ny, dsn = "ny.geojson", layer="NY", driver="GeoJSON", check_exists = F)

Затем я проверил этот файл с помощью GEOjsonlint, и он выглядел нормально.

person Stedy    schedule 09.09.2016