2012-12-01 20 views
4

我想鞏固我加載到rgdal爲r的形狀文件之間的非nonded交集,但我得到了以下錯誤:什麼以下錯誤均值:TopologyException:發現LINESTRING

"Error: TopologyException: found non-noded intersection between LINESTRING 
     (34.7279 1.59723, 34.7278 1.59729) and LINESTRING 
     (34.7278 1.59723, 34.7278 1.59729) at 34.727793021883102 1.5972887049072426" 

我從maplibrary.org爲非洲大陸使用了一個形狀文件。它可以從我這裏保管箱:https://www.dropbox.com/s/etqdw3nky52czv4/Africa%20map.zip

我使用下面的代碼:

library(rgdal) 
library(ggplot2) 

africa = readOGR("Africa_SHP", layer = "Africa") 
africa.map = fortify(africa, region="COUNTRY") 

而且我得到我之前提到的錯誤。我認爲R在多邊形中存在一些問題 - 有沒有辦法解決這個問題?

+0

通常這樣的問題是由於輸入中的無效幾何造成的。但是當我運行你時,我沒有問題。可能是安裝問題 – agstudy

+1

這意味着有一條直線穿過另一條直線,沒有中間座標記錄交叉點 – mdsumner

+0

gIsValid(來自rgeos包)對於shapefile返回TRUE? – Rodrigo

回答

6

從評論中可以看出,mdsumner和agstudy能夠回答爲什麼會發生這種情況,儘管agstudy無法用可用的數據集重新創建它。我找到了解決這個問題的方法。

library(rgdal) 
library(rgeos) 
library(ggplot2) 
#LOADING IN DATA 
africa = readOGR("directory", layer="filename") 
#FIXING THE NON-NODED INTERSECTS# 
africa = gBuffer(africa, width=0, byid=TRUE) 
africa.map = fortify(africa, region="ID")