将shapefile转换为R中的x,y,z(lat / lon coords)?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (81)

我有一个Shapefile在提取x,y,z组件时有问题。我也想把x和y转换成UTM的Lat和Lon。

最后我想

plot(x, y)
map(add=T)

再加上其他要点。

对于前任,你是如何理解这个预测的:

library(PBSmapping)

r <- importShapefile("~/Desktop/BIO_CA_KelpPersistent/BIO_CA_KelpPersistent.shp")
 str(r)

- attr(*, "prj")= chr "PROJCS[\"NAD_1983_California_Teale_Albers\",GEOGCS[\"GCS_North_American_1983\",DATUM[\"D_North_American_1983\",SPHEROID[\"GRS_1"| __truncated__

最新情况:

require(sf)
nc <- st_read("BIO_CA_KelpPersistent.shp")

nc_points <- st_coordinates(st_geometry(st_centroid(nc)))

xy <- project(nc_points, paste("+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +datum=NAD83 +units=m +no_defs", sep = ""), inverse=T)

plot(xy, ylim=c(32, 33), xlim=c(-119, -117))
map(add=T, lwd=2)

我怎么才能正确地索引这个呢?

提问于
用户回答回答于

你可以这样做:

library(sf)

# Load shapefile
nc <- st_read(system.file("shape/nc.shp", package = "sf"))

# Plot it without converting geometry to x, y columns
plot(st_geometry(nc))
plot(st_geometry(st_centroid(nc)), add = TRUE)

但是,如果必须转换为x和y列,则可以使用st_coordinates:

# Convert geometry to x, y columns
nc_points <- st_coordinates(st_geometry(st_centroid(nc)))

其中的数据如下所示:

geometry 1 POINT (-81.49826 36.4314) 2 POINT (-81.12515 36.49101) 3 POINT (-80.68575 36.41252) 4 POINT (-76.0275 36.40728) 5 POINT (-77.41056 36.42228) 6 POINT (-76.99478 36.36145)

变成:

X Y 1 -81.49826 36.43140 2 -81.12515 36.49101 3 -80.68575 36.41252 4 -76.02750 36.40728 5 -77.41056 36.42228 6 -76.99478 36.36145

然后我们可以用类似的方式来绘制它:

# Plot
plot(st_geometry(nc))
points(nc_points)

所属标签

可能回答问题的人

  • HKC

    红客学院 · 创始人 (已认证)

    26 粉丝7 提问5 回答
  • 西风

    renzha.net · 站长 (已认证)

    9 粉丝1 提问4 回答
  • Dingda

    Dingda · 站长 (已认证)

    4 粉丝0 提问3 回答
  • 螃蟹居

    1 粉丝0 提问2 回答

扫码关注云+社区

领取腾讯云代金券