r-如何根据形状文件总结空间数据



我正在尝试从整个社区收集数据,我已经将这些社区划分为多个房屋。基底中没有与它们相关的标识符,只有当你将它们的形状文件放在一起时,你会发现这种房子与邻居的关系。

我想知道R是否有一些函数可以在空间上识别这些重叠,你可以做一种总结,就像对普通df所做的那样。

以下是如何使用"terra";

示例数据

library(terra)
f <- system.file("ex/lux.shp", package="terra")
ngbs <- vect(f)
ngbs <- ngbs[,"NAME_2"]
set.seed(1)
houses <- spatSample(ngbs, 100)
values(houses) <- NULL
houses$size <- sample(1000:2000, 100)
houses$price <- sample(200000:400000, 100)

解决方案

e <- extract(ngbs, houses, ID=FALSE)
hn <- cbind(e, houses)
aggregate(hn[, c("size", "price")], hn[, "NAME_2", drop=FALSE], mean, na.rm=TRUE)
#             NAME_2     size    price
#1          Capellen 1426.111 313185.0
#2          Clervaux 1576.143 283965.4
#3          Diekirch 1690.333 305811.3
#4        Echternach 1372.375 252986.4
#5  Esch-sur-Alzette 1535.696 306376.3
#6      Grevenmacher 1491.333 326899.4
#7        Luxembourg 1635.222 273848.1
#8            Mersch 1360.636 305946.5
#9           Redange 1620.000 282540.8
#10           Remich 1801.000 314103.0
#11          Vianden 1403.000 312586.0
#12            Wiltz 1625.000 260969.2

或者可能做

ints <- intersect(houses, ngbs)
ints
# class       : SpatVector 
# geometry    : points 
# dimensions  : 100, 3  (geometries, attributes)
# extent      : 5.754352, 6.489788, 49.47263, 50.09873  (xmin, xmax, ymin, ymax)
# coord. ref. : lon/lat WGS 84 (EPSG:4326) 
# names       :  size  price   NAME_2
# type        : <int>  <int>    <chr>
# values      :  1678 239240 Diekirch
#                1128 379030   Mersch
#                1929 359349 Diekirch

最新更新