gIntersects rgeos R中的TopologyException

时间:2011-09-21 23:51:07

标签: r gis polygons

我有一个代表世界生态区的shapefile。我试图确定哪些生态区域与我感兴趣的物种的分布相交。我正在使用最新版本的R和rgdal和rgeos软件包。

我加载了一个名为'rangelist'的物种范围列表。

我加载了我的ecoregions shapefile(eco),并创建一个名为'regions'的列表,其中包含每个生态区域的SpatialPolygonsDataFrame对象:

readOGR(ecofile,gsub(".shp","",ecofile))->eco
regions<-list()
for (i in 1:length(unique(eco$ECO_NAME))){
    print(unique(eco$ECO_NAME)[i])
    eco[eco$ECO_NAME==unique(eco$ECO_NAME)[i],]->regions[[i]]
}
names(regions)<-as.character(unique(eco$ECO_NAME))

然后我运行一个循环函数,检查来自'rangelist'的每个范围与来自'regions'的每个ecoregions。这工作正常,直到:

> gIntersects(rangelist[[49]],regions[[23]])
Error in RGEOSBinPredFunc(spgeom1, spgeom2, byid, func) : 
  TopologyException: side location conflict at -78.7709 -8.18245

我将原始ecoregions shapefile加载到arcMap 10中并运行“检查几何体”工具,但没有发现任何问题。

数据的原始来源是: 物种范围: http://www.natureserve.org/getData/birdMaps.jsp 生态区: http://www.worldwildlife.org/science/data/item1875.html

我已暂时发布here一个包含2个Rdata文件和一个R脚本的zip文件,以便您重现错误(文件大小为33mb)。

有没有人知道如何解决或解决这个问题?

0 个答案:

没有答案