右侧管道OGR/GDAL

右侧管道OGR/GDAL,r,gis,gdal,R,Gis,Gdal,我必须阅读R中一个巨大ESRI形状文件的一小部分。我分两步进行: 步骤1:我使用ogr2ogr将shapefile剪切到我的边界框中: ogr2ogr -clipsrc xMin yMin xMax yMax outfile.shp infile.shp 步骤2:我用rgdal将其读入R: df = readOGR(dsn="/path", layer="outfile") 问题是我必须对多个文件执行此操作,并且很难跟踪生成每个单独文件的OGR操作。有没有办法在R中通过管道ogr2ogr,使

我必须阅读R中一个巨大ESRI形状文件的一小部分。我分两步进行:

步骤1:我使用
ogr2ogr
将shapefile剪切到我的边界框中:

ogr2ogr -clipsrc xMin yMin xMax yMax outfile.shp infile.shp
步骤2:我用
rgdal
将其读入R:

df = readOGR(dsn="/path", layer="outfile")

问题是我必须对多个文件执行此操作,并且很难跟踪生成每个单独文件的
OGR
操作。有没有办法在R中通过管道
ogr2ogr
,使步骤1可以在运行中完成?

尝试使用
系统调用。如果没有代码和数据,很难说,但是如果要从shapefile剪裁多个边界框,则应该能够创建要处理的shapefile(如果有多个shapefile)列表或要处理的坐标列表

work.dir <- "C:/Program Files (x86)/FWTools2.4.7/bin" # use your FWTools location
setwd(work.dir)
out.shape.file <- "foo2.shp"
in.shape.file <- "foo1.shp"
x.min <- 100
y.min <- 100
x.max <- 200
y.max <- 200
system(paste("ogr2ogr -clipsrc", x.min, y.min, x.max, y.max, 
      out.shape.file, in.shape.file))

work.dir请注意,您可以使用rgeos软件包进行剪辑,类似于以下内容(我使用光栅可以轻松创建简单的遮罩多边形):

库(rgeos)
图书馆(光栅)
图书馆(rgdal)
##根据你的例子
df=readOGR(dsn=“/path”,layer=“outfile”)
##创建一个简单的多边形层并相交

她工作得很有魅力。非常感谢你,斯洛劳纳。(附言:如果这很慢,我想知道当你加快速度时你会是什么样子。)好吧,这都是相对的,不是吗?与Stack Overflow的R老手相比,我们都有很长的路要走……至少对我来说是这样。介绍如何使用
rgeos::gIntersection
剪裁多边形。(基本上与下面@mdsumner的答案相同,但有一个可复制的示例和一张purty图片。)嗨,mdsumner。。。问题是文件太大,无法直接在R中加载。这就是为什么我分两步来做。SlowLearner的解决方案运行良好。
library(rgeos)
library(raster)
library(rgdal)
## as per your example
df = readOGR(dsn="/path", layer="outfile")
## create a simple polygon layer and intersect
res <- gIntersection(df, as(extent(x.min, x.max, ymin, y.max), "SpatialPolygons"), byid = TRUE)