从SpatialLinesDataFrame绘制数据

时间:2015-11-24 13:43:16

标签: r

我对R中的编程非常陌生,我正在尝试从SpatialLinesDataFrame中绘制数据。绘制所有数据就像说maven-war-plugin一样简单,但我想做的是在特定点附近绘制数据的小部分。

数据看起来像这样:

plot(my.SpatialDataFrame)

每个Line对象中都有任意数量的坐标。我一直试图做的是使用像 [[2]] An object of class "Lines" Slot "Lines": [[1]] An object of class "Line" Slot "coords": [,1][,2] [1,] x y [2,] x y [3,] x y [4,] x y [5,] x y Slot "ID": [1] "1" [[3]] An object of class "Lines" Slot "Lines": [[1]] An object of class "Line" Slot "coords": [,1][,2] [1,] x y [2,] x y [3,] x y [4,] x y Slot "ID": [1] "2" 这样的矢量化操作来识别哪些线开始接近我选择的某个坐标,并从空间数据框中删除不这样做的对象。但是我无法让它工作,因为我正在努力成为R语法和特别是SpatialLinesDataFrame的新手。我的方法是否正确?我将如何实施它?我也尝试过使用apply和lapply,但那些似乎不会起作用。

如果我需要提供任何其他信息,请与我们联系。

1 个答案:

答案 0 :(得分:2)

正如保罗上面提到的,我能够通过创建一个矩形的SpatialPolygon来实现这一点,并且使用gIntersection包中的rgeos函数,我只能获得所需矩形内的点。

#libraries
library(sp) #for the spatialLinesDataFrame class
library(rgeos) #for the gIntersection function

# WGS84 long/lat coordinate system
wgs.84    <- "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"

#create the bounding box based on the dimensions required
spatialBoundingBox <- SpatialPolygons( list( Polygons( list( Polygon( rbind( c( minX, minY), c( maxX, minY), c( maxX, maxY), c(minX , maxY)), hole = FALSE)), ID = c('1'))), proj4string = CRS( wgs.84))

#calculate the intersection of the bounding box and the data - this will return the same type as my.data
my.data.subset <- gIntersection(spatialBoundingBox, my.data)

#plot the original data and the subset on the same plot showing the difference 
plot(my.data)
lines(my.data.subset, col="green")