繁体   English   中英

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

[英]Reading geometries storaged as a CSV file created in R

我收到了一个在 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))

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

看起来列表包含一个数字向量,当转换为两列矩阵时,它将提供描述多边形顶点的经度/纬度列。 因此你可以这样做:

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-01-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))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM