阅读在R中创建的存储为CSV文件的几何图形

dluptydi  于 2023-01-28  发布在  其他
关注(0)|答案(1)|浏览(100)

我收到了一个用R创建的CSV文件,里面有哥伦比亚特区的一些区域及其几何形状的信息,但是格式对我来说很奇怪,我无法将其转换为shapefile。
几何形状如下所示:

list(c(-77.002011, -76.999051, -76.995986, -76.994548, -76.989257, -76.989521, -76.98902, -76.988895, -76.99705, -77.000043, -77.000329, -77.002011, 38.951051, 38.951842, 38.951996, 38.952295, 38.952409, 38.948629, 38.946757, 38.946269, 38.94627, 38.94627, 38.946972, 38.951051))

如何将其用作多边形,然后将其转换为形文件?

lmyy7pcs

lmyy7pcs1#

列表中似乎包含一个数值向量,当转换为两列矩阵时,它将提供描述多边形顶点的经度/纬度列。因此,您可以执行以下操作:

library(sf)
#> Linking to GEOS 3.9.3, GDAL 3.5.2, PROJ 8.2.1; sf_use_s2() is TRUE

df <- st_sf(st_sfc(st_polygon(lapply(data, matrix, ncol = 2)), crs = "WGS84"))
st_geometry(df) <- "geometry"

结果:

df
#> Simple feature collection with 1 feature and 0 fields
#> Geometry type: POLYGON
#> Dimension:     XY
#> Bounding box:  xmin: -77.00201 ymin: 38.94627 xmax: -76.9889 ymax: 38.95241
#> Geodetic CRS:  WGS 84
#>                         geometry
#> 1 POLYGON ((-77.00201 38.9510...

我们可以通过在DC地区的黑白Map上用红色绘制多边形来确认这是正确的,在那里我们可以看到这个多边形与现有道路创建的边界很好地重合:

library(ggmap)

m <- get_stamenmap(c(bottom = 38.94, top = 38.96, 
                     left = -77.01, right = -76.98), 
                   zoom = 15, maptype = "toner-lite")

ggmap(m) + geom_sf(data = df, inherit.aes = FALSE, fill = "red", alpha = 0.2)

创建于2023年1月25日,使用reprex v2.0.2

    • 所用数据**
data <- list(c(-77.002011, -76.999051, -76.995986, -76.994548, -76.989257,
               -76.989521, -76.98902, -76.988895, -76.99705, -77.000043,
               -77.000329, -77.002011, 38.951051, 38.951842, 38.951996, 38.952295,
               38.952409, 38.948629, 38.946757, 38.946269, 38.94627, 38.94627,
               38.946972, 38.951051))

相关问题