私は 2 つの GIS レイヤーを持っており、それらSoils
を呼び出して、 s ( s)Parcels
として保存しており、ここで説明する意味でそれらを「オーバーレイ」したいと考えています。SpatialPolygonsDataFrame
SPDF
オーバーレイ操作の結果は、次のような新しい SPDF になります。
コンポーネントには、2 つのレイヤーの交差によって形成された
SpatialPolygons
ポリゴンが含まれます。(オーバーヘッド プロジェクターに 2 つのマイラーを重ねることによって形成されるすべてのアトミック ポリゴンを考えてみてください)。この
data.frame
コンポーネントは、各アトミック ポリゴンが含まれるSoils
およびポリゴンの属性を記録します。Parcels
私の質問:これを行う既存の R 関数はありますか? SpatialPolygons
(コンポーネントを正しく取得し、2 つのレイヤーの交差から形成されるアトミック ポリゴンを計算する関数を知りたいとさえ思っています。) rgeosには、少なくとも (1) を実行する関数が必要だと思いますが、ないようです...
これは、私が求めているものをより明確にするのに役立つ図であり、その後に、図に示されているレイヤーSoils
とParcels
レイヤーを作成するコードが続きます。
library(rgeos)
## Just a utility function to construct the example layers.
flattenSpatialPolygons <- function(SP) {
nm <- deparse(substitute(SP))
AA <- unlist(lapply(SP@polygons, function(X) X@Polygons))
SpatialPolygons(lapply(seq_along(AA),
function(X) Polygons(AA[X], ID=paste0(nm, X))))
}
## Example Soils layer
Soils <-
local({
A <- readWKT("MULTIPOLYGON(((3 .5,7 1,7 2,3 1.5,3 0.5), (3 1.5,7 2,7 3,3 2.5,3 1.5)))")
AA <- flattenSpatialPolygons(A)
SpatialPolygonsDataFrame(AA,
data.frame(soilType = paste0("Soil_", LETTERS[seq_along(AA)]),
row.names = getSpPPolygonsIDSlots(AA)))
})
## Example Parcels layer
Parcels <-
local({
B <- readWKT("MULTIPOLYGON(((0 0,2 0,2 3,0 3,0 0),(2 0,4 0,4 3,2 3,2 0)),((4 0,6 0,6 3,4 3,4 0)))")
BB <- flattenSpatialPolygons(B)
SpatialPolygonsDataFrame(BB,
data.frame(soilType = paste0("Parcel_", seq_along(BB)),
row.names = getSpPPolygonsIDSlots(BB)))
})