2

コマンドを使用してポリゴンを R にインポートし、 を使用してreadShapePolyポリゴンを境界線に変換しようとしていas(filename,"owin")ます。ポリゴンに重複した頂点と自己交差ポリゴンが含まれているという応答が得られます。

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 の [ジオメトリの修復] 機能を使用してポリゴンをクリーンアップしようとしましたが、役に立ちませんでした。私に何ができる?

4

1 に答える 1

3

更新: これらの種類の問題のほとんどは、幅がゼロのバッファーを使用して自動化された方法で修正できます。自己責任で使用してください。関連するデータを調査せずに、これが賢明な方法であるかどうかを知る方法はありません。

例えば:

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

元の答えは次のとおりです。

更新を終了

ジオメトリを修復したり、手動で問題を調査したりするために、より優れたツールが必要になる場合があります。この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()

自己交差ポリゴン

シェープファイルから読み取っているため、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
... 

等。

于 2012-05-07T00:01:40.773 に答える