2017-03-01 1 views
0

이전에 this question에게 물어 보았지만 응답을 얻지 못해서 이번에는 더 나은 작업을 시도 할 것입니다!버퍼 및 카운트 포인트 만들기 R

R을 사용하여 주유소 점의 공간 밀도를 분석하고 싶습니다. 주유소 주변에 버퍼 (1,000m)를 작성하고 버퍼 내의 주유소 수를 계산해야합니다. 그런 다음 버퍼 거리를 가지고 놀면서 뭔가 흥미로운 것을 볼 수있는 합리적인 버퍼를 찾아야 할 것입니다. 어떻게 내가 지금

all <- readShapePoints("sbc_gas.shp") 
all.df <- as(all, "data.frame") 
head(all) 

OBJECTID Fuellocati    Name Latitude  Longitude  
     1  34828  WORLD OIL #104 34.44190  -119.8304  
     2  48734 STOP AND SHOP GAS 34.41962  -119.6768  
     3  51276 EL RANCHERO MARKET 34.41911  -119.7162  
     4  52882 EDUCATED CAR WASH 34.44017  -119.7439  
     5  74038   CIRCLE K 34.63925  -120.4406  
     6  103685 7-ELEVEN #23855 34.40506  -119.5296  
나는 다음과 같은 코드로 포인트 주위에 버퍼를 생성 할 수 있었다

:하지만, 그것은 상당히 지저분이기 때문에 전체 모양 파일을 게시하지 않습니다, 그러나 이것은 데이터가 어떻게 생겼는지입니다 버퍼 내의 포인트 수를 세는가?

enter image description here

require(sp) 
require(rdgal) 
require(geosphere) 

coordinates(all) <- c("Longitude", "Latitude") 
pc <- spTransform(all, CRS("+init=epsg:3347")) 
distInMeters <- 1000 
pc100km <- gBuffer(pc, width=100*distInMeters, byid=TRUE) 
# Add data, and write to shapefile 
pc100km <- SpatialPolygonsDataFrame(pc100km, [email protected]) 
writeOGR(pc100km, "pc100km", "pc100km", driver="ESRI Shapefile") 

plot(pc100km) 
나는 이것에 대해 갈 수있는 다른 방법에 열려있어.

+1

당신이에 대한 더 많은 정보를 줄 수 오류 출력이 있습니까? 디버그 모드로 들어가서 변수가 갖고있는 것을 검사 할 수 있습니까? –

+0

질문에 오류 메시지가 추가되었습니다. – JAG2024

+1

처음에는 'distm'이 정의되지 않은 것 같습니다. 대신에'distInMeters'를 넣으려고했다는 뜻입니까? –

답변

1

geosphere를 사용하여 내 자신의 질문에 대한 (단순) 솔루션을 함께했다 : "얻을 수 있습니다 일"

cbind(coordinates(all.df), X=rowSums(distm (coordinates(all.df)[,1:2], fun = distHaversine)/1000 <= 10)) # number of points within distance 10 km 
    Longitude Latitude X 
0 -119.8304 34.44190 25 
1 -119.6768 34.41962 29 
2 -119.7162 34.41911 34 
3 -119.7439 34.44017 39 
4 -120.4406 34.63925 13 
5 -119.5296 34.40506 7 
6 -120.4198 34.93860 26 
7 -119.8221 34.43598 30