2017-09-26 6 views
0

R로 작성된 코드를 사용하여 마을 (또는 shapefile 다각형의 점) 사이의 물의 양을 감지합니다. 나는 2379 개가 넘는 마을 (마을에 숫자가있는 이름)이있는 방향이없는 그래프를 만들어서 28 억 개의 조합을 가져올 것입니다. 그래프는 단지 하나의 데이터 프레임 일뿐입니다. 나는 100m 간격으로 Village2에 Village1, 말에서 지점을 생성하는 기능을 가지고, 모든 조합에 대한모양 파일 다각형의 점을 더 빨리 찾도록하십시오. R

VillageName1, VillageName2 
Village1, Village2 
Village1, Village3 
Village1, Village4 
... 
Village2379, Village2378 

: I는 각 마을의 좌표를 가지고있다. 따라서 Village1과 Village2가 1km 떨어져 있다면 8 점이 생성됩니다. 이 기능은 비교적 빠르게 실행됩니다.

문제는 Village1과 Village2가 두 개의 분리 된 섬에있을 경우 100 미터의 물의 양을 감지 할 수 있도록 세계 해양 shapefile (6.9mb)을 사용하고 있지만 문제가 있습니다 (계산 당 약 4 초) 28 억 번 실행하면 영원히 걸릴 것입니다. ,

sea <- readOGR('World_EEZ_v8_2014.shp') 
ocean_indo_shapefile <- sea[sea$Country == "Indonesia", ] 

#this function creates the points from Village1 to Village2 in 100m intevals, output is a dataframe 
points <- create_coordinates(village1_lat, village1_long, village2_lat, village2_long, 0.1) 

coordinates(points) <- ~ Longitude + Latitude 
proj4string(points) <- proj4string(ocean_indo_shapefile) 
#the calculation below is slow 
water_in_meter <- length(points[ocean_indo_shapefile,]) 

나는 사람이 내가이 훨씬 빨리 만들 수있는 방법에 대한 제안 도울 수 있다면 확실하지 않다 :

나는 그 마을을 기반으로 국가에 Shape 파일 (ocean_indo_shapefile) (인도네시아)를 필터링 시도 어떤 도움을 주셔서 감사합니다. 미리 감사드립니다.

+0

포스트 기어가 될 수 있습니다 –

+0

마지막 줄만 느립니다? 'points'는 데이터 프레임입니까? –

+0

전 PostGIS를 사용한 적이 없으므로이 컨텍스트에서 그렇게하는 방법을 모르겠습니다. – iPho

답변

0

%over% 기능을 sp에서 사용하려고 시도했을 수 있습니다. 상대적으로 신속하게 어떤 물체가 물체에 떨어지는지를 나타낼 수 있어야합니다 (모양 파일이 나타내는 것과 같음). 마을 단위로 통계를 얻으려면 이후에해야 할 일들이 있습니다.

+0

제안 해 주셔서 감사합니다. 7 월에 성능이 향상되었지만 약간 향상되었습니다. – iPho

+0

데이터 샘플을 업로드 할 수있는 경우 몇 가지 방법을 테스트 해 볼 수 있습니다. – Jul