2014-09-09 4 views
0

R 또는 QGIS 솔루션 찾기 : 위도가 길고 그룹 이름이있는 파일이 있습니다. 나는 a) 그룹에서 시작 지점에서 끝 지점까지의 거리, b) 그룹 내의 좌표 간의 평균 거리, 또는 c) 그 사이의 무언가를 찾고 싶습니다. 보너스는 비용 기능이있는 경우. 나는 r 패키지 gdistance를 고려했다. 그러나 그것은 점 사이의 유일한 거리 인 것처럼 보인다. 그룹 사이의 흐름을 찾고 싶습니다. 또한 postgresql 액세스 권한이 있지만 그 경험이 많지 않으므로 다른 옵션을 선호합니다. 아이디어?R 또는 QGIS 방향 거리

+0

PostGIS 및 earthdistance? –

답변

0

거리를 계산하기 전에 먼저 지리적 좌표에있는 데이터를 투사해야합니다. GME의 pointdistances (Points between Points) 도구는 사용자가 원하는 부분을 처리해야합니다. GME의 출력에 필요한 형식으로 데이터를 얻으려면 몇 가지 추가 단계를 수행해야 할 수 있습니다. 여기에 더 많은 정보가 있습니다 http://www.spatialecology.com/gme/pointdistances.htm

GME는 분석을 위해 r을 사용하는 독립 실행 형 프로그램이므로 별도로 설치해야합니다. 희망이 도움이됩니다.

1

sp을 확인하십시오. 특히 함수 spDists은 경도와 위도의 행렬을 가져 와서 각 점에서 다른 모든 점으로 쌍 거리의 행렬을 반환합니다.

이 유틸리티를 사용하면 한 번에 한 그룹의 위치에서 둘 사이의 거리를 계산하는 함수에 한 번에 피드를 보내는 워크 플로를 만들 수 있습니다. 그런 다음이 행렬 출력을 가져 와서 원하는대로 평균을 계산할 수 있습니다.

다음 재현 가능한 예는 시작하는 방법을 알려줍니다.

require(ggmap) # Used for 'geocode' function. 
require(sp)  # Used for 'spDists' function. 

### spDists spits out distance in KM if longlat argument = T. 
    # Write a function to convert to miles. 
kmToMile <- function(x) x * 0.621371 

### Create a character vector of locations to be geocoded. 
locs <- c("san francisco", "new york city", "los angeles", "miami, florida") 
ll <- lapply(locs, geocode) 
ll <- do.call(rbind, ll) 

###   lon  lat 
### 1 -122.41942 37.77493 
### 2 -74.00594 40.71278 
### 3 -118.24368 34.05223 
### 4 -80.20404 25.78910 

### Feeding in a matrix of points to spDists returns a matrix 
    # of pairwise distance calculations. Use longlat argument to request 
    # kilometers rather than the "metric of the points". 
dist <- spDists(as.matrix(ll), longlat = T) 

### Convert object from kilometers to miles. 
    # Add row and column names, for easier reading. 
dist <- kmToMile(dist) 
rownames(dist) <- locs 
colnames(dist) <- locs 

###    san francisco new york city los angeles miami, florida 
### san francisco   0.0000  2571.930 347.1645  2593.075 
### new york city  2571.9305   0.000 2450.8558  1087.392 
### los angeles   347.1645  2450.856  0.0000  2337.818 
### miami, florida  2593.0752  1087.392 2337.8179   0.000