如何将多边形相减得到的SpatialPolygons对象转换为点数据框?
提取相减后SpatialPolygons对象的顶点坐标
方法说明
res是gDifference返回的SpatialPolygons对象,其内部包含多边形的环(外环/内环)信息,我们可以通过遍历对象的内部结构提取所有顶点坐标:
提取所有顶点(包括内环)
# 初始化空数据框存储顶点坐标 vertices_df <- data.frame(longitude = numeric(), latitude = numeric()) # 遍历每个多边形组件 for (poly in res@polygons) { # 遍历多边形的每个环 for (ring in poly@Polygons) { # 提取坐标矩阵,移除最后一行(与第一行重复的闭合点) coords <- ring@coords[-nrow(ring@coords), ] # 转换为数据框并合并 vertices_df <- rbind(vertices_df, data.frame(longitude = coords[, 1], latitude = coords[, 2])) } }
仅提取外环顶点(排除内环洞)
如果只需要相减后区域的外边界顶点,可以通过ring@hole判断是否为内环,只保留非洞的外环:
vertices_df <- data.frame(longitude = numeric(), latitude = numeric()) for (poly in res@polygons) { for (ring in poly@Polygons) { # 仅处理非洞的外环 if (!ring@hole) { coords <- ring@coords[-nrow(ring@coords), ] vertices_df <- rbind(vertices_df, data.frame(longitude = coords[, 1], latitude = coords[, 2])) } } }
执行完代码后,vertices_df就是包含所有目标顶点经纬度的数据框,可直接用于后续分析。
内容的提问来源于stack exchange,提问作者ΚΩΝΣΤΑΝΤΙΝΟΣ ΠΑΝΑΓΙΩΤΟΥ
相关产品推荐
相关产品推荐

