一連の単一境界ポリゴンを使用して土壌ポリゴンのRで真のGISクリップを実行したいのですが、適切に実行するR関数が見つかりません。clip
ESRIのArcMapの関数と同じように機能するはずです。パッケージover
内のメソッドを試しましたが、sp
polys over polysでは機能しないようです。
1つの提案は、次のコードを使用して、gIntersection
in rgeos
パッケージをクリップとして使用することです。
#------------------------------------
library(rgeos)
library(maptools)
#Read layers as SpatialPolygonsDataFrame (both the same Albers projection)
Soils_poly = readShapePoly("Soils_polygons") #Note - Has 400 polygons
clipper_poly = readShapePoly("clipper_polygon") #Note - Has 1 polygon
#Try gintersection as clip
Clipped_polys = gIntersection(Clipper_Tile_poly, Soils_poly)
#-----------------------------------
これには、実行に5分かかり(速度が遅すぎる)、次のエラーが発生します。
RGEOSBinTopoFunc(spgeom1、spgeom2、byid、id、drop_not_poly、 "rgeos_intersection")のエラー:TopologyException:-721459.77681285271 2009506.5980877089で発信dirEdgeが見つかりません
また、重複をチェックするためにこのコードを試しました。
gIntersects(Clipper_Tile_poly, Soils_poly)
そして結果は真でした。clip
ESRI ArcMapの関数は、このデータに対して正常に機能します。
空間ポリゴンを使用して空間ポリゴンで適切にクリップを行うR関数を知っている人はいますか?
byid = TRUEでgIntersectionを試してみてください(特定のクリップのトポロジがぶら下がっているのは問題だと思いますが、この方法で行うと便利な場合があります)。それらのペアを交差させます。この私の知る限りのすべてのための簡単な高レベルのラッパーはありません
—
mdsumner