개체 또는 SpatialLinesDataFrame
내의 모든 교차점의 xy 좌표를 얻는 방법을 찾고 있습니다. 나는 rgeos
의 함수 gIntersect
을 찾았지만 두 개의 데이터 세트 사이의 교차점 만 보았습니다. 50 만 개가 넘는 라인의 데이터 세트로 작업하고 있기 때문에 모든 라인을 별도의 파일로 만들고 어떤 라인이 다른 라인과 교차하는지 확인하는 데 너무 많은 시간이 걸립니다. ArcMap에는 몇 초 만에 할 수있는 Intersect 함수가 있으며 R에 그러한 함수가 있는지 궁금합니다. 고마워요! 당신이 spatstat
에서 psp
객체로 개체를 변환하는 경우R : 하나의 SpatialLines (DataFrame) 내에서 모든 선의 교차점에서 모든 xy 좌표 가져 오기
1
A
답변
1
당신은 spatstat
기능 selfcrossing.psp
을 사용할 수 있습니다. 그러나 교차 수가 잠재적으로 엄청날 수 있기 때문에 50 만 라인에 어떻게 대처할 지 확신하지 못합니다. 아래 코드는 무작위 세그먼트 패턴을 생성하고 자체 교차점을 찾습니다.
이 코드는 많은 메모리를 차지하고 R을 죽일 수 있으므로주의하십시오. 따라서 50 만 줄을 처리하기 전에 점진적으로 증가하는 예제를 사용해보십시오. 아래의 코드는 내 5 년 된 랩톱에서 꽤 많은 메모리를 사용하고 5 초가 걸렸습니다.
set.seed(42)
N <- 1e4
x <- psp(runif(N), runif(N), runif(N), runif(N), owin(), check=FALSE)
y <- selfcrossing.psp(x)
감사합니다. Ege. 스크립트를 실행했지만 실제로 처리 능력이 많이 필요하다고 말한 것입니다. 내가 100,000 라인을 시도했을 때 8GB 메모리가 가득 채워서 50 만 개가 작동하지 않습니다. ArcMap과 QGIS가 사용하는 함수는 몇 초 만에 같은 데이터 세트를 실행할 수 있지만 실제로는 R에 통합하고 싶습니다. –
아마도 데이터 세트를 여러 개의 작은 세트로 나눌 수 있습니다. 10,000 줄이있는 50 줄의 패턴과 모든 줄 사이의 교차점을 찾기위한 루프를 만듭니다 (패턴 간 교차를위한'crossing.psp'라는 함수가 있습니다). 그것은 아마도 매우 빠르지 않을 것입니다. 그러나 최소한 충분한 기억을 가지고 R에서 일을 끝내야합니다. –
Btw. ArcMap 또는 QGIS에서 교차점은 얼마나됩니까? –