我對R中的空間數據有以下難題:在地理點周圍創建緩衝區,然後檢查座標列表是否在緩衝區內?
我有一個包含街道段(以及它們各自的起始和結束座標)的數據集。我想在這些點周圍創建一個X米的緩衝區,然後檢查經度/緯度點列表是否在該緩衝區內。有沒有辦法在R中做到這一點?
我可以使用各種軟件包的組合映射點和映射緩衝區:maptools,ggmap,rgdal,sp和rgeos。但是,這個過程似乎只映射點和緩衝區,而不允許我檢查其他座標是否在緩衝區內。理想情況下,我想產生一個1和0的矢量來描述經緯度點列表是否在街道周圍的緩衝區內。
任何想法?
這是我一直在使用的代碼,但我得到所有缺少的值(我知道這不應該是這種情況)。我已經使用gContains功能從rgeos也嘗試過,但它墜毀R.
#Load shapefile in R and transform to appropriate CRS
shp <- readOGR(dsn="/Users/Maps/shapes", layer="shp")
shp_transf <- spTransform(shp_transf, CRS("+init=epsg:21897"))
#Create buffer around polygons
shp_buff <- gBuffer(shp_transf, width=40, byid=TRUE, quadsegs=10)
#Make my dataframe of lat/lon points into same projection as buffers
points <- SpatialPoints(points,proj4string=CRS(proj4string(shp_buff)))
#Use over function from SP pacakge
result <- as.integer(over(points, shp_buff)$OBJECTID)
剛剛運行'result < - over(points,shp_buff)'時會發生什麼? –
它創建一個與shp_buff相同的空數據框 – op4
當您聲明您的'points'對象時,數據框中的座標是否已經在epsg:21897 CRS中?上面的評論的措辭就像你想要改變它們一樣。另外,當你運行'plot(shp_buff)'然後'plot(points,add = T)'時會發生什麼? –