You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R语言中按属性数值阈值筛选Shapefile:提取area>1 ha的子集

在R中按面积筛选Shapefile要素的解决方案

嘿,这个需求用sf包就能轻松实现——这是当前R语言处理空间矢量数据的主流工具,操作起来很直观。我给你一步步说明:

1. 准备工作:安装并加载sf包

如果你还没安装sf,先执行安装命令:

install.packages("sf")

然后加载包:

library(sf)

2. 读取你的Shapefile

用st_read()函数读取文件,记得替换成你的文件路径(如果文件在当前工作目录里,直接写文件名就行):

# 读取Shapefile
deforestation <- st_read("deforestation.shp")

3. 关键:按面积筛选子集

这里要注意单位匹配:1公顷(ha)等于10000平方米,所以先确认你的area属性的单位:

  • 如果area的单位是平方米,筛选条件是area > 10000
  • 如果area的单位已经是公顷,直接用area > 1

方式一:基础R语法

# 假设area单位是平方米,筛选>1公顷的要素
deforestation_subset <- deforestation[deforestation$area > 10000, ]

方式二:结合dplyr(更简洁的tidy风格)

如果你习惯用tidyverse工具链,可以用dplyr::filter():

# 先加载dplyr(如果没装先install.packages("dplyr"))
library(dplyr)

deforestation_subset <- deforestation %>% 
  filter(area > 10000) # 同样根据单位调整数值

4. 可选:验证筛选结果

可以查看筛选后的数据概况,确认是否符合预期:

# 查看前几行的area值
head(deforestation_subset$area)

# 统计area的范围
summary(deforestation_subset$area)

额外提示:用几何计算的面积筛选(更准确)

如果Shapefile自带的area属性可能存在误差,你可以直接计算要素的实际几何面积,并转换为公顷:

# 计算每个要素的面积,单位默认是平方米
deforestation$calculated_area <- st_area(deforestation)

# 转换单位为公顷
deforestation$area_ha <- units::set_units(deforestation$calculated_area, ha)

# 筛选面积>1公顷的要素
deforestation_subset <- deforestation %>% 
  filter(area_ha > 1)

这样就能得到你想要的子集啦,要是还有细节问题随时问~

内容的提问来源于stack exchange,提问作者ecd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:47:09