0

我继承了一个湖泊多边形地理数据库,我正在尝试在每个湖泊上创建采样网格。我目前的策略是将空间数据导出为 CSV,使用 R 运行循环以在每个湖上创建网格,然后写入新的 shapefile。但是,这是我的问题,当导出到 CSV 时,WKT 字符串会弄乱并放在不同的行上。好的,没问题,我继续将几何图形导出到 CSV,以便获得 XY 值。当我简单地绘制点时,它们看起来很完美(使用 plot(y~x)),但这些点不按顺序排列。因此,当我使用以下顺序将数据转换为 R 包中的aSpatialPolygon时:sp

XY-points -> Polygon -> Polygons -> SpatialPolygon

然后绘制SpatialPolygon我得到这个:

在此处输入图像描述

我知道这是错误排序点的产物,因为当我按 X 然后按 Y 排序点并运行相同的程序时,我得到的是:

在此处输入图像描述

正确的绘图应该是这样的(XY 数据用空心圆圈绘制):

在此处输入图像描述

这是我正在尝试处理的一个简短的可重复示例:

library(sp)
# correct polygon
data <- data.frame(x=c(1:10, 10:1), y=c(5:1, 1:10, 10:6))
# plot(y~x, data=data)
correct.data.points <- rbind(data, data[1,]) # to close the ring for a polygon
correct.data.coords <- as.matrix(cbind(correct.data.points))
correct.data.poly <- Polygon(correct.data.coords, hole=F)
correct.data.poly <- Polygons(list(correct.data.poly), ID=0)
correct.data.poly.sp <- SpatialPolygons(list(correct.data.poly))
plot(correct.data.poly.sp)


# incorrect polygon
scr.data <- data[c(sample(1:20)),]
# plot(y~x, data=scr.data)
scr.data.points <- rbind(scr.data, scr.data[1,]) # to close the ring for a polygon
scr.data.coords <- as.matrix(cbind(scr.data.points))
scr.data.poly <- Polygon(scr.data.coords, hole=F)
scr.data.poly <- Polygons(list(scr.data.poly), ID=0)
scr.data.poly.sp <- SpatialPolygons(list(scr.data.poly))
plot(scr.data.poly.sp)

有什么想法吗?感谢任何人可以提供的任何帮助或见解。另外,作为参考,我正在使用 QGIS 2.6.0 和 MMQGIS Python 插件来进行几何导出。

4

0 回答 0