当前位置:首页>农业>农业适宜性评价注意事项、工具检查及地类缩编

农业适宜性评价注意事项、工具检查及地类缩编

  • 2026-10-19 07:13:19
农业适宜性评价注意事项、工具检查及地类缩编

01

评价单元制备与检查均质单元图斑检验

# 重要说明:

(1)注意边界无效值被提取到评价单元中,(但是莫慌,没注意到代码也会自动检查并修改 );

(2)检查汇总现状地类流向评价适宜类别的流向、限制因子分级数、图斑数量;

(3)统计各限制因子分级、图斑数、面积和面积比例

(4)检验均值单元、检查评价结果;

# 18. 删除旧的异常图斑结果# 防止本次没有异常但保留上次旧文件# ==========================================old_abnormal_files <- list.files(  out_dir,  pattern = paste0(    "^",    abnormal_layer,    "\\.(shp|shx|dbf|prj|cpg|sbn|sbx|qix|fix|xml)$"  ),  full.names = TRUE,  ignore.case = TRUE)if (length(old_abnormal_files) > 0) {  file.remove(    old_abnormal_files  )}# ==========================================# 19. 写出正式评价结果# ==========================================st_write(  result_data,  dsn = out_dir,  layer = result_layer,  driver = "ESRI Shapefile",  append = FALSE,  delete_layer = TRUE,  layer_options = "ENCODING=UTF-8")# ==========================================# 20. 写出规则异常图斑# 只有存在异常时才生成# ==========================================if (nrow(abnormal_data) > 0) {  st_write(    abnormal_data,    dsn = out_dir,    layer = abnormal_layer,    driver = "ESRI Shapefile",    append = FALSE,    delete_layer = TRUE,    layer_options = "ENCODING=UTF-8"  )}# ==========================================# 21. 完成提示# ==========================================cat("\n")cat("==========================================\n")cat("评价计算完成\n")cat("==========================================\n")cat(  "正式评价结果:",  file.path(    out_dir,    paste0(result_layer, ".shp")  ),  "\n")if (nrow(abnormal_data) > 0) {  cat(    "异常图斑结果:",    file.path(      out_dir,      paste0(abnormal_layer, ".shp")    ),    "\n"  )} else {  cat("没有发现规则异常图斑。\n")}

02

地类缩编:1:1万缩编为1:5万

# 土壤农业适宜性评价土地利用缩编代码

  • 同类相邻图斑融合;
  • 小图斑按最长公共边界并入邻斑;
  • 重要地类保护;
  • 拓扑保持边界简化;
  • 输出简化前中间结果和最终结果;
  • 自动删除旧的同名 Shapefile 配套文件;
  • 自动检查缩编前后面积变化;
    # 15. 记录缩编前面积# ============================================================original_total_area_m2 <- sum(  as.numeric(    st_area(      landuse_projected    )  ),  na.rm = TRUE)original_polygon_count <- nrow(  landuse_projected)cat(  "\n缩编前图斑数量:",  original_polygon_count,  "\n")cat(  "缩编前总面积:",  round(    original_total_area_m2 /      1000000,    4  ),  "平方千米\n")# ============================================================# 16. 融合相邻同类图斑# ============================================================cat(  "\n========================================\n")cat(  "正在融合相邻同类图斑\n")cat(  "========================================\n")landuse_dissolved <- dissolve_by_class(  x = landuse_projected,  class_field = class_field)dissolved_polygon_count <- nrow(  landuse_dissolved)cat(  "同类融合后图斑数量:",  dissolved_polygon_count,  "\n")# ============================================================# 17. 小图斑合并# ============================================================landuse_eliminated <- eliminate_small_polygons(  x = landuse_dissolved,  class_field = class_field,  min_area_m2 = min_area_m2,  protected_codes = protected_codes,  max_iterations = max_iterations)landuse_eliminated <- extract_polygon_geometry(  landuse_eliminated)eliminated_polygon_count <- nrow(  landuse_eliminated)# ============================================================# 18. 输出边界简化前中间结果# ============================================================intermediate_output <- prepare_shapefile_output(  x = landuse_eliminated,  class_field = class_field,  output_class_field = output_class_field)# 确保输出坐标系为EPSG:4522intermediate_output <- st_transform(  intermediate_output,  target_epsg)cat(  "\n正在输出小图斑合并中间结果……\n")write_shapefile(  x = intermediate_output,  output_path = output_before_simplify)# ============================================================# 19. 拓扑保持的边界简化# ============================================================cat(  "\n========================================\n")cat(  "正在进行边界简化\n")cat(  "========================================\n")landuse_simplified <- rmapshaper::ms_simplify(  input = landuse_eliminated,  keep = keep_ratio,  method = "vis",  keep_shapes = TRUE,  snap = TRUE,  explode = FALSE,  drop_null_geometries = TRUE)landuse_simplified <- extract_polygon_geometry(  landuse_simplified)# 再次按类型融合landuse_simplified <- dissolve_by_class(  x = landuse_simplified,  class_field = class_field)

READING

推文若对各位有帮助记得点赞、关注、转发!

小编能力有限,在努力学习中...

希望投稿&合作请联系小编

END

最新文章

随机文章