2012-05-06 5 views
2

readShapePolyコマンドを使用してRにポリゴンをインポートしようとしていて、as(filename,"owin")を使用して境界にポリゴンを入れようとしています。SpatstatでSpatial Clustering AnalysisのためにポリゴンをRにインポートする

Polygon 1 contains duplicated vertices 
Polygon 1 is self-intersecting 
2, 3, 4, 5, 6, 7, 8, 9, 10. 
done. 
Polygon 1 contains duplicated vertices 
Polygon 1 is self-intersecting 
Checking for cross-intersection between 10 polygons...1, 2, 3, 4, 5, 6, 7, 8, 9. 
done. 
Error in owin(poly = opls) : 
    Polygon data contain duplicated vertices and self-intersection 

私はArcGISで修理ジオメトリ機能付きポリゴンをクリーンアップしようとしたが、それは助けにはならなかった:私は、ポリゴンが重複した頂点と自己交差するポリゴンが含まれていることを応答を取得しておきます。私に何ができる?

答えて

2

UPDATE:ゼロ幅のバッファを使用して、自動化された方法でこれらの問題のほとんどを修正できます。自己の責任において使用すると、これが関連するデータの調査なしに行くことが合理的な方法であるかどうかを知る方法がありません。例えば

gIsValid(gBuffer(p4, width = 0, byid = TRUE)) 
[1] TRUE 

オリジナルの答えは次のとおりです。

ENDのUPDATE

あなたが自分でジオメトリを修復、または手動で問題を調査するために、より良いツールが必要な場合があります。 rgeosパッケージを使用して既存の問題を記述し、発生した場所を視覚的に特定してから直接Rで編集したり、GISに戻って実行したりできます。ここでgIsValid機能のヘルプからの簡単な例です:

library(rgeos) 
p4 = readWKT("POLYGON ((0 40, 0 0, 40 40, 40 0, 0 40))") 
gIsValid(p4, reason = TRUE) 
[1] "Self-intersection[20 20]" 

変更より説明警告のためreason戻り値:

gIsValid(p4) 
[1] FALSE 
Warning message: 
In RGEOSUnaryPredFunc(spgeom, byid, "rgeos_isvalid") : 
    Self-intersection at or near point 20 20 

は、だから今のポリゴンをプロットし、問題のある箇所をハイライト:

plot(p4, col = "grey") 
points(20, 20, pch = 3, cex = 3, col = "red") 
axis(1);axis(2);box() 

Self-intersection polygon

あなたはシェープファイルから読んでいるので、あなたは調査を必要とするどのポリゴンをテストするためにbyid引数を使用することができます(この例では、彼らはすべての罰金ですが):

library(maptools) 
xx <- readShapePoly(system.file("shapes/sids.shp", package="maptools")[1], 
    IDvar="FIPSNO", proj4string=CRS("+proj=longlat +ellps=clrk66")) 
gIsValid(xx, byid = TRUE) 
37001 37003 37005 37007 37009 37011 
TRUE TRUE TRUE TRUE TRUE TRUE 
... 

関連する問題