topojson - 将县CSV数据合并到状态的shp文件中

时间:2016-09-09 04:54:16

标签: shapefile topojson ogr2ogr

我正在尝试将县数据的CSV文件与我从US Census site获得的NY状态的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文件的topojson,但是从每个对象的csv数据中缺少id

例如我正在寻找这样的东西:

{
    "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]
                        ]
                    ]
                }
            }
        }
    }

对我来说是一个头疼的人。感谢您的任何信息。

1 个答案:

答案 0 :(得分:0)

我写了很多R代码,所以空间世界中的所有东西对我来说都是一个钉子。这是一种方法:

我从US Census下载了所有的shapefile,然后使用rgdal读取并写出geojson,并使用base R将子集分配到NY州。这给了一个" id"在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检查了这个文件,看起来很好。