地理空间分析:从单个 csv 文件中剪切多个 shapefile

问题描述 投票:0回答:1

我最近收集了带有 GPS 坐标的数据。数据收集单位是病房。在绘图时,我意识到有些点超出了预期的范围。有很多病房,请协助使用 R 函数根据病房形状文件剪切每个点

我尝试比较数据集以获得其中的点。输出为几何图形,可以合并原始 csv 以获得结果

r clip
1个回答
0
投票

嗨 Omena Fulu,欢迎来到 Stack Overflow!您可以使用“sf”包中的

st_intersection()
函数完成与 ArcGIS“剪辑”相同的操作。我使用“spData”包中提供的示例数据集为您创建了一个可重现的示例(请参阅末尾)。在您的情况下,您需要首先使用
read_csv()
函数或
read.table()
函数读取 csv,然后使用“sf”包中的
st_as_sf()
函数将 csv 转换为简单的特征数据框。在我的示例中,“cycle_hires”数据集是一个点数据集,类似于 csv 中的 GPS 点数据集。巧合的是,“lnd”数据集也包含伦敦大都市区的行政区,并且应该几乎与您所追求的完全相似。下面是例子:

##Loading Necessary Packages##
library(spData)
library(sf)
library(tmap)
library(tmaptools)


#Getting Example Data##
data("lnd") #Polygon Data similar to wards
data("cycle_hire") #Point Data similar gps points

##Take a look at the raw data##
#Setting tmap to interactive viewing#
tmap_mode("view")

#drawing the map#
tm_shape(lnd)+
  tm_polygons(col="NAME", alpha=0.5)+
tm_shape(cycle_hire)+
  tm_dots(col="red", size = .01)+
tm_basemap(server=providers$Esri.WorldImagery)


##Geoprocessing the data##
Westminster<-lnd[lnd$NAME=="Westminster",] #Get just the Westminster geographical area
westminster_cycles<-st_intersection(cycle_hire, Westminster) #use the st_intersection() function to clip cycle hires to just the Westminster geographical area

##View the results##
#drawing the new map#
tm_shape(lnd)+
  tm_polygons(col="NAME", alpha=0.5)+
tm_shape(westminster_cycles)+
  tm_dots(col="red", size = .01)+
  tm_basemap(server=providers$Esri.WorldImagery)
© www.soinside.com 2019 - 2024. All rights reserved.