spatstat
라이브러리의 dirichlet()
함수에 의해 생성 된 Voronoi 테셀레이션 (일명 Dirichlet tessellations 또는 Thiessen 다각형)을 기반으로 다각형 이웃 테이블을 만들려고합니다. 예를 들어 아래 그림에서 오른쪽 위 타일과 오른쪽 아래 타일은 각각 2 개의 이웃과 가운데 오른쪽 타일 4 이웃, 나머지 두 타일은 각각 이웃합니다. 나는 이웃 쌍을 테이블에 담아 공유하고 그들이 공유하는 경계선의 길이를 이상적으로 포착하려고합니다. 예 : 'Tile1', 'Tile2', 'shared_edge_length'.보로 노이 tesslleation에 대한 공유 가장자리의 테이블
처음에, 나는 통해 루프를 시도하고 intersect.tess()
, intersect.own()
뿐만 아니라 polyclip
기능을 사용하여 테셀레이션에서 다각형의 각 쌍을 비교,하지만 난 타일 정의에 중복하지 않음으로써 때문에이 작동하지 않습니다 같은데요 지역, 공유 가장자리에도 불구하고. 이 기능을 수행하는 간단한 기능이 있습니까 ($bdry
점을 반복하는 대안이 될 수 있습니다)? regeos
패키지에 gTouches
이있는 것 같지만 spatstat
과 비슷한 것을 찾을 수 없습니다.
이 내 현재의 비 작동 방법입니다 : 난 그냥 롤프 터너에게 물었다
library(spatstat)
points <- ppp(x=c(-77.308703, -77.256582, -77.290600, -77.135668, -77.097144),
y=c(39.288603, 39.147019, 39.372818, 39.401898, 39.689203),
window=owin(xrange=c(-77.7,-77), yrange=c(39.1, 39.7)))
vt <- dirichlet(points) # Dirichlet tesselation
plot(vt)
tilesA <- tiles(vt)
n_tiles <- length(tilesA)
boundary_calcs <- data.frame('area1_id'=numeric(), 'area2_id'=numeric(), 'neighbor'=logical()) # Store boundary pairs
for (i in 1:n_tiles) {
for (j in 1:n_tiles) {
intersection <- intersect.owin(tilesA[[i]], tilesA[[j]], fatal=FALSE) # does not work
if (!is.empty(intersection)) {
boundary_calcs[nrow(boundary_calcs)+1, ] <- c(i, j, TRUE) # add to data table as new row
} } }
, 나는이 모든 답을 제공하지 않는 것을 알 수있다. 그것은 이웃들의 숫자 일 뿐이며 어떤 쌍이 이웃들인지를 나타내지 않습니다. 다행히도 나중에 다시 돌아갈 시간이 있습니다. (당신은 이웃 쌍들을 찾기 위해'delaunay'를 시도 할 수 있습니다, 그러나 나는 그것이 유용하다는 것을 절대적으로 확신하지 못합니다. 개념적으로 Delaunay 그래프는 볼거리입니다.). 노트에 대해 –
주셔서 감사합니다. 나는 당신의 제안을 탐색 해 왔지만 Delaunay 그래프를 사용하는 방법을 찾지 못했습니다. 'dirichlet '으로 이미 생성 된 타일 쌍을 사용하여 이것을 수행 할 방법이없는가요? – Bryan