gpt4 book ai didi

R/GIS : How to subset a shapefile by a lat-long bounding box?

转载 作者:行者123 更新时间:2023-12-02 10:46:56 28 4
gpt4 key购买 nike

我想将一个 shapefile(.shp 和相关文件是 here )子集到另一个以一组坐标为界的形状文件中,比如在 longs [80,90] 和 lats [20,30] 之间,然后将其写为另一个形状文件。如果我使用maptools封装:

df = readShapeLines("/path/asia_rivers.shp")

然后用as.data.frame(df)查看文件的结构,我找不到任何明显的按坐标子集化的方法。我可以使用PBSmapping打包到子集:

df = importShapefile("/path/asia_rivers.shp")
df_sub = subset(df, X>=80 & X<=90 & Y >=20 & Y <=30)

但我似乎无法将其强制转换为 SpatialLines可以通过 writeSpatialShape() 导出数据框在maptools 。我不断收到此错误:Error in PolySet2SpatialLines(df_sub) : unknown coordinate reference system 。当然,我错过了一些非常基本的东西,应该有一种简单的方法可以通过地理坐标对地理数据进行子集化?

最佳答案

您可以尝试以下方法:

library(rgeos)
rivers <- readWKT("MULTILINESTRING((15 5, 1 20, 200 25), (-5 -8,-10 -8,-15 -4), (0 10,100 5,20 230))")
bbx <- readWKT("POLYGON((0 40, 20 40, 20 0, 0 0, 0 40))")

rivers.cut <- gIntersection(rivers, bbx)

plot(rivers, col="grey")
plot(bbx, add=T, lty=2)
plot(rivers.cut, add=T, col="blue")

关于R/GIS : How to subset a shapefile by a lat-long bounding box?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9825221/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com